if path == "Sized" { continue; }
if non_lifetimes_processed { return false; }
non_lifetimes_processed = true;
- if path != "std::ops::Deref" && path != "core::ops::Deref" {
+ if path != "std::ops::Deref" && path != "core::ops::Deref" &&
+ path != "std::ops::DerefMut" && path != "core::ops::DerefMut" {
let p = string_path_to_syn_path(&path);
let ref_ty = parse_quote!(&#p);
let mut_ref_ty = parse_quote!(&mut #p);
// implement Deref<Target=Self> for relevant types). We don't
// bother to implement it for associated types, however, so we just
// ignore such bounds.
- if path != "std::ops::Deref" && path != "core::ops::Deref" {
+ if path != "std::ops::Deref" && path != "core::ops::Deref" &&
+ path != "std::ops::DerefMut" && path != "core::ops::DerefMut" {
self.typed_generics.insert(&t.ident, path);
}
} else { unimplemented!(); }
for bound in bounds_iter {
if let syn::TypeParamBound::Trait(t) = bound {
// We only allow for `?Sized` here.
- if let syn::TraitBoundModifier::Maybe(_) = t.modifier {} else { panic!(); }
assert_eq!(t.path.segments.len(), 1);
assert_eq!(format!("{}", t.path.segments[0].ident), "Sized");
}
Self::insert_primitive(&mut imports, "bool");
Self::insert_primitive(&mut imports, "u128");
Self::insert_primitive(&mut imports, "i64");
+ Self::insert_primitive(&mut imports, "f64");
Self::insert_primitive(&mut imports, "u64");
Self::insert_primitive(&mut imports, "u32");
Self::insert_primitive(&mut imports, "u16");
match full_path {
"bool" => true,
"i64" => true,
+ "f64" => true,
"u64" => true,
"u32" => true,
"u16" => true,