Hacker News new | past | comments | ask | show | jobs | submit login

You can read up here: http://doc.rust-lang.org/book/generics.html, as well about "output" generics here: https://github.com/rust-lang/rfcs/blob/master/text/0195-asso..., and explore usage in collections here: http://doc.rust-lang.org/nightly/std/collections/.



Are "Traits" basically C++ Concepts?


Somewhere between C++ concepts and Haskell typeclasses with a hint of Java interfaces.

But yes, their primary usage is to require that type parameters exhibit a certain set of properties.


For someone who knows C#, I would explain them as abstract extension methods that can be overriden for specific types.


They fill the same role as concepts - ie. bringing type checking to the call site when using parametrized types, rather than using a duck typed approach, which leads to the big template stack traces that you get in C++.


There are some technical details that make them different, if I recall correctly. But they're kinda similar. They're also close to Haskell's typeclasses.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: