> - Easy to implement the language specification. All features should be easy to understand.
I'm not sure this is at all applicable to rust. Perhaps once there are more than the one, quickly mutating, implementation, we can say that it's easy to implement the specification.
> - Reliability. The language should aid the design and development of reliable programs.
This one feels a touch questionable, given the built-in "succeed or die" macros that simplify code at the cost of reliability. There's also the unsafe keyword, and how the impact of an unsafe operation in one section of code (say, an imported library) can have negative impacts on unrelated sections of code otherwise deemed safe.
> - No unnecessary complexity. Semantic structure should be consistent and minimize the number of concepts.
Borrow checker aside, there is a ton of complexity in Rust (traits, multiple flavors of arrays, multiple flavors of boxed values).
> - Machine independence. The language shall not be bound to any hardware or OS details.
Rust relies on the LLVM project to provide this, and relies on the contributors to the LLVM project to target different architectures.