Rust: comment deserialiser avec serde un vec de struct assez simples

comment implementer un deserializer

a marqué ce sujet comme résolu.

Salut, voici ma structure

#[derive(Debug, PartialEq, Serialize, Deserialize)]
struct Record {
    score_value: u32,
    player_name: String, //  does not implement `Copy`
    timestamp_fake: u32,
}

des "instances":

let yesterdayscore = Record { score_value: 1500, player_name: "yesterdayscore".to_string(), timestamp_fake: 7000 };
let myscore = Record { score_value: 800, player_name: "myscore".to_string(), timestamp_fake: 8000 };
let friendscore = Record { score_value: 800, player_name: "friendscore".to_string(), timestamp_fake: 9000 };

et mon vecteur qui les contient:

let mut allscores :Vec<&Record> = Vec::new();
allscores.push(&yesterdayscore);
allscores.push(&myscore);
allscores.push(&friendscore);

ça sérialize mais ça ne deserialize pas ; pas besoin de lifetime dans mon cas.

let serialized = serde_json::to_string(&allscores).unwrap();
println!("serialized = {}", serialized);
let deserialized: std::vec::Vec<&Record> = serde_json::from_str(&serialized).unwrap();

ça m’étonne que rust ne pige pas la manoeuvre de lui même, python n’aurait pas bronché.L’ensemble est plutôt simple, pas de type venu du fin fond du cosmos… Comment écrire le déserializer et dois-je en plus faire un serializer ?

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte