跳至主要内容

Rust 函式(Function)

  • 這邊指的是可以單獨存在的一級公民 function。有別於 struct 結構體 下的方法(method)。
  • Function 命名規則 snake case : 小寫,以底線區隔單詞。
  • 關鍵字 fn, return

語法

  • 關鍵字
    • fn 用來進行函式宣告
    • return 用來提示回傳值
    • 預設做末行 expression 為隱式回傳值 (注意: 末端沒有分號)
  • Parameter
    • Signature 必須宣告型別。(Rust 是強型別語言)
    • 若是可變型別 需加上 mut 關鍵字
    • 若是指標型別 需再加上 & 關鍵字
  • 回傳值以
    • -> 符號宣告
    • 完整回傳表達式為 return + 回傳內容 + 分號
    • 回傳值預設為函式本體最後一行的表達式(註:不可加分號,不須加 return)
    • 預設回傳不可加分號,也可以省略 return 關鍵字。
  • 註: Python 函式同樣末行為預設回傳,預設值為 None。

Rust Function Syntax

fn function_name(param1: type, param2: mut type2 ) -> return_type {
do_something("SYNTAX");
return value;
}

fn change_description(desc: &mut String) -> bool{
....
}

陳述式(Statements)與表達式(Expressions)

  • 陳述式(Statements):
  • 表達式(Expressions): 有回傳值。多行表達式可以用大括號包覆,並以最末行為回傳值
    • 注意: expression 行尾沒有分號 ;

簡單範例

Rust Example

fn main() {
let total = sum(6,4);
let total2 = sum2(6,4);
let total3 = sum3(6,4);

println!("{}", total);
println!("{}", total2);
println!("{}", total3);
}


fn sum(a: i32 , b: i32) -> i32{
let c = a + b;
return c; // 完整的回傳 statement
}

fn sum2(a: i32 , b: i32) -> i32{
let c = a + b;
return c // 省略分號的回傳 expression
}

fn sum3(a: i32 , b: i32) -> i32{
let c = a + b;
c // Rust 預設回傳末行 expression
}