> When writing functions for others to use, you don't want to require them to > have a String, since that requires a heap allocation.
By no means. I'd prefer the same functions to work both on str and String. It should be possible to achieve it via traits. > This is because ToStr is implemented for all Show implementations. You can't > implement ToStr, because if you then implemented Show, you'd have conflicting > implementations. As I already wrote in the previous answer, I didn't have an explicit Show implementation. On Wed, May 28, 2014 at 6:23 PM, Sean McArthur <[email protected]> wrote: > > > > On Wed, May 28, 2014 at 5:38 PM, Oleg Eterevsky <[email protected]> wrote: >> >> 3. It seems like almost any string operation requires as_slice(). >> Can't various string methods be also implemented for String? > > > When writing functions for others to use, you don't want to require them to > have a String, since that requires a heap allocation. It's free to go from > String to a slice, but not vice-versa. That said, there's been whispers of > making String implement Deref, as well passing as arguments to autoderef, so > you could pass a String and rustc would convert to a slice for you. > >> >> 5. Simple indexing doesn't work for vectors: >> let a = vec![1, 2, 3]; >> println!("{}", a[0]); >> It's a bit surprising... > > > Known issue: https://github.com/mozilla/rust/issues/11875 > >> >> >> 6. impl ToStr for custom struct fails: >> error: conflicting implementations for trait `std::to_str::ToStr` >> note: conflicting implementation in crate `std` >> Is it a bug? Is Show implicitly assumed for all struct's? > > > This is because ToStr is implemented for all Show implementations. You can't > implement ToStr, because if you then implemented Show, you'd have > conflicting implementations. #[deriving(Show)] on your structs is probably > all you want. > _______________________________________________ Rust-dev mailing list [email protected] https://mail.mozilla.org/listinfo/rust-dev
