Я хочу отобразить все дочерние методы структуры на родительские с уменьшением некоторых параметров.
Вот пример: -
PlayGround: - https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=0610b6abd57ab3d65435c821829e156b
struct World;
struct Sibling;
struct Parent {
pub child: Child,
pub sibling: Sibling
}
impl Parent {
pub fn new()->Parent {
Parent {
sibling: Sibling,
child: Child,
}
}
}
struct Child;
impl Child {
pub fn set_x(&mut self, _world: &mut World, _sibling: &mut Sibling, _x: f32 ){
// ..
}
pub fn set_y(&mut self, _world: &mut World, _sibling: &mut Sibling, _y: f32){
// ..
}
// 32 methods that taking World as first parameter and Sibling as second parameter
}
fn main(){
let mut world = World;
let mut parent = Parent::new();
parent.child.set_x(&mut world,&mut parent.sibling,0.23);
parent.child.set_y(&mut world,&mut parent.sibling, 0.12);
// Expectation:-
// parent.set_x(&mut world,0.23)
// parent.set_y(&mut world, 1.23)
}
Родитель знает, кто брат, кто ребенок. Нет необходимости в руководстве из глобальной области. Мне нужно спрятать ребенка и родного брата от внешнего пространства. И я попробовал следующим образом.
impl Parent {
pub fn set_x(&mut self, world: &mut World, x: f32){
self.child.set_x(world, &mut self.sibling, x);
}
// ...
}
Но у меня есть 32 метода. Это не ясный путь.