impl Traits可以用作函数参数.这个和具有特征约束的泛型函数之间是否存在差异?
trait Foo {}
fn func1(_: impl Foo) {}
fn func2<T: Foo>(_: T) {}
Run Code Online (Sandbox Code Playgroud) 我想编写一个int-returning函数,它接受一个带零参数的闭包,一个带一个参数的闭包,一个带两个参数的闭包,其中所有闭包参数都是类型int,每个闭包返回f32.
这个函数的签名是什么样的?
现在我想接受通过Fn和FnMut特征.签名是什么样的?是否需要使用箱子中的功能?如果是这样,哪些是为什么?
如果知道:它看起来像糖?脱?
如果知道:未来可能会发生什么变化?
我正在尝试返回具有特征main_func的类型结构的向量TSrObject
struct TestA {
value: u8,
}
pub trait SrObject {
fn myfunc(&mut self);
}
impl SrObject for TestA {
fn myfunc(&mut self) {
unimplemented!();
}
}
impl Default for TestA {
fn default() -> TestA {
TestA { value: 3u8 }
}
}
fn main_func<T: SrObject>(t: T) -> Vec<T> {
let mut v = Vec::<T>::new();
for i in 0..10 {
v.push(T::default());
//v[i].myfunc();
}
return v;
}
Run Code Online (Sandbox Code Playgroud)
它给:
struct TestA {
value: u8,
}
pub trait …Run Code Online (Sandbox Code Playgroud)