2015-07-11 78 views
2

有沒有辦法創建默認的功能參數在生鏽?我想這樣做創建默認的功能參數

pub struct Circular<T> { 
    raw: Vec<T>, 
    current: u64 
} 

impl<T> Circular<T> { 
    pub fn new(t_raw: Vec<T>, t_current=0: u64) -> Circular<T> { 
     return Circular { raw: t_raw, current: t_current }; 
    } 

我想有設置的選項current變量,但它並不總是需要進行設置。這是一個可能的事情在Rust嗎?

回答

5

不,Rust不支持默認函數參數。你必須定義不同的方法,或者在結構初始化的情況下(你的例子),你可以使用像這樣的結構更新語法:

use std::default::Default; 

#[derive(Debug)] 
pub struct Sample { 
    a: u32, 
    b: u32, 
    c: u32, 
} 

impl Default for Sample { 
    fn default() -> Self { 
     Sample { a: 2, b: 4, c: 6} 
    } 
} 

fn main() { 
    let s = Sample { c: 23, .. Sample::default() }; 
    println!("{:?}", s); 
} 
+1

如果我的成員是模塊私人?我是否需要創建多個方法,比如'new''和''new_default''?有沒有重載正確的函數?編輯:或者我可以使當前成員強制,而不是兩個函數我猜 –

+1

沒有函數重載,因爲Rust使用函數名稱來派生類型(函數重載需要相反)。 – eulerdisk

+0

另請注意,您可以將'Sample'字段設置爲[Option](https://doc.rust-lang.org/std/option/)類型。 – kopiczko