Problem deserializing a struct that can be serialized
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
Start with the issue’s minimal Rust example and its failing deserialization tests, especially the Source enum and the source field’s serde(rename = "Source") attribute. Check quick-xml’s deserialization behavior for repeated XML elements and enum values; done means the shown XML deserializes to the expected Sources values while the serialization test still passes.
索引モデルが issue の本文から書いたものです。
説明
I have a Problem de serializing the following xml
<Sources>
<Source>A</Source>
<Source>B</Source>
</Sources>
This is my current attempt
/*
[dependencies]
serde = { version = "1.0", features = ["derive"] }
quick-xml = {version="0.31", features = ["serialize"]}
*/
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, PartialEq)]
struct Sources {
#[serde(rename = "Source")]
source: Vec<Source>,
}
#[derive(Serialize, Deserialize, Debug, PartialEq)]
enum Source {
A,
B,
}
#[cfg(test)]
mod tests {
use quick_xml::de::from_str;
use super::*;
#[test]
fn test_serialize_sources() {
let sources = Sources {
source: vec![Source::A, Source::B],
};
let xml = r#"<Sources><Source>A</Source><Source>B</Source></Sources>"#;
let serialized = to_string(&sources).expect("Failed to serialize sources"); // Use the to_string function from quick_xml
assert_eq!(serialized, xml);
}
#[test]
fn test_deserialize_sources(){
let xml = r#"<Sources><Source>A</Source><Source>B</Source></Sources>"#;
let sources = Sources{ source: vec![Source::A, Source::B]};
let deserialize = from_str::<Sources>(&xml).expect("Failed to deserialize sources");
assert_eq!(deserialize, sources);
}
#[test]
fn test_deserialize_source(){
let xml = r#"<Sources><Source>B</Source></Sources>"#;
let sources = Sources{ source: vec![Source::B]};
let deserialize = from_str::<Sources>(&xml).expect("Failed to deserialize sources");
assert_eq!(deserialize, sources);
}
}
which fails with the following error
running 3 tests
test tests::test_deserialize_sources ... FAILED
test tests::test_serialize_sources ... ok
test tests::test_deserialize_source ... FAILED
failures:
---- tests::test_deserialize_sources stdout ----
thread 'tests::test_deserialize_sources' panicked at src/main.rs:45:53:
Failed to deserialize sources: Custom("unknown variant `Source`, expected `A` or `B`")
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
---- tests::test_deserialize_source stdout ----
thread 'tests::test_deserialize_source' panicked at src/main.rs:54:53:
Failed to deserialize sources: Custom("unknown variant `Source`, expected `A` or `B`")
failures:
tests::test_deserialize_source
tests::test_deserialize_sources
test result: FAILED. 1 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
error: test failed, to rerun pass `--bin example_issue_quick_xml`
❯
- 主要言語
- Rust
- スター
- 1.6k
- フォーク
- 299
- 平均マージ
- 2日 4時間
- マージ済み PR(30日)
- 9
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
tafia/quick-xml のほかの issue
-
Parser accepts an empty element or attribute name対応中かも @ychampion が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
DecodingReader::set_encoding panics when the XML declaration is longer than 64 bytes対応中かも @emschwartz が 4 日前に担当しました。 オープンbug encoding
難易度 4/5 3〜5日 初心者へのやさしさ 30/100
tafia/quick-xml#1040 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
encoding optimization
難易度 4/5 3〜5日 初心者へのやさしさ 55/100
tafia/quick-xml#1039 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
optimization question
難易度 4/5 3〜5日 初心者へのやさしさ 52/100
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 4/5 1〜2日 初心者へのやさしさ 53/100
tafia/quick-xml#1035 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
tafia/quick-xml の issue をすべて見る
似ている issue
-
comp-formats
難易度 2/5 半日 初心者へのやさしさ 64/100
ClickHouse/ClickHouse#131694 ·
メンテナーはふだん 1 日以内に返信
-
cli: `execCargoMetadata` decodes stdout per chunk, corrupting non-ASCII paths across pipe boundariesオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
Copperpour/Copperpour#500 ·
メンテナーはふだん 1 日以内に返信
-
state:triage-needed
難易度 1/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信