在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();
}
}
}
答案 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
返回一个返回对象的函数。