rust - 如何显式地从某些特征调用函数?

标签 rust

我想知道如何从一个特征调用一个函数,前提是有多个特征具有相同的函数名称。

问题出在第33行或者 tr1::tr(v);

我如何表达我想要调用哪个特质?

struct V2D {
  x: i32,
  y: i32
}

impl V2D {
  fn new(x: i32, y: i32) -> V2D {
    V2D { x, y }
  }
}

trait tr1 {
  fn tr();
}

trait tr2 {
  fn tr();
}

impl tr1 for V2D {
  fn tr() {
    println!("This is tr1");
  }
}

impl tr2 for V2D {
  fn tr() {
    println!("This is tr2");
  }
}

fn main() {
  let v = V2D::new(1,2);
  tr1::tr(v);
}

最佳答案

如果您的方法具有 self 参数 ( Permalink to the playground ),则您使用的语法 (tr1::tr(v)) 是正确的,但如果事实并非如此,您需要在明确指定类型和特征的类型上调用它:

<V2D as tr1>::tr()

( Permalink to the playground )

关于rust - 如何显式地从某些特征调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56612060/

相关文章:

rust - 虽然 let chain 导致 rust-analyzer 提示 Rust 1.66 中的功能不稳定,但这不是最近才合并到稳定版中的吗?

rust - Rust是否具有与C++的decltype()等效的功能来获取表达式的类型?

rust - 根据同一Hashmap中的另一个值插入HashMap中

gtk - 使用 rust-gnome 时如何将自己的数据获取到 GTK 回调?

reference - 如何为 Rust 中的计算图节点重载 Add

rust - 为什么 Valgrind 没有检测到使用 nightly 1.29.0 的 Rust 程序中的内存泄漏?

rust - Rust 生命周期会影响编译程序的语义吗?

rust - 如何将特质对象的Vec变成树形结构?

multithreading - 捕捉 panic !当 Rust 从 C FFI 调用时,没有生成线程

rust - 调用从 Wasmtime 返回字符串的 WASM 函数