用泛型实现rust返回类型自动推导

来源:互联网 发布:垃圾桶 知乎 编辑:程序博客网 时间:2024/06/06 19:12

rust用泛型可以根据后续的类型提示自动选择返回值类型

#[derive(Debug)]struct Foo(i32);#[derive(Debug)]struct FooBar(i32,i32);trait New{    fn new(i:i32)->Self;}impl New for Foo{    fn new(i:i32)->Foo{        Foo(i)    }}impl New for FooBar{    fn new(i:i32)->FooBar{        FooBar(i,i+10)    }}struct Bar;impl Bar{    fn bar<T:New>(&self,i:i32)->T{        T::new(i)    }}fn bar2<T:New>(i:i32)->T{    T::new(i)}fn main() {    let b = Bar;    //b.bar(1)返回的类型根据f1的类型提示自动选择    let f1:Foo = b.bar(1);    println!("{:?}",f1);    let fb:FooBar = b.bar(2);    println!("{:?}",fb);    let f2:Foo = bar2(10);    println!("{:?}",f2);    let fb2:FooBar = b.bar(20);    println!("{:?}",fb2);}

Play上可以运行:http://is.gd/0MhxhU
运行结果:

Foo(1)FooBar(2, 12)Foo(10)FooBar(20, 30)
0 0
原创粉丝点击