为基本类型(float)实现特征
Implement trait for base type (float)
我想和戒指一起工作,所以我有一个特质 RingOps
,我希望 float
成为其中的一部分。我认为 float
实现了每个超类型,因此派生会很棒,但如果没有,该怎么做?
trait RingOps: Add<Output=Self> + Mul<Output=Self> + Eq + Debug
where Self: std::marker::Sized {}
impl RingOps for float {}
这是错误
error[E0412]: cannot find type `float` in this scope
--> src/main.rs:8:18
|
8 | impl RingOps for float {}
| ^^^^^ not found in this scope
error[E0277]: the trait bound `{float}: RingOps` is not satisfied
--> src/main.rs:44:32
|
13 | Input(&'a str, T),
| ----------------- required by `Circuit::Input`
...
44 | Box::new(Circuit::Input("a", 2.0)),
| ^^^ the trait `RingOps` is not implemented for `{float}`
Rust 中没有 float
类型,您必须分别为 f32
和 f64
实现它。一个例子:
use std::fmt::Display;
trait Trait: Display {
fn print(&self) {
println!("i am {}", self);
}
}
impl Trait for f32 {}
impl Trait for f64 {}
fn main() {
1.5_f32.print(); // prints "i am 1.5"
1.5_f64.print(); // prints "i am 1.5"
}
我想和戒指一起工作,所以我有一个特质 RingOps
,我希望 float
成为其中的一部分。我认为 float
实现了每个超类型,因此派生会很棒,但如果没有,该怎么做?
trait RingOps: Add<Output=Self> + Mul<Output=Self> + Eq + Debug
where Self: std::marker::Sized {}
impl RingOps for float {}
这是错误
error[E0412]: cannot find type `float` in this scope
--> src/main.rs:8:18
|
8 | impl RingOps for float {}
| ^^^^^ not found in this scope
error[E0277]: the trait bound `{float}: RingOps` is not satisfied
--> src/main.rs:44:32
|
13 | Input(&'a str, T),
| ----------------- required by `Circuit::Input`
...
44 | Box::new(Circuit::Input("a", 2.0)),
| ^^^ the trait `RingOps` is not implemented for `{float}`
Rust 中没有 float
类型,您必须分别为 f32
和 f64
实现它。一个例子:
use std::fmt::Display;
trait Trait: Display {
fn print(&self) {
println!("i am {}", self);
}
}
impl Trait for f32 {}
impl Trait for f64 {}
fn main() {
1.5_f32.print(); // prints "i am 1.5"
1.5_f64.print(); // prints "i am 1.5"
}