| # 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 |