@@ -188,22 +188,28 @@ pub fn tsk_ragged_column_access<
188188 . map ( |( p, n) | unsafe { std:: slice:: from_raw_parts ( p. cast :: < O > ( ) , n) } )
189189}
190190
191- pub fn generate_slice < ' a , L : Into < bindings:: tsk_size_t > , I , O > (
191+ /// # SAFETY
192+ ///
193+ /// * data must not be NULL
194+ /// * length must be a valid offset from data
195+ /// (ideally it comes from the tskit-c API)
196+ pub unsafe fn generate_slice < ' a , L : Into < bindings:: tsk_size_t > , I , O > (
192197 data : * const I ,
193198 length : L ,
194199) -> & ' a [ O ] {
195- assert ! ( !data. is_null( ) ) ;
196- // SAFETY: pointer is not null, length comes from C API
197- unsafe { std:: slice:: from_raw_parts ( data. cast :: < O > ( ) , length. into ( ) as usize ) }
200+ std:: slice:: from_raw_parts ( data. cast :: < O > ( ) , length. into ( ) as usize )
198201}
199202
200- pub fn generate_slice_mut < ' a , L : Into < bindings:: tsk_size_t > , I , O > (
203+ /// # SAFETY
204+ ///
205+ /// * data must not be NULL
206+ /// * length must be a valid offset from data
207+ /// (ideally it comes from the tskit-c API)
208+ pub unsafe fn generate_slice_mut < ' a , L : Into < bindings:: tsk_size_t > , I , O > (
201209 data : * mut I ,
202210 length : L ,
203211) -> & ' a mut [ O ] {
204- assert ! ( !data. is_null( ) ) ;
205- // SAFETY: pointer is not null, length comes from C API
206- unsafe { std:: slice:: from_raw_parts_mut ( data. cast :: < O > ( ) , length. into ( ) as usize ) }
212+ std:: slice:: from_raw_parts_mut ( data. cast :: < O > ( ) , length. into ( ) as usize )
207213}
208214
209215pub fn get_tskit_error_message ( code : i32 ) -> String {
0 commit comments