返回类型,而不是实例

时间:2015-10-21 21:54:38

标签: types return rust traits

在Rust中是否有一种方法可以返回一个从函数中实现特定特征的类型(我不想要实例,而是类型)。像这样的东西(它的当前形式不起作用):

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = "0,,,,,,,1,,2,3,,,,5";
            string fstr = "";
           Regex RegExp = new Regex(@"\d,?");
           MatchCollection matches = RegExp.Matches(str);
           foreach (Match match in matches) 
           {
               fstr = fstr + match.ToString();
           }

            Console.Write(fstr);
            Console.Read();
        }
    }
}

1 个答案:

答案 0 :(得分:3)

最接近您要求的是工厂功能:

fn from_name(name: &str) -> Box<Fn(i64) -> Box<MyTrait>> {
    match name {
        "X" => Box::new(|x| Box::new(X{x: x})),
        "Y" => Box::new(|x| Box::new(Y{x: x})),
        _ => panic!("Unknown name"),
    }
}

fn example() -> i64 {
    let factory = from_name("X");
    let z = factory(10);
    z.sum(10)
}

from_name返回一个返回对象的函数。