On May 27, 2014, at 6:05 AM, Benjamin Striegel <ben.strie...@gmail.com> wrote:

> > The use of taking <S: Str> is for taking things like &[S], where you want 
> > to take both &str and String (such as in the other post about getops()).
> 
> I wouldn't be bothered with leaving the API as-is, but I don't understand 
> where this guideline is coming from. Can you elaborate?

I don't know if there's any authoritative source for this, but it's been 
suggested in the past for other APIs. The basic issue is that &[String] cannot 
be freely converted to &[&str]; you need to allocate a new Vec for that. So if 
you have a &[String] and try to call an API that takes a &[&str] then you're 
doing extra work just to satisfy the type system. But the function in question 
doesn't actually need &[&str], it just needs a slice of things it can convert 
to &str. So if it takes <S:Str> &[S] then you can hand it your &[String] 
without conversion, or you can hand it a &[&str], and it will work with both.

This doesn't necessarily mean you need to use <S: Str> &[S] everywhere. But 
it's a nice thing to do if you think about it.

-Kevin
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to