rust - 所有 T、&T、&mut T、[T]、&[T]、*mut T 的通用 impl
问题描述
考虑这段代码:
pub trait Hello {
fn hello(&self);
}
impl Hello for Any {
fn hello(&self) {
println!("Hello!!!!!");
}
}
我记得在某处看到 Rust 中有一个新功能,可以让您实现一个可直接访问所有对象的函数,如下所示:
let foo = 0 as u8;
foo.hello();
不幸的是,我一直没能找到它。实际上是否有一个全球/通用的“实施者”?
解决方案
好吧,您可以对您的特征进行通用实现:
pub trait Hello {
fn hello(&self);
}
impl<T> Hello for T {
fn hello(&self) {
println!("Hello!!!!!");
}
}
fn main() {
let foo = 0 as u8;
foo.hello();
let bar = "world!".to_string();
bar.hello();
}
请注意,Rust 目前不允许对泛型进行专门化(尽管有一个开放的 RFC),因此您的 trait 实现必须对任何 T 都按原样工作。
推荐阅读
- opencv - 为视频扩展图像模型
- ios - 当应用程序在后台没有后台通知时收到有关 APNS 通知的通知
- javascript - 匹配字符串或行尾的正则表达式
- python - 将时间四舍五入到最接近的小时 pandas 系列
- google-sheets - 使用基于日期的 VLOOKUP 在数组公式中求和
- python - 此示例中的列表或字符串类型
- java - 将属性作为值注入 applicationContext.xml (spring boot 2.2)
- maximo - 1:M 工单对象有哪些不同类型?
- css - 如何在单元格和单元格之间绘制边界线?
- azure - 如果模板中未引用现有密钥,则 ARM 模板会重新生成密钥