blob: 3aa812abe8e4dcc3062469ca249f2eb6d3c83116 [file] [log] [blame] [view]
# Influences
Rust is not a particularly original language, with design elements coming from
a wide range of sources. Some of these are listed below (including elements
that have since been removed):
* SML, OCaml: algebraic data types, pattern matching, type inference,
semicolon statement separation
* C++: references, RAII, smart pointers, move semantics, monomorphization,
memory model
* ML Kit, Cyclone: region based memory management
* Haskell (GHC): typeclasses, type families
* Newsqueak, Alef, Limbo: channels, concurrency
* Erlang: message passing, thread failure, <strike>linked thread failure</strike>,
<strike>lightweight concurrency</strike>
* Swift: optional bindings
* Scheme: hygienic macros
* C#: attributes
* Ruby: closure syntax, <strike>block syntax</strike>
* NIL, Hermes: <strike>typestate</strike>
* [Unicode Annex #31](http://www.unicode.org/reports/tr31/): identifier and
pattern syntax