@@ -10,8 +10,8 @@ use sqlite_loadable::{api, Error, Result};
1010// regex(pattern [, flags])
1111pub fn regex_print ( context : * mut sqlite3_context , values : & [ * mut sqlite3_value ] ) -> Result < ( ) > {
1212 let regex = value_regex ( values. get ( 0 ) . ok_or ( "asdf" ) ?) ?;
13+ let regex = unsafe { & mut * regex } ;
1314 api:: result_text ( context, regex. as_str ( ) ) ?;
14- Box :: into_raw ( regex) ;
1515 Ok ( ( ) )
1616}
1717
@@ -28,10 +28,11 @@ pub fn regex(context: *mut sqlite3_context, values: &[*mut sqlite3_value]) -> Re
2828/// regex_matches(regex, text)
2929pub fn regex_matches ( context : * mut sqlite3_context , values : & [ * mut sqlite3_value ] ) -> Result < ( ) > {
3030 let ( regex, input_type) = regex_from_value_or_cache ( context, values, 0 ) ?;
31+ let regex = unsafe { & mut * regex } ;
3132 let content =
3233 api:: value_text_notnull ( values. get ( 1 ) . ok_or ( "expected 2nd argument as contents" ) ?) ?;
3334
34- api:: result_bool ( context, regex. as_ref ( ) . is_match ( content) ) ;
35+ api:: result_bool ( context, regex. is_match ( content) ) ;
3536 cleanup_regex_value_cached ( context, regex, input_type) ;
3637 Ok ( ( ) )
3738}
@@ -56,13 +57,13 @@ pub fn regex_valid(context: *mut sqlite3_context, values: &[*mut sqlite3_value])
5657/// regex_find(regex, contents)
5758pub fn regex_find ( context : * mut sqlite3_context , values : & [ * mut sqlite3_value ] ) -> Result < ( ) > {
5859 let ( regex, input_type) = regex_from_value_or_cache ( context, values, 0 ) ?;
59-
60+ let regex = unsafe { & mut * regex } ;
6061 let arg_content = values
6162 . get ( 1 )
6263 . ok_or_else ( || Error :: new_message ( "expected 2nd argument as contents" ) ) ?;
6364
6465 let content = api:: value_text_notnull ( arg_content) ?;
65- match regex. as_ref ( ) . find ( content) {
66+ match regex. find ( content) {
6667 Some ( m) => {
6768 api:: result_text ( context, m. as_str ( ) ) ?;
6869 }
@@ -78,7 +79,7 @@ pub fn regex_find(context: *mut sqlite3_context, values: &[*mut sqlite3_value])
7879/// regex_find_at(regex, contents, offset)
7980pub fn regex_find_at ( context : * mut sqlite3_context , values : & [ * mut sqlite3_value ] ) -> Result < ( ) > {
8081 let ( regex, input_type) = regex_from_value_or_cache ( context, values, 0 ) ?;
81-
82+ let regex = unsafe { & mut * regex } ;
8283 let arg_content = values
8384 . get ( 1 )
8485 . ok_or_else ( || Error :: new_message ( "expected 2nd argument as contents" ) ) ?;
@@ -88,7 +89,7 @@ pub fn regex_find_at(context: *mut sqlite3_context, values: &[*mut sqlite3_value
8889
8990 let content = api:: value_text_notnull ( arg_content) ?;
9091 let offset = api:: value_int ( arg_offset) as usize ;
91- match regex. as_ref ( ) . find_at ( content, offset) {
92+ match regex. find_at ( content, offset) {
9293 Some ( m) => {
9394 api:: result_text ( context, m. as_str ( ) ) ?;
9495 }
@@ -105,7 +106,7 @@ pub fn regex_find_at(context: *mut sqlite3_context, values: &[*mut sqlite3_value
105106/// regex_replace(regex, contents, replacement)
106107pub fn regex_replace ( context : * mut sqlite3_context , values : & [ * mut sqlite3_value ] ) -> Result < ( ) > {
107108 let ( regex, input_type) = regex_from_value_or_cache ( context, values, 0 ) ?;
108-
109+ let regex = unsafe { & mut * regex } ;
109110 let content = api:: value_text_notnull (
110111 values
111112 . get ( 1 )
@@ -117,9 +118,9 @@ pub fn regex_replace(context: *mut sqlite3_context, values: &[*mut sqlite3_value
117118 . ok_or_else ( || Error :: new_message ( "expected 3rd argument as replacement" ) ) ?,
118119 ) ?;
119120
120- let result = regex. as_ref ( ) . replace ( content, replacement) ;
121+ let result = regex. replace ( content, replacement) ;
121122
122- api:: result_text ( context, & result) ?;
123+ api:: result_text ( context, result) ?;
123124 cleanup_regex_value_cached ( context, regex, input_type) ;
124125
125126 Ok ( ( ) )
@@ -131,7 +132,7 @@ pub fn regex_replace_all(
131132 values : & [ * mut sqlite3_value ] ,
132133) -> Result < ( ) > {
133134 let ( regex, input_type) = regex_from_value_or_cache ( context, values, 0 ) ?;
134-
135+ let regex = unsafe { & mut * regex } ;
135136 let content = api:: value_text_notnull (
136137 values
137138 . get ( 1 )
@@ -142,8 +143,8 @@ pub fn regex_replace_all(
142143 . get ( 2 )
143144 . ok_or_else ( || Error :: new_message ( "expected 3rd argument as replacement" ) ) ?,
144145 ) ?;
145- let result = regex. as_ref ( ) . replace_all ( content, replacement) ;
146- api:: result_text ( context, & result) ?;
146+ let result = regex. replace_all ( content, replacement) ;
147+ api:: result_text ( context, result) ?;
147148
148149 cleanup_regex_value_cached ( context, regex, input_type) ;
149150 Ok ( ( ) )
@@ -152,7 +153,7 @@ pub fn regex_replace_all(
152153/// regex_capture(regex, contents, group)
153154pub fn regex_capture ( context : * mut sqlite3_context , values : & [ * mut sqlite3_value ] ) -> Result < ( ) > {
154155 let ( regex, input_type) = regex_from_value_or_cache ( context, values, 0 ) ?;
155-
156+ let regex = unsafe { & mut * regex } ;
156157 let content = api:: value_text_notnull (
157158 values
158159 . get ( 1 )
@@ -162,7 +163,7 @@ pub fn regex_capture(context: *mut sqlite3_context, values: &[*mut sqlite3_value
162163 . get ( 2 )
163164 . ok_or_else ( || Error :: new_message ( "expected 3rd argument as group index or name" ) ) ?;
164165
165- let result = regex. as_ref ( ) . captures ( content) ;
166+ let result = regex. captures ( content) ;
166167 match result {
167168 None => api:: result_null ( context) ,
168169 Some ( captures) => {
@@ -185,13 +186,14 @@ pub fn regex_capture(context: *mut sqlite3_context, values: &[*mut sqlite3_value
185186 Ok ( ( ) )
186187}
187188
188- /// regex_capture(regex, contents , group)
189+ /// regex_capture(captures , group)
189190pub fn regex_capture2 ( context : * mut sqlite3_context , values : & [ * mut sqlite3_value ] ) -> Result < ( ) > {
190191 let captures = value_regex_captures (
191192 values
192193 . get ( 0 )
193194 . ok_or_else ( || Error :: new_message ( "expected 1st argument as capture group" ) ) ?,
194195 ) ?;
196+ let captures = unsafe { & * captures } ;
195197 let group_arg = values
196198 . get ( 1 )
197199 . ok_or_else ( || Error :: new_message ( "expected 3rd argument as group index or name" ) ) ?;
@@ -225,6 +227,5 @@ pub fn regex_capture2(context: *mut sqlite3_context, values: &[*mut sqlite3_valu
225227 None => api:: result_null ( context) ,
226228 } ,
227229 }
228- Box :: into_raw ( captures) ;
229230 Ok ( ( ) )
230231}
0 commit comments