+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

Reply via email to