Допис
Діліться своїми знаннями.
Why does Rust enum with Box create cycle warning even with phantom?
I'm working with Rust and I have the following code:
public enum Expr {
Apply(Box<Expr>, Box<Expr>),
}
It seems like I'm getting a cycle warning because Expr
contains Box<Expr>
. However, I'm using phantom types, and I thought that would make it safe to compile. Can someone explain why this cycle warning is happening despite using phantom types?
- Move CLI
- Move
Відповіді
1Попередження про цикл виникає через те, що Expr
визначення enum створює рекурсивний тип. Box<Expr>
У Rust використання Expr
всередині Box<Expr>
типу enum спричиняє рекурсивний зв'язок, оскільки Expr
безпосередньо посилання. Ось чому Rust дає попередження про цикл.
Незважаючи на те, що ви згадуєте фантомні типи, здається, що ви все ще надаєте конкретний тип Expr``Box
замість фантомного загального типу, який не вимагав би реального екземпляра. Подумайте, якщо ви хотіли використовувати фантомний тип, ви б використовували загальний параметр у enum, який не повинен існувати під час виконання, щось на кшталт Box<PhantomData<T>>
if є T
загальним параметром, а не Expr
сам собою.
Ви знаєте відповідь?
Будь ласка, увійдіть та поділіться нею.
Move is an executable bytecode language used to implement custom transactions and smart contracts.
Зароби свою частку з 1000 Sui
Заробляй бали репутації та отримуй винагороди за допомогу в розвитку спільноти Sui.

- MiniBob... SUI+31
1
- 0xduckmove... SUI+27
2
- HaGiang... SUI+26
3
- ... SUIharry phan+21
- ... SUIMarlKey+20
- ... SUI
- ... SUIVens.sui+15
- ... SUICarlkawIy+12
- ... SUI
- ... SUICaplec+10