2015-07-11 81 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