Problem deserializing a struct that can be serialized
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
调研方向
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 小时
- 30 天内合并 PR
- 9
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
tafia/quick-xml 的其他 Issue
-
Parser accepts an empty element or attribute name可能已有人在做 @ychampion 于 1 天前认领。 未关闭
难度 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 天内回复
相似的 Issue
-
[Bug]: opencode_go chat route drops reasoning_effort (even 'none'), while the same endpoint honors it via custom_llm_provider=openai可能已有人在做 @arvindkumar-ship-it 今天认领。 未关闭llm translation
难度 2/5 1-3 小时 新手友好度 70/100
BerriAI/litellm#51871 · 1 条评论 ·
维护者通常 1 天内回复
-
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 天内回复
-
C-Bug S-Needs-Triage
难度 2/5 1-3 小时 新手友好度 72/100
bevyengine/bevy#26558 ·
维护者通常 2 天内回复