@@ -2,6 +2,7 @@ include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
22use rbs_encoding_type_t:: RBS_ENCODING_UTF_8 ;
33use ruby_rbs_sys:: bindings:: * ;
44use std:: marker:: PhantomData ;
5+ use std:: ptr:: NonNull ;
56use std:: sync:: Once ;
67
78static INIT : Once = Once :: new ( ) ;
@@ -32,7 +33,7 @@ pub fn parse(rbs_code: &[u8]) -> Result<SignatureNode<'_>, String> {
3233 let result = rbs_parse_signature ( parser, & mut signature) ;
3334
3435 let signature_node = SignatureNode {
35- parser,
36+ parser : NonNull :: new_unchecked ( parser ) ,
3637 pointer : signature,
3738 marker : PhantomData ,
3839 } ;
@@ -48,7 +49,7 @@ pub fn parse(rbs_code: &[u8]) -> Result<SignatureNode<'_>, String> {
4849impl Drop for SignatureNode < ' _ > {
4950 fn drop ( & mut self ) {
5051 unsafe {
51- rbs_parser_free ( self . parser ) ;
52+ rbs_parser_free ( self . parser . as_ptr ( ) ) ;
5253 }
5354 }
5455}
@@ -57,7 +58,7 @@ impl KeywordNode<'_> {
5758 pub fn name ( & self ) -> & [ u8 ] {
5859 unsafe {
5960 let constant_ptr = rbs_constant_pool_id_to_constant (
60- & ( * self . parser ) . constant_pool ,
61+ & ( * self . parser . as_ptr ( ) ) . constant_pool ,
6162 ( * self . pointer ) . constant_id ,
6263 ) ;
6364 if constant_ptr. is_null ( ) {
@@ -71,13 +72,13 @@ impl KeywordNode<'_> {
7172}
7273
7374pub struct NodeList < ' a > {
74- parser : * mut rbs_parser_t ,
75+ parser : NonNull < rbs_parser_t > ,
7576 pointer : * mut rbs_node_list_t ,
7677 marker : PhantomData < & ' a mut rbs_node_list_t > ,
7778}
7879
7980impl < ' a > NodeList < ' a > {
80- pub fn new ( parser : * mut rbs_parser_t , pointer : * mut rbs_node_list_t ) -> Self {
81+ pub fn new ( parser : NonNull < rbs_parser_t > , pointer : * mut rbs_node_list_t ) -> Self {
8182 Self {
8283 parser,
8384 pointer,
@@ -97,7 +98,7 @@ impl<'a> NodeList<'a> {
9798}
9899
99100pub struct NodeListIter < ' a > {
100- parser : * mut rbs_parser_t ,
101+ parser : NonNull < rbs_parser_t > ,
101102 current : * mut rbs_node_list_node_t ,
102103 marker : PhantomData < & ' a mut rbs_node_list_node_t > ,
103104}
@@ -118,13 +119,13 @@ impl<'a> Iterator for NodeListIter<'a> {
118119}
119120
120121pub struct RBSHash < ' a > {
121- parser : * mut rbs_parser_t ,
122+ parser : NonNull < rbs_parser_t > ,
122123 pointer : * mut rbs_hash ,
123124 marker : PhantomData < & ' a mut rbs_hash > ,
124125}
125126
126127impl < ' a > RBSHash < ' a > {
127- pub fn new ( parser : * mut rbs_parser_t , pointer : * mut rbs_hash ) -> Self {
128+ pub fn new ( parser : NonNull < rbs_parser_t > , pointer : * mut rbs_hash ) -> Self {
128129 Self {
129130 parser,
130131 pointer,
@@ -144,7 +145,7 @@ impl<'a> RBSHash<'a> {
144145}
145146
146147pub struct RBSHashIter < ' a > {
147- parser : * mut rbs_parser_t ,
148+ parser : NonNull < rbs_parser_t > ,
148149 current : * mut rbs_hash_node_t ,
149150 marker : PhantomData < & ' a mut rbs_hash_node_t > ,
150151}
@@ -242,7 +243,7 @@ impl SymbolNode<'_> {
242243 pub fn name ( & self ) -> & [ u8 ] {
243244 unsafe {
244245 let constant_ptr = rbs_constant_pool_id_to_constant (
245- & ( * self . parser ) . constant_pool ,
246+ & ( * self . parser . as_ptr ( ) ) . constant_pool ,
246247 ( * self . pointer ) . constant_id ,
247248 ) ;
248249 if constant_ptr. is_null ( ) {
0 commit comments