serde-xml-rs десерализует u8 работает, но не u16
Я пытаюсь десериализовать XML-документ в пользовательский класс ржавчины. Прикрепленный код является самой простой формой моей проблемы. При попытке десериализации числового значения любого типа, кроме u8, указывается ошибка 'main' в панике ' Result::unwrap()
на Err
значение: недопустимый тип: строка "99", ожидаемый u16'или любой другой требуемый тип. serde_xml_rs, кажется, приводит значение строки к правильному числовому значению для u8, но не для других типов. Я делаю что-то неправильно?
#[macro_use]
extern crate serde_derive;
extern crate serde;
extern crate serde_xml_rs;
fn main() {
weird_example();
}
#[derive(Deserialize, Debug)]
struct SampleStruct {
name: String,
num_u8: u8,
num_u16: u16,
}
fn weird_example (){
let deser: SampleStruct = serde_xml_rs::deserialize(r##"
<?xml version="1.0" encoding="utf-8"?>
<sample_struct name="Sample" num_u8="99" num_u16="99">
</sample_struct>
"##.as_bytes()).unwrap();
println!("{:#?}", deser);
}
1 ответ
Этот ящик не очень активен; Это известная ошибка, которая была исправлена, но не опубликована. Вы можете использовать основную ветку напрямую:
serde-xml-rs = { git = "https://github.com/RReverser/serde-xml-rs" }
А также заменить serde_xml_rs::deserialize
от serde_xml_rs::from_reader
,
0.3.0 просто выходи!
Таким образом, вы можете использовать классический:
serde-xml-rs = "0.3"