Rust教學
Rust下載和安裝
Rust簡介
Rust Hello World
Rust的特點
Rust註釋
Rust開發環境安裝
Rust文檔
Rust第一個程序
Rust格式化打印
Rust調試
Rust顯示
測試用例:列表
Rust格式化
Rust原語
Rust常量和運算符
Rust元組
Rust數組和切片
Rust自定義類型
Rust結構
Rust可視性
Rust枚舉
Rust常量
Rust變量綁定
Rust變量綁定-可變性
Rust變量綁定-範圍和陰影
Rust變量綁定-聲明
Rust類型轉換
Rust類型轉換 - 字面量
Rust類型轉換-推導
Rust類型轉換 - 別名
Rust表達式
Rust if/else語句
Rust循環
Rust嵌套和標籤
Rust while循環
Rust for和範圍
Rust匹配/match
Rust匹配析構元組
Rust解構枚舉
Rust指針和引用
Rust解構結構
Rust Guards
Rust綁定
Rust if let
Rust while let
Rust函數
Rust方法
Rust閉包
Rust捕捉
Rust作爲輸入參數
Rust匿名類型
Rust輸入函數
Rust作爲輸出參數
Rust作爲輸出參數
作爲輸出參數
閉包作爲輸入參數是可能的,所以返回一個也應該是可能的。然而,閉合返回類型是有問題的,因爲Rust目前只支持返回泛型(非通用)類型。匿名閉合類型是,根據定義,未知等返回閉合只能通過使它具體。這可以通過裝箱來完成。
有效類型返回也比以前略有不同:
- Fn: 通常
- FnMut: 通常
- FnBox: 相當於 FnOnce 但專門爲這個應用程序,因爲目前FnOnce(版本1.1.0)嚴重交互類型系統。
除此之外,move 關鍵字必須使用這標誌着捕獲值。這是必需的,因爲通過引用任何捕獲會盡快丟棄,函數退出後在閉合內是無效的引用。
#![feature(fnbox)]
use std::boxed::FnBox;
// Return a closure taking no inputs and returning nothing
// which implements `FnBox` (capture by value).
fn create_fnbox() -> Box
{
let text = "FnBox".to_owned();
Box::new(move || println!("This is a: {}", text))
}
fn create_fn() -> Box
{ let text = "Fn".to\_owned(); Box::new(move || println!("This is a: {}", text)) } fn create\_fnmut() -> Box
{ let text = "FnMut".to\_owned(); Box::new(move || println!("This is a: {}", text)) } fn main() { let fn\_plain = create\_fn(); let mut fn\_mut = create\_fnmut(); let fn\_box = create\_fnbox(); fn\_plain(); fn\_mut(); fn\_box(); }