abi_stable_derive/
literals_constructors.rs
1use as_derive_utils::to_token_fn::ToTokenFnMut;
5
6use quote::{quote, ToTokens, TokenStreamExt};
7
8pub fn rslice_tokenizer<'a, I, T>(iter: I) -> impl ToTokens + 'a
10where
11 I: IntoIterator<Item = T> + 'a,
12 T: ToTokens,
13{
14 let mut iter = iter.into_iter();
15 ToTokenFnMut::new(move |ts| {
16 let iter = &mut iter;
17 ts.append_all(quote!(
18 abi_stable::std_types::RSlice::from_slice(&[ #( #iter, )* ])
19 ));
20 })
21}
22
23pub fn rstr_tokenizer<S>(string: S) -> impl ToTokens
25where
26 S: AsRef<str>,
27{
28 ToTokenFnMut::new(move |ts| {
29 let string = string.as_ref();
30
31 ts.append_all(quote!( abi_stable::std_types::RStr::from_str(#string) ));
32 })
33}