Rust 正确处理图形数据

Rust 正确处理图形数据,rust,Rust,有,但它们并没有真正回答我的确切用例 ApplicationState有一个子项和一父项。父级也有一个子级,该子级必须是ApplicationState中的同一个子级应用程序状态应“拥有”子级,并且父级应具有对子级的不可变引用。如何以这种方式正确地构造和注释图形?下面是一个简单的例子: struct应用程序状态{ 孩子:孩子 家长:家长 } 结构子对象{ id:i32 } struct Parent我想得太多了,部分原因是我的用例涉及到几个附加函数。这实际上比我最初想象的要容易得多。由于使用了基

有,但它们并没有真正回答我的确切用例

ApplicationState
有一个子项和一父项。父级也有一个子级,该子级必须是
ApplicationState
中的同一个子级<代码>应用程序状态应“拥有”子级,并且父级应具有对子级的不可变引用。如何以这种方式正确地构造和注释图形?下面是一个简单的例子:

struct应用程序状态{
孩子:孩子
家长:家长
}
结构子对象{
id:i32
}

struct Parent我想得太多了,部分原因是我的用例涉及到几个附加函数。这实际上比我最初想象的要容易得多。由于使用了基于继承的范例,我的部分思维过程是错误的

fn main() {
    let mut state: State = State {
        parent: Parent { x: 1, y: 1 },
        child: Child {
            x: 5,
            y: 1,
            parent: None,
        },
    };
    state.child.parent = Some(&state.parent);
    state.child.getParentX(); // prints "1"
}

struct Parent {
    x: i32,
    y: i32,
}

struct Child<'a> {
    x: i32,
    y: i32,
    parent: Option<&'a Parent>,
}

impl Child<'_> {
    fn getParentX(&self) {
        println!("{:?}", self.parent.unwrap().x);
    }
}

struct State<'a> {
    parent: Parent,
    child: Child<'a>,
}
fn main(){
让mut state:state=state{
父:父{x:1,y:1},
孩子:孩子{
x:5,
y:1,,
家长:没有,
},
};
state.child.parent=Some(&state.parent);
state.child.getParentX();//打印“1”
}
结构父级{
x:i32,
y:i32,
}
结构孩子,
}
植入儿童{
家长:家长,

child:child请尝试让您的代码示例显示您所问的问题。有很多语法错误,您在定义后将
ApplicationState
更改为
AppState
。这似乎是一个足够常见的问题,但事实并非如此。您试图做的是——返回对本地的引用——是funda精神上是不可能的。类似的东西在某些其他语言中似乎起作用的原因通常是因为它们隐式地将东西放在垃圾收集的堆指针后面,或者只是不告诉您这是错误的(我在C++中包含C++,即使允许编写一个移动构造函数来解决问题;编译器肯定允许你不写移动构造函数,你也不会更聪明).Rust允许您以任何一种方式解决它:您可以明确垃圾收集,重写您的数据结构以使用
Arc
Rc
,或者您可以使用原始指针和
不安全的
,如果您真的知道自己在做什么的话。您链接的问题的公认答案涉及这两种可能性;而不是必须说“不要以这种方式构建数据”(尽管我同意这是最好的选择)。