访问模板静态函数
Accessing template static function
使用 Rust,我正在尝试访问泛型的静态函数。
#![allow(unused)]
struct Bar;
impl Bar{
fn foo(){}
}
struct Qux;
impl Qux{
fn run<T>() {
T::foo();
}
}
fn main() {
Qux::run::<Bar>();
}
然而这不起作用,因为:
T::foo();
| ^^^ function or associated item not found in `T`
执行此操作的惯用方法是什么?
我设置了一个 playground 来简化调试。
它不是模板,它是通用函数。如果您不知道该对象是否具有该方法,则不能对该对象使用该方法。 Rust 在编译时检查所有这些。
生锈的方法是创建一个 trait
和 constrain 类型 trait
:
#![allow(unused)]
trait Foo {
fn foo() {}
}
struct Bar;
impl Foo for Bar {}
struct Qux;
impl Qux {
fn run<T: Foo>() {
T::foo();
}
}
fn main() {
Qux::run::<Bar>();
}
使用 Rust,我正在尝试访问泛型的静态函数。
#![allow(unused)]
struct Bar;
impl Bar{
fn foo(){}
}
struct Qux;
impl Qux{
fn run<T>() {
T::foo();
}
}
fn main() {
Qux::run::<Bar>();
}
然而这不起作用,因为:
T::foo();
| ^^^ function or associated item not found in `T`
执行此操作的惯用方法是什么? 我设置了一个 playground 来简化调试。
它不是模板,它是通用函数。如果您不知道该对象是否具有该方法,则不能对该对象使用该方法。 Rust 在编译时检查所有这些。
生锈的方法是创建一个 trait
和 constrain 类型 trait
:
#![allow(unused)]
trait Foo {
fn foo() {}
}
struct Bar;
impl Foo for Bar {}
struct Qux;
impl Qux {
fn run<T: Foo>() {
T::foo();
}
}
fn main() {
Qux::run::<Bar>();
}