File tree Expand file tree Collapse file tree 2 files changed +21
-0
lines changed Expand file tree Collapse file tree 2 files changed +21
-0
lines changed Original file line number Diff line number Diff line change @@ -39,6 +39,9 @@ pub fn derive(input: &Input) -> TokenStream {
39
39
. map ( |field| format ! ( "A slice of `{0}` from a [`{1}`](struct.{1}.html)" , field, vec_name) )
40
40
. collect :: < Vec < _ > > ( ) ;
41
41
42
+ let field_attrs = input. field_attrs . iter ( )
43
+ . map ( |attr| & attr. slice ) . collect :: < Vec < _ > > ( ) ;
44
+
42
45
let mut generated = quote ! {
43
46
/// A slice of
44
47
#[ doc = #doc_url]
@@ -51,6 +54,7 @@ pub fn derive(input: &Input) -> TokenStream {
51
54
#visibility struct #slice_name<' a> {
52
55
#(
53
56
#[ doc = #fields_doc]
57
+ #( #[ #field_attrs] ) *
54
58
pub #fields_names: & ' a [ #fields_types] ,
55
59
) *
56
60
}
@@ -272,6 +276,9 @@ pub fn derive_mut(input: &Input) -> TokenStream {
272
276
. map ( |field| format ! ( "A mutable slice of `{0}` from a [`{1}`](struct.{1}.html)" , field, vec_name) )
273
277
. collect :: < Vec < _ > > ( ) ;
274
278
279
+ let field_attrs = input. field_attrs . iter ( )
280
+ . map ( |attr| & attr. slice_mut ) . collect :: < Vec < _ > > ( ) ;
281
+
275
282
let mut generated = quote ! {
276
283
/// A mutable slice of
277
284
#[ doc = #doc_url]
@@ -283,6 +290,7 @@ pub fn derive_mut(input: &Input) -> TokenStream {
283
290
#visibility struct #slice_mut_name<' a> {
284
291
#(
285
292
#[ doc = #fields_doc]
293
+ #( #[ #field_attrs] ) *
286
294
pub #fields_names_1: & ' a mut [ #fields_types] ,
287
295
) *
288
296
}
Original file line number Diff line number Diff line change @@ -30,7 +30,9 @@ fn eq_test() {
30
30
#[ derive( StructOfArray ) ]
31
31
#[ soa_derive( PartialEq , Debug , Serialize , Deserialize ) ]
32
32
pub struct Point {
33
+ #[ soa_attr( Slice , deprecated) ]
33
34
pub x : f32 ,
35
+ #[ soa_attr( SliceMut , deprecated) ]
34
36
pub y : f32 ,
35
37
#[ soa_attr( Vec , serde( skip) ) ]
36
38
pub meta : bool
@@ -51,5 +53,16 @@ fn serde_skip_test() -> Result<(), serde_json::Error> {
51
53
y: vec![ 2.0 , 4.0 ] ,
52
54
meta: vec![ ]
53
55
} ) ;
56
+ {
57
+ let slice = soa. as_slice ( ) ;
58
+ let _ = slice. x [ 0 ] ; // Should have a deprecate warning
59
+ let _ = slice. y [ 0 ] ; // Should not have a deprecate warning
60
+ }
61
+ {
62
+ let slice = soa. as_mut_slice ( ) ;
63
+ let _ = slice. y [ 0 ] ; // Should have a deprecate warning
64
+ let _ = slice. x [ 0 ] ; // Should not have a deprecate warning
65
+
66
+ }
54
67
Ok ( ( ) )
55
68
}
You can’t perform that action at this time.
0 commit comments