特征名称后面的特征是什么意思?
What does the trait after the trait name mean?
我在阅读有关 Rust 的文章时遇到了这个特征定义:
trait Enchanter: std::fmt::Debug {
...
}
从这里我了解到特征的名称是Enchanter
,但我不明白std::Format:Debug
部分意味着什么,因为它也是一个特征(我认为)。
这是在声明 supertrait。相当于:
trait Enchanter
where
Self: std::fmt::Debug,
{
}
简而言之,它要求任何想要实现 Enchanter
的类型也实现 std::fmt::Debug
. Otherwise, an error will be raised:
error[E0277]: `S` doesn't implement `Debug`
--> src/lib.rs:4:6
|
4 | impl Enchanter for S {}
| ^^^^^^^^^ `S` cannot be formatted using `{:?}`
|
= help: the trait `Debug` is not implemented for `S`
= note: add `#[derive(Debug)]` to `S` or manually `impl Debug for S`
note: required by a bound in `Enchanter`
--> src/lib.rs:1:18
|
1 | trait Enchanter: std::fmt::Debug {}
| ^^^^^^^^^^^^^^^ required by this bound in `Enchanter`
我在阅读有关 Rust 的文章时遇到了这个特征定义:
trait Enchanter: std::fmt::Debug {
...
}
从这里我了解到特征的名称是Enchanter
,但我不明白std::Format:Debug
部分意味着什么,因为它也是一个特征(我认为)。
这是在声明 supertrait。相当于:
trait Enchanter
where
Self: std::fmt::Debug,
{
}
简而言之,它要求任何想要实现 Enchanter
的类型也实现 std::fmt::Debug
. Otherwise, an error will be raised:
error[E0277]: `S` doesn't implement `Debug`
--> src/lib.rs:4:6
|
4 | impl Enchanter for S {}
| ^^^^^^^^^ `S` cannot be formatted using `{:?}`
|
= help: the trait `Debug` is not implemented for `S`
= note: add `#[derive(Debug)]` to `S` or manually `impl Debug for S`
note: required by a bound in `Enchanter`
--> src/lib.rs:1:18
|
1 | trait Enchanter: std::fmt::Debug {}
| ^^^^^^^^^^^^^^^ required by this bound in `Enchanter`