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主導開發的通用、編譯型程式語言。設計準則為“安全、併發、實用”,支援函式式、並行式、程式式以及物件導向的程式設計風格。