diff --git a/libgrust/libproc_macro/rust/bridge/literal.rs b/libgrust/libproc_macro/rust/bridge/literal.rs index b03e363db33..59825048970 100644 --- a/libgrust/libproc_macro/rust/bridge/literal.rs +++ b/libgrust/libproc_macro/rust/bridge/literal.rs @@ -1,12 +1,10 @@ use bridge::{ffistring::FFIString, span::Span}; -use std::convert::TryInto; -use std::ffi::c_uchar; use std::fmt; use std::str::FromStr; use LexError; extern "C" { - fn Literal__from_string(str: *const c_uchar, len: u64, lit: *mut Literal) -> bool; + fn Literal__from_string(str: FFIString, lit: *mut Literal) -> bool; } #[repr(C)] @@ -234,13 +232,7 @@ impl FromStr for Literal { }; // TODO: We might want to pass a LexError by reference to retrieve // error information - if unsafe { - Literal__from_string( - string.as_ptr(), - string.len().try_into().unwrap(), - &mut lit as *mut Literal, - ) - } { + if unsafe { Literal__from_string(string.into(), &mut lit as *mut Literal) } { Err(LexError) } else { Ok(lit) diff --git a/libgrust/libproc_macro/rust/bridge/token_stream.rs b/libgrust/libproc_macro/rust/bridge/token_stream.rs index 79f161fce44..094f91f1370 100644 --- a/libgrust/libproc_macro/rust/bridge/token_stream.rs +++ b/libgrust/libproc_macro/rust/bridge/token_stream.rs @@ -1,6 +1,5 @@ -use bridge::{group::Group, ident::Ident, literal::Literal, punct::Punct}; +use bridge::{ffistring::FFIString, group::Group, ident::Ident, literal::Literal, punct::Punct}; use std::convert::TryInto; -use std::ffi::c_uchar; use std::fmt; use std::slice; use std::str::FromStr; @@ -13,7 +12,7 @@ extern "C" { fn TokenStream__new() -> TokenStream; fn TokenStream__with_capacity(capacity: u64) -> TokenStream; fn TokenStream__push(stream: *mut TokenStream, tree: TokenTree); - fn TokenStream__from_string(str: *const c_uchar, len: u64, ts: *mut TokenStream) -> bool; + fn TokenStream__from_string(str: FFIString, ts: *mut TokenStream) -> bool; fn TokenStream__clone(ts: *const TokenStream) -> TokenStream; fn TokenStream__drop(stream: *mut TokenStream); } @@ -136,13 +135,7 @@ impl FromStr for TokenStream { type Err = LexError; fn from_str(string: &str) -> Result { let mut ts = TokenStream::new(); - if unsafe { - TokenStream__from_string( - string.as_ptr(), - string.len().try_into().unwrap(), - &mut ts as *mut TokenStream, - ) - } { + if unsafe { TokenStream__from_string(string.into(), &mut ts as *mut TokenStream) } { Err(LexError) } else { Ok(ts)