fn initial_clonable_types() -> HashSet<String> {
let mut res = HashSet::new();
res.insert("crate::c_types::u5".to_owned());
+ res.insert("crate::c_types::ThirtyTwoBytes".to_owned());
+ res.insert("crate::c_types::PublicKey".to_owned());
+ res.insert("crate::c_types::Transaction".to_owned());
+ res.insert("crate::c_types::TxOut".to_owned());
+ res.insert("crate::c_types::Signature".to_owned());
+ res.insert("crate::c_types::RecoverableSignature".to_owned());
+ res.insert("crate::c_types::Secp256k1Error".to_owned());
+ res.insert("crate::c_types::IOError".to_owned());
res
}
if self.is_primitive(ty) { return true; }
match ty {
"()" => true,
- "crate::c_types::Signature" => true,
- "crate::c_types::RecoverableSignature" => true,
- "crate::c_types::TxOut" => true,
_ => false,
}
}
"str" if is_ref => Some(""),
"alloc::string::String"|"String" => Some(""),
+ "std::io::Error" if !is_ref => Some(""),
// Note that we'll panic for String if is_ref, as we only have non-owned memory, we
// cannot create a &String.
"str" if is_ref => Some(".into_str()"),
"alloc::string::String"|"String" => Some(".into_string()"),
+ "std::io::Error" if !is_ref => Some(".to_rust()"),
"std::time::Duration"|"core::time::Duration" => Some(")"),
"std::time::SystemTime" => Some("))"),
(").into(), Err(mut e) => crate::c_types::CResultTempl::err(".to_string(), "e".to_string())],
").into() }", ContainerPrefixLocation::PerConv))
},
- "Vec" if !is_ref => {
- Some(("Vec::new(); for mut item in ", vec![(format!(".drain(..) {{ local_{}.push(", var_name), "item".to_string())], "); }", ContainerPrefixLocation::PerConv))
- },
"Vec" => {
- // We should only get here if the single contained has an inner
- assert!(self.c_type_has_inner(single_contained.unwrap()));
- Some(("Vec::new(); for mut item in ", vec![(format!(".drain(..) {{ local_{}.push(", var_name), "*item".to_string())], "); }", ContainerPrefixLocation::PerConv))
+ if is_ref {
+ // We should only get here if the single contained has an inner
+ assert!(self.c_type_has_inner(single_contained.unwrap()));
+ }
+ Some(("Vec::new(); for mut item in ", vec![(format!(".drain(..) {{ local_{}.push(", var_name), "item".to_string())], "); }", ContainerPrefixLocation::PerConv))
},
"Slice" => {
- Some(("Vec::new(); for item in ", vec![(format!(".iter() {{ local_{}.push(", var_name), "*item".to_string())], "); }", ContainerPrefixLocation::PerConv))
+ Some(("Vec::new(); for item in ", vec![(format!(".iter() {{ local_{}.push(", var_name), "item".to_string())], "); }", ContainerPrefixLocation::PerConv))
},
"Option" => {
let contained_struct = if let Some(syn::Type::Path(p)) = single_contained {