Publication
Partagez vos connaissances.
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
Réponses
1L'avertissement de cycle se produit car votre Exprdéfinition d'énumération crée un type récursif. Box<Expr>Dans Rust, Exprl'utilisation du Box<Expr>type inside the enum provoque une relation récursive car il fait Exprdirectement référence. C'est pourquoi Rust émet un avertissement de cycle.
Même si vous mentionnez les types fantômes, il semble que vous fournissiez toujours un type concret Exprau Boxlieu d'un type générique fantôme qui ne nécessiterait pas d'instance réelle. Supposons que si vous vouliez utiliser un type fantôme, vous utiliseriez un paramètre générique dans l'énumération qui n'a pas besoin d'exister au moment de l'exécution, quelque chose comme Box<PhantomData<T>>if Test un paramètre générique et non Exprlui-même.
Connaissez-vous la réponse ?
Veuillez vous connecter et la partager.