Rust's Features
-
compiled w/ the
rustc
compiler, which is self-hosted (written in Rust) -
a strong, static typing discipline, similar in feel to Haskell 98 but different
-
imperative or functional style, a bit like Scala and Swift. You can mix'n'match your functional and imperative code - but EVERYTHING IS IN IO. (Opinion): this is not bad.
-
eager evaluation of expressions.
-
type variables or generics
-
traits (which are a bit like interfaces or type classes, less like classes but you get the point)
-
a new, novel concept called a "borrow checker", which obviates garbage collection (more on this later, because it is a big deal). It makes memory management rather slick and easy.
-
macros! The macro system provides compile-time metaprogramming much like TemplateHaskell, but unlike the Haskell community, the Rust community seems very inclined to use macros whenever they feel like it (I personally like this)
Rust's Non-features
-
No higher-kinded types ... (Opinion): this means there are no practical implementations of category theory concepts like Category, Arrow, Functor, Monoid, Monad, etc. This is a good thing, mostly.
-
No classical inheritance (and no prototypal inheritance, for that matter). This is good.