11use std:: {
22 collections:: HashMap ,
33 ffi:: { CStr , CString } ,
4- slice,
54} ;
65
76use crate :: { rcl_bindings:: * , Node , RclrsError , ToResult } ;
@@ -182,8 +181,8 @@ impl Node {
182181 // namespaces are populated with valid data
183182 let ( names_slice, namespaces_slice) = unsafe {
184183 (
185- slice :: from_raw_parts ( rcl_names. data , rcl_names. size ) ,
186- slice :: from_raw_parts ( rcl_namespaces. data , rcl_namespaces. size ) ,
184+ rcl_from_raw_parts ( rcl_names. data , rcl_names. size ) ,
185+ rcl_from_raw_parts ( rcl_namespaces. data , rcl_namespaces. size ) ,
187186 )
188187 } ;
189188
@@ -230,9 +229,9 @@ impl Node {
230229 // SAFETY: The previous function successfully returned, so the arrays are valid
231230 let ( names_slice, namespaces_slice, enclaves_slice) = unsafe {
232231 (
233- slice :: from_raw_parts ( rcl_names. data , rcl_names. size ) ,
234- slice :: from_raw_parts ( rcl_namespaces. data , rcl_namespaces. size ) ,
235- slice :: from_raw_parts ( rcl_enclaves. data , rcl_enclaves. size ) ,
232+ rcl_from_raw_parts ( rcl_names. data , rcl_names. size ) ,
233+ rcl_from_raw_parts ( rcl_namespaces. data , rcl_namespaces. size ) ,
234+ rcl_from_raw_parts ( rcl_enclaves. data , rcl_enclaves. size ) ,
236235 )
237236 } ;
238237
@@ -379,10 +378,9 @@ impl Node {
379378 . ok ( ) ?;
380379 }
381380
382- // SAFETY: The previous call returned successfully, so the slice is valid
383- let topic_endpoint_infos_slice = unsafe {
384- slice:: from_raw_parts ( rcl_publishers_info. info_array , rcl_publishers_info. size )
385- } ;
381+ // SAFETY: The previous call returned successfully, so the data is valid
382+ let topic_endpoint_infos_slice =
383+ unsafe { rcl_from_raw_parts ( rcl_publishers_info. info_array , rcl_publishers_info. size ) } ;
386384
387385 // SAFETY: Because the rcl call returned successfully, each element of the slice points
388386 // to a valid topic_endpoint_info object, which contains valid C strings
@@ -422,7 +420,7 @@ fn convert_names_and_types(
422420
423421 // SAFETY: Safe if the rcl_names_and_types arg has been initialized by the caller
424422 let name_slice = unsafe {
425- slice :: from_raw_parts (
423+ rcl_from_raw_parts (
426424 rcl_names_and_types. names . data ,
427425 rcl_names_and_types. names . size ,
428426 )
@@ -438,7 +436,7 @@ fn convert_names_and_types(
438436 // SAFETY: Safe as long as rcl_names_and_types was populated by the caller
439437 let types: Vec < String > = unsafe {
440438 let p = rcl_names_and_types. types . add ( idx) ;
441- slice :: from_raw_parts ( ( * p) . data , ( * p) . size )
439+ rcl_from_raw_parts ( ( * p) . data , ( * p) . size )
442440 . iter ( )
443441 . map ( |s| {
444442 let cstr = CStr :: from_ptr ( * s) ;
0 commit comments