@@ -167,8 +167,8 @@ mod fixed_name {
167
167
use pretty_assertions:: assert_eq;
168
168
169
169
#[ derive( Debug , PartialEq , Deserialize ) ]
170
- struct List {
171
- item : [ ( ) ; 3 ] ,
170
+ struct List < T = ( ) > {
171
+ item : [ T ; 3 ] ,
172
172
}
173
173
174
174
/// Simple case: count of elements matches expected size of sequence,
@@ -796,6 +796,31 @@ mod fixed_name {
796
796
) ;
797
797
}
798
798
799
+ #[ test]
800
+ fn list_of_list ( ) {
801
+ let data: List < Vec < String > > = from_str (
802
+ r#"
803
+ <root>
804
+ <item>first item</item>
805
+ <item>second item</item>
806
+ <item>third item</item>
807
+ </root>
808
+ "# ,
809
+ )
810
+ . unwrap ( ) ;
811
+
812
+ assert_eq ! (
813
+ data,
814
+ List {
815
+ item: [
816
+ vec![ "first" . to_string( ) , "item" . to_string( ) ] ,
817
+ vec![ "second" . to_string( ) , "item" . to_string( ) ] ,
818
+ vec![ "third" . to_string( ) , "item" . to_string( ) ] ,
819
+ ] ,
820
+ }
821
+ ) ;
822
+ }
823
+
799
824
/// Checks that sequences represented by elements can contain sequences,
800
825
/// represented by [`xs:list`s](https://www.w3schools.com/xml/el_list.asp)
801
826
mod xs_list {
@@ -1889,9 +1914,9 @@ mod variable_name {
1889
1914
use pretty_assertions:: assert_eq;
1890
1915
1891
1916
#[ derive( Debug , PartialEq , Deserialize ) ]
1892
- struct List {
1917
+ struct List < T = Choice > {
1893
1918
#[ serde( rename = "$value" ) ]
1894
- item : [ Choice ; 3 ] ,
1919
+ item : [ T ; 3 ] ,
1895
1920
}
1896
1921
1897
1922
/// Simple case: count of elements matches expected size of sequence,
@@ -2890,6 +2915,37 @@ mod variable_name {
2890
2915
. unwrap_err ( ) ;
2891
2916
}
2892
2917
2918
+ /// Test for https://github.com/tafia/quick-xml/issues/567
2919
+ #[ test]
2920
+ fn list_of_enum ( ) {
2921
+ #[ derive( Debug , PartialEq , Deserialize ) ]
2922
+ enum Enum {
2923
+ Variant ( Vec < String > ) ,
2924
+ }
2925
+
2926
+ let data: List < Enum > = from_str (
2927
+ r#"
2928
+ <root>
2929
+ <Variant>first item</Variant>
2930
+ <Variant>second item</Variant>
2931
+ <Variant>third item</Variant>
2932
+ </root>
2933
+ "# ,
2934
+ )
2935
+ . unwrap ( ) ;
2936
+
2937
+ assert_eq ! (
2938
+ data,
2939
+ List {
2940
+ item: [
2941
+ Enum :: Variant ( vec![ "first" . to_string( ) , "item" . to_string( ) ] ) ,
2942
+ Enum :: Variant ( vec![ "second" . to_string( ) , "item" . to_string( ) ] ) ,
2943
+ Enum :: Variant ( vec![ "third" . to_string( ) , "item" . to_string( ) ] ) ,
2944
+ ] ,
2945
+ }
2946
+ ) ;
2947
+ }
2948
+
2893
2949
/// Checks that sequences represented by elements can contain sequences,
2894
2950
/// represented by `xs:list`s
2895
2951
mod xs_list {
0 commit comments