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, linked thread failure, lightweight concurrency

  • Swift: optional bindings

  • Scheme: hygienic macros

  • C#: attributes

  • Ruby: closure syntax, block syntax

  • NIL, Hermes: typestate

  • Unicode Annex #31: identifier and pattern syntax