Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Apply Option difference to `None` target doesn't work as expected

Aperta
#28 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Ferma
Stack tecnologico
rust
Ambito
tooling

Direzione di ricerca

Inizia eseguendo la riproduzione in Rust dell’issue, che usa serde_diff::Diff e Apply con un target Option inizializzato a None. Traccia come viene applicata la differenza serializzata da Some(5) a Some(10) quando il target è None. È completato quando il target è uguale a TestStruct { a: Some(10) } dopo che Apply::apply è stato eseguito correttamente.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Example to reproduce the issue
use serde::{Deserialize, Serialize};
use serde_diff::{Apply, Diff, SerdeDiff};

#[derive(SerdeDiff, Serialize, Deserialize, PartialEq, Debug, Clone)]
struct TestStruct {
    a: Option<i32>,
}

fn main() {
    let old = TestStruct { a: Some(5) };
    let new = TestStruct { a: Some(10) };
    let mut target = TestStruct { a: None };
    let expected = new.clone();

    let diff = Diff::serializable(&old, &new);
    let json_diff = serde_json::to_string(&diff).unwrap();
    let mut deserializer = serde_json::Deserializer::from_str(&json_diff);

    Apply::apply(&mut deserializer, &mut target).unwrap();

    assert_eq!(target, expected);
}
Expected result

For target to equal TestStruct { a: Some(10) }

Actual result

Target equals TestStruct { a: None }

Lingua principale
Rust
Stelle
127
Fork
22
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di amethyst/serde-diff

Tutte le issue di amethyst/serde-diff

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.