@@ -114,66 +114,44 @@ impl Versionize for String {
114114 1
115115 }
116116}
117+
118+ impl < T , const N : usize > Versionize for [ T ; N ]
119+ where
120+ T : Copy + Default + Versionize ,
121+ {
122+ #[ inline]
123+ fn serialize < W : std:: io:: Write > (
124+ & self ,
125+ writer : & mut W ,
126+ version_map : & VersionMap ,
127+ app_version : u16 ,
128+ ) -> VersionizeResult < ( ) > {
129+ for element in self {
130+ element. serialize ( writer, version_map, app_version) ?;
131+ }
117132
118- macro_rules! impl_versionize_array_with_size {
119- ( $ty: literal) => {
120- impl <T > Versionize for [ T ; $ty]
121- where
122- T : Copy + Default + Versionize ,
123- {
124- #[ inline]
125- fn serialize<W : std:: io:: Write >(
126- & self ,
127- writer: & mut W ,
128- version_map: & VersionMap ,
129- app_version: u16 ,
130- ) -> VersionizeResult <( ) > {
131- for element in self {
132- element. serialize( writer, version_map, app_version) ?;
133- }
134-
135- Ok ( ( ) )
136- }
137-
138- #[ inline]
139- fn deserialize<R : std:: io:: Read >(
140- reader: & mut R ,
141- version_map: & VersionMap ,
142- app_version: u16 ,
143- ) -> VersionizeResult <Self > {
144- let mut array = [ T :: default ( ) ; $ty] ;
145- for i in 0 ..$ty {
146- array[ i] = T :: deserialize( reader, version_map, app_version) ?;
147- }
148- Ok ( array)
149- }
133+ Ok ( ( ) )
134+ }
150135
151- // Not used yet.
152- fn version( ) -> u16 {
153- 1
154- }
136+ #[ inline]
137+ fn deserialize < R : std:: io:: Read > (
138+ reader : & mut R ,
139+ version_map : & VersionMap ,
140+ app_version : u16 ,
141+ ) -> VersionizeResult < Self > {
142+ let mut array = [ T :: default ( ) ; N ] ;
143+ for i in 0 ..N {
144+ array[ i] = T :: deserialize ( reader, version_map, app_version) ?;
155145 }
156- } ;
157- }
146+ Ok ( array )
147+ }
158148
159- // Conventionally, traits are available for primitive arrays only up to size 32
160- // until the const generics feature is implemented.
161- // [https://doc.rust-lang.org/std/primitive.array.html]
162- // [https://github.com/rust-lang/rust/issues/44580]
163- macro_rules! impl_versionize_arrays {
164- ( $( $N: literal) +) => {
165- $(
166- impl_versionize_array_with_size!( $N) ;
167- ) +
149+ // Not used yet.
150+ fn version ( ) -> u16 {
151+ 1
168152 }
169153}
170154
171- impl_versionize_arrays ! {
172- 1 2 3 4 5 6 7 8 9 10
173- 11 12 13 14 15 16 17 18 19 20
174- 21 22 23 24 25 26 27 28 29 30
175- 31 32
176- }
177155
178156impl < T > Versionize for Box < T >
179157where
0 commit comments