非泛型结构能否在rust中实现泛型函数,其工作原理如下:
let boxNode1 = SCNNode(geometry: cubeGeometry1)
boxNode1.position = SCNVector3(X,Y,Z)
否则,假设S实现通用特征Tt:
struct S;
impl <T> S {
fn do_something(value : T) {
//do something
}
}
fn main() {
let a = /*a value*/;
S::do_something(a);
}
有什么办法可以使它起作用?
答案 0 :(得分:1)
如果impl
块在类型本身中使用,则只能声明它的类型变量。
但是,您也可以在各个方法上引入新的类型变量:
impl S {
fn do_something<T>(value: T) {
//do something
}
}
这对于作为闭包的参数尤为常见,因为每个闭包都有不同的类型,因此这对于每次都可以使用不同的闭包调用该方法是必要的。例如,Iterator::map
的定义如下:
fn map<B, F>(self, f: F) -> Map<Self, F>
where
F: FnMut(Self::Item) -> B,
如果为类型而不是方法声明了F
,则每次调用map
时都必须使用相同的闭包-不太有用。