J'ai remarqué que, étant donné un P<SomeStruct>
, l'accès aux champs de SomeStruct
directement sur le pointeur semble fonctionner, et je ne sais pas pourquoi c'est le cas. Par exemple, le code compile et fonctionne comme prévu (gravures « 1234 »):Pourquoi l'accès à un champ sur un pointeur vers une structure fonctionne-t-il dans la rouille?
#![feature(rustc_private)]
extern crate syntax;
use syntax::ptr::P;
struct Baz {
id: String,
}
fn foo() {
let mut struct_pointer: P<Baz> = P(Baz {
id: "1234".to_string(),
});
println!("{}", struct_pointer.id);
}
Quelle est la caractéristique la langue qui me permet d'accéder à la zone id
sur la struct_pointer
de liaison? Déréférencement? Coercition? Et est-il possible de dire que ce genre de chose fonctionnera en regardant les docs pour P
?
Votre exemple est incomplet et non reproductible. Veuillez inclure vos définitions de 'P' et' Baz'. –
Je suppose que 'P' est une syntaxe :: ptr :: P', et' Baz' une structure aléatoire? Étant donné l'implémentation de 'Deref' pour' P', il faut déréférencer la coercition. En fait, il en va de même pour "" 1234 ".to_string'. – Procrade
@ E_net4, Procrade a raison, je pensais que ce serait assez clair, désolé pour la confusion. J'ai mis à jour l'exemple. –