gpt4 book ai didi

rust - 如何在没有结构实例的情况下调用特征方法?

转载 作者:行者123 更新时间:2023-11-29 08:08:58 24 4
gpt4 key购买 nike

如果我有一个结构,其方法没有 self 作为参数,我可以通过 SomeStruct::method() 调用该方法。我似乎无法对从特征定义的方法做同样的事情。例如:

trait SomeTrait {
fn one_trait() -> uint;
}

struct SomeStruct;
impl SomeStruct {
fn one_notrait() -> uint {
1u
}
}
impl SomeTrait for SomeStruct {
fn one_trait() -> uint {
1u
}
}

#[test]
fn testing() {
SomeStruct::one_trait(); // doesn't compile
SomeStruct::one_notrait(); // compiles
}

编译器给出错误“未解析的名称‘SomeStruct::one_trait.’”

如何直接调用结构的特征方法实现?

最佳答案

trait Animal {
fn baby_name() -> String;
}

struct Dog;

impl Dog {
fn baby_name() -> String {
String::from("Spot")
}
}

impl Animal for Dog {
fn baby_name() -> String {
String::from("puppy")
}
}

fn main() {
println!("A baby dog is called a {}", <Dog as Animal>::baby_name());
}

来自 Advanced Trait

关于rust - 如何在没有结构实例的情况下调用特征方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25355139/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com