У меня есть дерево, и я хочу, чтобы каждый узел дерева имел указатель на своего родителя.
struct DataDeclaration {
parent: Option<Arc<DataDeclaration>>,
children: Option<Vec<Weak<DataDeclaration>>>,
properties: HashMap<Identifier, DataDeclarationProperty>,
}
Это создает цикл, поэтому я использую Weak
, чтобы убедиться, что память не 'не жить бесконечно.Это дерево будет неизменным на всю длину моего приложения, кроме, конечно, когда дерево построено.
Чтобы создать это дерево, нужно ли использовать Mutex
или RwLock
изстандартная библиотека или parking_lot
?Будет ли отрицательное влияние на производительность, если я использую блокировку только для чтения?