своего типа, который будет стоять в выражении справа, а не слева?
Например, я определил тип вектора struct Vec2D { x: f32, y: f32 }
Я хочу реализовать умножение этого вектора на число. Довольно легко сделать имплементацию для умножения vec * 42.0, достаточно лишь описать impl Mul<f32> for Vec2D {...}. А что если я хочу также иметь возможность писать и 42.0 * vec? Очевидно, что пришлось бы описать что-то вроде impl Mul<Vec2D> for f32 {...} но так нельзя из-за orphan rule. Есть выход?
Выхода нет
Через свой типаж не выйдет?
а ты точно попробовал?
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=1e96d40f362d59970e1678a9804c12fa
Обсуждают сегодня