11pub use crate :: wrapper:: ErlNifMapIterator ;
22use crate :: wrapper:: { ErlNifMapIteratorEntry , NIF_ENV , NIF_TERM } ;
3- use std:: mem;
3+ use std:: mem:: MaybeUninit ;
44
55pub unsafe fn get_map_value ( env : NIF_ENV , map : NIF_TERM , key : NIF_TERM ) -> Option < NIF_TERM > {
6- let mut result: NIF_TERM = mem :: uninitialized ( ) ;
7- let success = rustler_sys:: enif_get_map_value ( env, map, key, & mut result) ;
6+ let mut result = MaybeUninit :: uninit ( ) ;
7+ let success = rustler_sys:: enif_get_map_value ( env, map, key, result. as_mut_ptr ( ) ) ;
88
99 if success != 1 {
1010 return None ;
1111 }
12- Some ( result)
12+ Some ( result. assume_init ( ) )
1313}
1414
1515pub unsafe fn get_map_size ( env : NIF_ENV , map : NIF_TERM ) -> Option < usize > {
16- let mut size: rustler_sys :: size_t = mem :: uninitialized ( ) ;
17- let success = rustler_sys:: enif_get_map_size ( env, map, & mut size) ;
16+ let mut size = MaybeUninit :: uninit ( ) ;
17+ let success = rustler_sys:: enif_get_map_size ( env, map, size. as_mut_ptr ( ) ) ;
1818
1919 if success != 1 {
2020 return None ;
2121 }
22- Some ( size)
22+ Some ( size. assume_init ( ) )
2323}
2424
2525pub unsafe fn map_new ( env : NIF_ENV ) -> NIF_TERM {
@@ -32,23 +32,23 @@ pub unsafe fn map_put(
3232 key : NIF_TERM ,
3333 value : NIF_TERM ,
3434) -> Option < NIF_TERM > {
35- let mut result: NIF_TERM = mem :: uninitialized ( ) ;
36- let success = rustler_sys:: enif_make_map_put ( env, map, key, value, & mut result) ;
35+ let mut result = MaybeUninit :: uninit ( ) ;
36+ let success = rustler_sys:: enif_make_map_put ( env, map, key, value, result. as_mut_ptr ( ) ) ;
3737
3838 if success != 1 {
3939 return None ;
4040 }
41- Some ( result)
41+ Some ( result. assume_init ( ) )
4242}
4343
4444pub unsafe fn map_remove ( env : NIF_ENV , map : NIF_TERM , key : NIF_TERM ) -> Option < NIF_TERM > {
45- let mut result: NIF_TERM = mem :: uninitialized ( ) ;
46- let success = rustler_sys:: enif_make_map_remove ( env, map, key, & mut result) ;
45+ let mut result = MaybeUninit :: uninit ( ) ;
46+ let success = rustler_sys:: enif_make_map_remove ( env, map, key, result. as_mut_ptr ( ) ) ;
4747
4848 if success != 1 {
4949 return None ;
5050 }
51- Some ( result)
51+ Some ( result. assume_init ( ) )
5252}
5353
5454pub unsafe fn map_update (
@@ -57,27 +57,27 @@ pub unsafe fn map_update(
5757 key : NIF_TERM ,
5858 new_value : NIF_TERM ,
5959) -> Option < NIF_TERM > {
60- let mut result: NIF_TERM = mem :: uninitialized ( ) ;
61- let success = rustler_sys:: enif_make_map_update ( env, map, key, new_value, & mut result) ;
60+ let mut result = MaybeUninit :: uninit ( ) ;
61+ let success = rustler_sys:: enif_make_map_update ( env, map, key, new_value, result. as_mut_ptr ( ) ) ;
6262
6363 if success != 1 {
6464 return None ;
6565 }
66- Some ( result)
66+ Some ( result. assume_init ( ) )
6767}
6868
6969pub unsafe fn map_iterator_create ( env : NIF_ENV , map : NIF_TERM ) -> Option < ErlNifMapIterator > {
70- let mut iter = mem :: uninitialized ( ) ;
70+ let mut iter = MaybeUninit :: uninit ( ) ;
7171 let success = rustler_sys:: enif_map_iterator_create (
7272 env,
7373 map,
74- & mut iter,
74+ iter. as_mut_ptr ( ) ,
7575 ErlNifMapIteratorEntry :: ERL_NIF_MAP_ITERATOR_HEAD ,
7676 ) ;
7777 if success == 0 {
7878 None
7979 } else {
80- Some ( iter)
80+ Some ( iter. assume_init ( ) )
8181 }
8282}
8383
@@ -89,12 +89,13 @@ pub unsafe fn map_iterator_get_pair(
8989 env : NIF_ENV ,
9090 iter : & mut ErlNifMapIterator ,
9191) -> Option < ( NIF_TERM , NIF_TERM ) > {
92- let mut key: NIF_TERM = mem:: uninitialized ( ) ;
93- let mut value: NIF_TERM = mem:: uninitialized ( ) ;
94- if rustler_sys:: enif_map_iterator_get_pair ( env, iter, & mut key, & mut value) == 0 {
92+ let mut key = MaybeUninit :: uninit ( ) ;
93+ let mut value = MaybeUninit :: uninit ( ) ;
94+ if rustler_sys:: enif_map_iterator_get_pair ( env, iter, key. as_mut_ptr ( ) , value. as_mut_ptr ( ) ) == 0
95+ {
9596 None
9697 } else {
97- Some ( ( key, value) )
98+ Some ( ( key. assume_init ( ) , value. assume_init ( ) ) )
9899 }
99100}
100101
@@ -108,17 +109,17 @@ pub unsafe fn make_map_from_arrays(
108109 keys : & [ NIF_TERM ] ,
109110 values : & [ NIF_TERM ] ,
110111) -> Option < NIF_TERM > {
111- let mut map = mem :: uninitialized ( ) ;
112+ let mut map = MaybeUninit :: uninit ( ) ;
112113 if rustler_sys:: enif_make_map_from_arrays (
113114 env,
114115 keys. as_ptr ( ) ,
115116 values. as_ptr ( ) ,
116117 keys. len ( ) as usize ,
117- & mut map,
118+ map. as_mut_ptr ( ) ,
118119 ) == 0
119120 {
120121 return None ;
121122 }
122123
123- Some ( map)
124+ Some ( map. assume_init ( ) )
124125}
0 commit comments