Evan Carroll
Evan Carroll

Reputation: 1

structopt: error[E0277]: the trait bound `String: From<&OsStr>`

I'm using Rust's structopt crate, but when I try to compile examples I'm getting the following error,

error[E0277]: the trait bound `String: From<&OsStr>` is not satisfied
   --> bin/seq.rs:21:36
    |
21  |     #[structopt(short, long, parse(from_os_str))]
    |                                    ^^^^^^^^^^^ the trait `From<&OsStr>` is not implemented for `String`
    |
    = help: the following implementations were found:
              <String as From<&String>>
              <String as From<&mut str>>
              <String as From<&str>>
              <String as From<Box<str>>>
            and 2 others
note: required by `from`

Upvotes: -3

Views: 303

Answers (1)

Evan Carroll
Evan Carroll

Reputation: 1

You can convert a String into a OsString with an infallible conversion, but you can not convert a OsString into a String.

This is because an OsStr accepts things that are not valid Strings so there is no way to ensure an OsStr that structopt parses into can be converted to a String.

You likely don't need to parse() at all,

#[structopt(short, long)]

Not

#[structopt(short, long, parse(from_os_str))]

Upvotes: 0

Related Questions