I think getopts has an old API. All the methods that take &[String] should 
probably be rewritten to be generic with <S: Str> and take &[S] instead, which 
will allow taking either a slice of Strings or a slice of &str's.

-Kevin

On May 26, 2014, at 12:16 PM, Benjamin Striegel <[email protected]> wrote:

> I'm not familiar with the getopts module, but on the surface that behavior 
> sounds wrong to me.
> 
> As for the verbosity of the repeated `to_owned` calls, this sounds like the 
> perfect application for macros:
> 
>     #![feature(macro_rules)]
>     
>     macro_rules! owned(
>         ($($e:expr),*) => ([$($e.to_owned()),*])
>     )
>     
>     fn main() {
>         let x = owned!["b", "c", "d"];
>     }
> 
> 
> On Mon, May 26, 2014 at 2:11 PM, Gulshan Singh <[email protected]> wrote:
> Why does getopts::Matches::opts_present() take an array of heap allocated 
> strings? Unless I'm missing something, it doesn't seem like it needs to: 
> https://github.com/mozilla/rust/blob/7d76d0ad44e1ec203d235f22eb3514247b8cbfe5/src/libgetopts/lib.rs#L302
> 
> Currently, my code to use it looks like this:
> 
> if matches.opts_present(["b".to_owned(), "x".to_owned(), "s".to_owned(), 
> "w".to_owned()]) { /* */ }
> 
> 1. Should the function be converted to take a list of borrowed strings?
> 2. Regardless of what this function should take as an argument, is the way 
> I'm constructing a list of StrBufs the correct way to do it? It seems a bit 
> verbose.
> 
> _______________________________________________
> Rust-dev mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/rust-dev
> 
> 
> _______________________________________________
> Rust-dev mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/rust-dev

_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to