История изменений
Исправление tailgunner, (текущая версия) :
Тут же вроде бы используется жёсткая привязка по типу результата. Меня интересует, можно ли изменить именно это (с системой traits в целом знаком, она ок)
Так?
trait ConvertTo<X: ?Sized> {
fn to(self: &Self) -> X;
}
impl ConvertTo<String> for i32 {
fn to(self: &i32) -> String { self.to_string() }
}
impl ConvertTo<f32> for i32 {
fn to(self: &i32) -> f32 { 0f32 }
}
fn main() {
let x: String = (123i32).to();
println!("{}", x);
let x: f32 = (123i32).to();
println!("{}", x);
}
Исходная версия tailgunner, :
Тут же вроде бы используется жёсткая привязка по типу результата. Меня интересует, можно ли изменить именно это (с системой traits в целом знаком, она ок)
Так?
trait ConvertTo<X: ?Sized> {
fn to(self: &Self) -> X;
}
impl ConvertTo<String> for i32 {
fn to(self: &i32) -> String { self.to_string() }
}
impl ConvertTo<f32> for i32 {
fn to(self: &i32) -> f32 { 0f32 }
}
fn main() {
let x: String = (123i32).to();
println!("{}", x);
let x: f32 = (123i32).to();
println!("{}", x);
}