It is a really big barrier to adoption because it's very hard to find out what functionality is or is not offered. Here's an example: I want to iterate over a set. Easy, right?
No.
http://static.rust-lang.org/doc/master/std/collections/hash_...
Look at the signature for Cycle. It's really hard to know what this does even though it's trivial:
fn cycle(self) -> Cycle<Self> where Self: Clone
When you click through to the real documentation, it describes a useful use case for this. But that's not how programmers think. They think "I need to do X right now so I'll find something that looks right" not "I'm going to click through the documentation... oh X looks interesting I'll remember that later". There's no way to infer what Cycle really does without having actually clicked through or used it.