I have the following:
pub enum MyNum ... ;
pub trait ToMyNumT {
fn to_my_num(&self) -> MyNum;
}
Now, I want to overload std::ops::Add where we can std::ops::Add<X> for Y
for any X: ToMyNumT, Y: ToMyNumT
-- is this possible?
I have the following:
pub enum MyNum ... ;
pub trait ToMyNumT {
fn to_my_num(&self) -> MyNum;
}
Now, I want to overload std::ops::Add where we can std::ops::Add<X> for Y
for any X: ToMyNumT, Y: ToMyNumT
-- is this possible?
No, you can't make a blanket impl for a trait you didn't make
To see why this is not allowed, suppose two unrelated crates added such impls, and some type met both constraints, which would the compiler use?
Even more directly, if i32
implements ToMyNumT
, then yours with X = Y = i32
conflicts with the existing Add<i32> for i32
.
This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.