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