- Systems programming language (safety & control)
- Stack (default) vs. heap allocated vars
- Statically typed, although the type inference is pretty sweet
- Statement and expression based langguage
- Features structs, enums and traits
- Static (favored) & dynamic method dispatch
- Has generics & type bounds
- Small language, well documentated stdlib
- Code organization: creates & modules
- Cargo is the project build & dep mgmt tool
- crates.io is where third-party libs live
- Functional (expressions)
- Pattern matching
- Closures
- HOFs
- Immutable vals by default
- Imperative (statements)
- Automatic memory mgmt w/o a garbage collector (mem is freed for u)
- No use-after-free or undefined behavior problems
- Aliasing + mutation is not allowed (N &T or exactly 1 &mut T)
- Ownership & borrowing model (static, compile time analysis)
- The compiler enforces the data
moves
(ownership is retured back up the stack)
- Type inference
- Destructuring via let & match
- No nil concept. The Result<T, E> & Option types are used for error handling
- No exceptions - panic!s are used as a last result (following the let it crash approach)
- Lisp-style macros (println!, vec!)
- No data races b/c the same ownership/borrowing mechanism is used
- Channels (ownership is 1st transferred to the channel itself)
- The Rust Programming Language (Google Talk)
- Steve Klabnik on Why Rust
- The Rust book
- See it work: Rust by example
- Whet your appetive with a pet project or two
- The Rust blog
- #rust on irc.mozilla.org
- @rustlang on Twitter
- This Week in Rust (weekly newsletter)