@@ -785,6 +785,8 @@ extern crate core;
785
785
786
786
extern crate memoffset;
787
787
788
+ #[ cfg( feature="derive" ) ]
789
+ extern crate savefile_derive;
788
790
789
791
/// This object represents an error in deserializing or serializing
790
792
/// an item.
@@ -1526,17 +1528,17 @@ impl<'a, W:Write+'a> Serializer<'a, W> {
1526
1528
pub unsafe fn raw_write_region < T , T1 : ReprC , T2 : ReprC > ( & mut self , full : & T , t1 : & T1 , t2 : & T2 , version : u32 ) -> Result < ( ) , SavefileError > {
1527
1529
assert ! ( T1 :: repr_c_optimization_safe( version) . is_yes( ) ) ;
1528
1530
assert ! ( T2 :: repr_c_optimization_safe( version) . is_yes( ) ) ;
1529
- unsafe {
1530
1531
1531
- let base = full as * const T as * const u8 ;
1532
- let totlen = std:: mem:: size_of :: < T > ( ) ;
1533
- let p1 = ( t1 as * const T1 as * const u8 ) as usize ;
1534
- let p2 = ( t2 as * const T2 as * const u8 ) as usize ;
1535
- let start = p1 - ( base as usize ) ;
1536
- let end = ( p2 - ( base as usize ) ) + std:: mem:: size_of :: < T2 > ( ) ;
1537
- let full_slice = std:: slice:: from_raw_parts ( base, totlen) ;
1538
- Ok ( self . writer . write_all ( & full_slice[ start..end] ) ?)
1539
- }
1532
+
1533
+ let base = full as * const T as * const u8 ;
1534
+ let totlen = std:: mem:: size_of :: < T > ( ) ;
1535
+ let p1 = ( t1 as * const T1 as * const u8 ) as usize ;
1536
+ let p2 = ( t2 as * const T2 as * const u8 ) as usize ;
1537
+ let start = p1 - ( base as usize ) ;
1538
+ let end = ( p2 - ( base as usize ) ) + std:: mem:: size_of :: < T2 > ( ) ;
1539
+ let full_slice = std:: slice:: from_raw_parts ( base, totlen) ;
1540
+ Ok ( self . writer . write_all ( & full_slice[ start..end] ) ?)
1541
+
1540
1542
}
1541
1543
/// Creata a new serializer.
1542
1544
/// Don't use this function directly, use the [crate::save] function instead.
@@ -3774,7 +3776,7 @@ impl Serialize for bit_vec::BitVec<u32> {
3774
3776
serializer. write_usize ( l) ?;
3775
3777
let storage = self . storage ( ) ;
3776
3778
let rawbytes_ptr = storage. as_ptr ( ) as * const u8 ;
3777
- let rawbytes : & [ u8 ] = unsafe { slice:: from_raw_parts ( rawbytes_ptr, 4 * storage. len ( ) ) } ;
3779
+ let rawbytes : & [ u8 ] = unsafe { std :: slice:: from_raw_parts ( rawbytes_ptr, 4 * storage. len ( ) ) } ;
3778
3780
serializer. write_usize ( rawbytes. len ( ) |( 1 <<63 ) ) ?;
3779
3781
serializer. write_bytes ( & rawbytes) ?;
3780
3782
Ok ( ( ) )
@@ -3799,7 +3801,7 @@ impl Deserialize for bit_vec::BitVec<u32> {
3799
3801
let storage = ret. storage_mut ( ) ;
3800
3802
storage. resize ( num_words, 0 ) ;
3801
3803
let storage_ptr = storage. as_ptr ( ) as * mut u8 ;
3802
- let storage_bytes: & mut [ u8 ] = slice:: from_raw_parts_mut ( storage_ptr, 4 * num_words) ;
3804
+ let storage_bytes: & mut [ u8 ] = std :: slice:: from_raw_parts_mut ( storage_ptr, 4 * num_words) ;
3803
3805
deserializer. read_bytes_to_buf ( storage_bytes) ?;
3804
3806
ret. set_len ( numbits) ;
3805
3807
}
@@ -4160,7 +4162,7 @@ fn regular_deserialize_vec<T: Deserialize>(deserializer: &mut Deserializer<impl
4160
4162
impl < T : Deserialize + ReprC > Deserialize for Vec < T > {
4161
4163
fn deserialize ( deserializer : & mut Deserializer < impl Read > ) -> Result < Self , SavefileError > {
4162
4164
if unsafe { T :: repr_c_optimization_safe ( deserializer. file_version ) } . is_false ( ) {
4163
- Ok ( regular_deserialize_vec :: < T > ( deserializer) ?)
4165
+ Ok ( regular_deserialize_vec ( deserializer) ?)
4164
4166
} else {
4165
4167
use std:: mem;
4166
4168
@@ -4228,13 +4230,13 @@ impl<T: WithSchema> WithSchema for VecDeque<T> {
4228
4230
impl < T > ReprC for VecDeque < T > { }
4229
4231
impl < T : Serialize > Serialize for VecDeque < T > {
4230
4232
fn serialize ( & self , serializer : & mut Serializer < impl Write > ) -> Result < ( ) , SavefileError > {
4231
- regular_serialize_vecdeque :: < T > ( self , serializer)
4233
+ regular_serialize_vecdeque ( self , serializer)
4232
4234
}
4233
4235
}
4234
4236
4235
4237
impl < T : Deserialize > Deserialize for VecDeque < T > {
4236
4238
fn deserialize ( deserializer : & mut Deserializer < impl Read > ) -> Result < Self , SavefileError > {
4237
- Ok ( regular_deserialize_vecdeque :: < T > ( deserializer) ?)
4239
+ Ok ( regular_deserialize_vecdeque ( deserializer) ?)
4238
4240
}
4239
4241
}
4240
4242
@@ -4628,26 +4630,16 @@ impl<V: Introspect + 'static, const C: usize> Introspect for arrayvec::ArrayVec<
4628
4630
}
4629
4631
}
4630
4632
4631
- #[ cfg( all( feature = "nightly" , feature="arrayvec" ) ) ]
4632
- impl < V , const C : usize > ReprC for arrayvec:: ArrayVec < V , C > { }
4633
-
4634
-
4635
- #[ cfg( all( feature = "nightly" , feature="arrayvec" ) ) ]
4636
- impl < V : Serialize , const C : usize > Serialize for arrayvec:: ArrayVec < V , C > {
4637
- default fn serialize ( & self , serializer : & mut Serializer < impl Write > ) -> Result < ( ) , SavefileError > {
4638
- regular_serialize_vec ( self , serializer)
4633
+ #[ cfg( feature="arrayvec" ) ]
4634
+ impl < V : ReprC , const C : usize > ReprC for arrayvec:: ArrayVec < V , C > {
4635
+ unsafe fn repr_c_optimization_safe ( version : u32 ) -> IsReprC {
4636
+ V :: repr_c_optimization_safe ( version)
4639
4637
}
4640
4638
}
4641
4639
4642
- #[ cfg( all( not( feature = "nightly" ) , feature="arrayvec" ) ) ]
4643
- impl < V : Serialize , const C : usize > Serialize for arrayvec:: ArrayVec < V , C > {
4644
- fn serialize ( & self , serializer : & mut Serializer < impl Write > ) -> Result < ( ) , SavefileError > {
4645
- regular_serialize_vec ( self , serializer)
4646
- }
4647
- }
4648
4640
4649
- #[ cfg( all ( feature = "nightly" , feature= " arrayvec") ) ]
4650
- impl < V : Serialize + ReprC + Copy , const C : usize > Serialize for arrayvec:: ArrayVec < V , C > {
4641
+ #[ cfg( feature= " arrayvec") ]
4642
+ impl < V : Serialize + ReprC , const C : usize > Serialize for arrayvec:: ArrayVec < V , C > {
4651
4643
fn serialize ( & self , serializer : & mut Serializer < impl Write > ) -> Result < ( ) , SavefileError > {
4652
4644
unsafe {
4653
4645
if V :: repr_c_optimization_safe ( serializer. version ) . is_false ( ) {
@@ -4663,31 +4655,8 @@ impl<V: Serialize + ReprC + Copy, const C:usize> Serialize for arrayvec::ArrayVe
4663
4655
}
4664
4656
}
4665
4657
}
4666
- #[ cfg( all( feature = "nightly" , feature="arrayvec" ) ) ]
4667
- impl < V : Deserialize , const C : usize > Deserialize for arrayvec:: ArrayVec < V , C > {
4668
- default fn deserialize ( deserializer : & mut Deserializer < impl Read > ) -> Result < arrayvec:: ArrayVec < V , C > , SavefileError > {
4669
- let mut ret = arrayvec:: ArrayVec :: new ( ) ;
4670
- let l = deserializer. read_usize ( ) ?;
4671
- for _ in 0 ..l {
4672
- ret. push ( V :: deserialize ( deserializer) ?) ;
4673
- }
4674
- Ok ( ret)
4675
- }
4676
- }
4677
4658
4678
- #[ cfg( all( not( feature = "nightly" ) , feature="arrayvec" ) ) ]
4679
- impl < V : Deserialize , const C : usize > Deserialize for arrayvec:: ArrayVec < V , C > {
4680
- fn deserialize ( deserializer : & mut Deserializer < impl Read > ) -> Result < arrayvec:: ArrayVec < V , C > , SavefileError > {
4681
- let mut ret = arrayvec:: ArrayVec :: new ( ) ;
4682
- let l = deserializer. read_usize ( ) ?;
4683
- for _ in 0 ..l {
4684
- ret. push ( V :: deserialize ( deserializer) ?) ;
4685
- }
4686
- Ok ( ret)
4687
- }
4688
- }
4689
-
4690
- #[ cfg( all( feature = "nightly" , feature="arrayvec" ) ) ]
4659
+ #[ cfg( feature="arrayvec" ) ]
4691
4660
impl < V : Deserialize + ReprC , const C : usize > Deserialize for arrayvec:: ArrayVec < V , C > {
4692
4661
fn deserialize ( deserializer : & mut Deserializer < impl Read > ) -> Result < arrayvec:: ArrayVec < V , C > , SavefileError > {
4693
4662
let mut ret = arrayvec:: ArrayVec :: new ( ) ;
@@ -4775,7 +4744,6 @@ use std::fmt::{Debug, Display, Formatter};
4775
4744
use std:: marker:: PhantomData ;
4776
4745
use std:: path:: { PathBuf , Path } ;
4777
4746
use std:: ptr:: NonNull ;
4778
- use std:: slice;
4779
4747
use std:: sync:: Arc ;
4780
4748
4781
4749
0 commit comments