3 ms·
None of the things you mentioned, other than the slice type, which i don’t see how it would work on raw memory, are a language feature.
by dreta 10y ago
None of the things you mentioned, other than the slice type, which i don’t see how it would work on raw memory, are a language feature.
- dbaupp 10y agoAs I said, a slice can point to any memory, it doesn't matter where it came from: i.e. your allocator/things using it can expose slices instead of just plain pointers. Generics and privacy are definitely language features, and they're core to the ease with which one can create abstractions. Rust is a systems language, it tries to give programmers the power to create their own safe abstractions as needed.
- dreta 10y agoI wasn't talking about that. What i meant was, if i have to implement it myself, that's not a point in favor of Rust. Though the slice does help with rudimentary bounds checking, so that's a start, though i don't see how that differs from a generic accessor method or an overloaded operator.
- dbaupp 10y agoA programming language can't anticipate every possible thing someone might want to do (or else every program would be one line: doMyThing()), the best it can do is provide tools for building the final product. Rust is pushing hard on making it easy for people to build safe, zero-cost abstractions that are reusable, via generics and especially cargo, so you often don't have to implement things yourself (or: don't have to implement things yourself twice), even if it isn't literally in the language. > though i don't see how that differs from a generic accessor method or an overloaded operator Err, it does all the bounds checking automatically? I thought you wanted these features without having to implement them yourself, but apparently writing accessor methods or an overloaded operator is OK too?!?
- pcwalton 10y agoWhy would it be safer to implement Vec as a "language feature" as opposed to implementing it in the library? We actually used to implement Vec as a language feature, and it was a lot of work to write things like growth in raw LLVM IR (which is a miserable programming language) instead of just using a real programming language—Rust—to do it.
- dreta 10y agoNever said any of this.