+1 2014年3月24日 上午5:46于 "Patrick Walton" <pcwal...@mozilla.com>写道:
> On 3/23/14 2:19 PM, Ziad Hatahet wrote: > >> You wouldn't probably use this for each and every method, but what it >> gives you is Go-style duck typing. >> >> Sure you can define a trait, but what if the struct you to pass to your >> function does not implement it? I guess you would have to implement a >> wrapper around it manually then. >> > > I don't think Go-style duck typing turns out to be that useful in practice > to solve this problem, because the chances that two independently-developed > libraries that wanted to expose some functionality on their object, say, > `Munge()`, would give the function exactly the same name and give exactly > the same types to its arguments, (in the same order!) is astronomically > small. > > In reality the primary benefit of Go-style duck typing is the ability to > avoid having to type the name of the trait you're implementing at the > implementation site. What you give up for this is the ability to provide > extension methods: i.e. implementation of a trait for a type *outside* of > the package that defined the type. This is a huge downside, and I don't > think it's worth it on the whole; this is why Rust's traits are designed > the way they are. > > Patrick > > _______________________________________________ > Rust-dev mailing list > Rust-dev@mozilla.org > https://mail.mozilla.org/listinfo/rust-dev >
_______________________________________________ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev