32 lines
603 B
Rust
32 lines
603 B
Rust
#![feature(const_trait_impl)]
|
|
|
|
pub struct Int(i32);
|
|
|
|
impl const std::ops::Add for i32 {
|
|
//~^ ERROR only traits defined in the current crate can be implemented for primitive types
|
|
type Output = Self;
|
|
|
|
fn add(self, rhs: Self) -> Self {
|
|
self + rhs
|
|
}
|
|
}
|
|
|
|
impl std::ops::Add for Int {
|
|
type Output = Self;
|
|
|
|
fn add(self, rhs: Self) -> Self {
|
|
Int(self.0 + rhs.0)
|
|
}
|
|
}
|
|
|
|
impl const std::ops::Add for Int {
|
|
//~^ ERROR conflicting implementations of trait
|
|
type Output = Self;
|
|
|
|
fn add(self, rhs: Self) -> Self {
|
|
Int(self.0 + rhs.0)
|
|
}
|
|
}
|
|
|
|
fn main() {}
|