Can you summarize the following document?
        
  Rust的设计目标之一,是要使设计大型的因特网客户端和服务器的任务变得更容易。因此更加强调安全性、内存配置、以及并行处理等方面的特性。

  在效能上,具有额外安全保证的代码会比慢一些,例如对Rust的数组进行操作时默认会检查索引是否越界,而C++则不会,但是如果以也手工提供保证的情况下,则两者效能上是相似的。

  Rust的语法设计,与C语言和C++相当相似,区块(block)使用大括号隔开,流程控制的关键字如codice_1、codice_2、codice_3等等。在保持相似性的同时,Rust也加进了新的关键字,如用于模式匹配(pattern matching)的codice_4(与codice_5相似)则是使用C/C++系统程序语言的人会相对陌生的概念。尽管在语法上相似,Rust的语义(semantic)和(C/C++)非常不同。

  为了提供内存安全,它的设计不允许空指标和悬空指标 资料只能透过固定的初始化形态来建构,而所有这些形态都要求它们的输入已经分析过了。Rust有一个检查指标生命期间和指标冻结的系统,可以用来预防在C++中许多的型别错误,甚至是用了智慧指标功能之后会发生的型别错误。

  早期的Rust虽然有垃圾回收系统,但非如Java或.NET平台的全自动垃圾回收。Rust 1.0已不再使用垃圾回收器,而是全面改用基于引用计数的智能指针来管理内存。

  它的型别系统直接地模仿了Haskell语言的type class概念,并把它称作「traits」,可以把它看成是一种ad hoc多型。Rust的作法是透过在宣告型别变量(type variable)的时候,在上面加上限制条件。至于Haskell的高阶型别变量(Higher-kinded polymorphism)则还未支援。  型别推导也是Rust提供的特性之一,使用codice_6语法宣告的变量可以不用宣告型别,亦不需要初始值来推断型别。但如果在稍后的程序中从未指派任何值到该变量,编译器会发出编译时(compile time)错误。 函数可以使用泛型化参数(generics),但是必须绑定Trait。没有任何方法可以使用方法或运算子,又不宣告它们的型别,每一项都必确明确定义。  Rust的物件系统是基于三样东西之上的,即实作(implementation)、Trait以及结构化资料(如struct)。实作的角色类似提供Class关键字的程序语言所代表的意义,并使用codice_7关键字。继承和多型则透过Trait实现,它们使得方法(method)可以在实作中被定义。结构化资料用来定义字段。实作和(trait)都无法定义字段,并且只有(trait)可以提供继承,借以躲避C++的「钻石继承问题」(菱型缺陷)。

  2006年,Rust作为Graydon Hoare的个人项目首次出现。  2009年,Graydon Hoare成为Mozilla雇员。  2010年,Rust首次作为Mozilla官方项目出现。同年,Rust开始从初始编译(由OCaml写成)转变为自编译。  2011年,Rust成功的完成了移植。Rust的自编译器采用LLVM作为其编译后端。  2012年1月20日,第一个有版本号的预览版Rust编译器发布。  2013年4月4日,Mozilla基金会宣布将与三星集团合作开发浏览器排版引擎Servo,此引擎将由Rust来实作。  2015年5月16日,Rust 1.0.0发布。

  下面的代码在Rust 1.3中测试通过。

  fn main() {

  下面是三个不同版本的阶乘函数,分别以递归、循环和迭代器的方法写成: // 这个函数的if-else语句中展示了Rust中可选的隐式返回值,可用于写出更像函数式编程风格的代码 // 与C++和其他类似的语言不同,Rust中的if-else结构不是语句而是表达式,有返回值 fn recursive_factorial(n: u32) -> u32 {  fn iterative_factorial(n: u32) -> u32 {  fn iterator_factorial(n: u32) -> u32 {  fn main() {

  一个简单的Rust并发示例: use std::thread;  // 这个函数将创建十个同时并发运行的线程 // 若要验证这一点,可多次运行这个程序,观察各线程输出顺序的随机性 fn main() {
Rust是由Mozilla主导开发的通用、编译型编程语言。设计准则为“安全、并发、实用”,支持函数式、并行式、程序式以及面向对象的编程风格。