impl Leak<str> for String { fn leak<'a>(mut self) -> &'a str whereSelf: 'a { let r: *mut str = &mutself[..];
mem::forget(self); unsafe { &mut *r }
}
}
impl<T> Leak<[T]> for Vec<T> { fn leak<'a>(mut self) -> &'a [T] where [T]: 'a { let r: *mut [T] = &mutself[..];
mem::forget(self); unsafe { &mut *r }
}
}
#[cfg(test)] mod test { #[test] fn leak_str() { usesuper::Leak; use std::borrow::ToOwned;
let v = "hi"; let leaked : &str = { let o = v.to_owned();
o.leak()
};
assert_eq!(leaked, v);
let leaked : &'static str = { let o = v.to_owned();
o.leak()
};
assert_eq!(leaked, v);
}
#[test] fn leak_empty_str() { usesuper::Leak; use std::borrow::ToOwned;
let v = ""; let leaked : &'static str = { let o = v.to_owned();
o.leak()
};
assert_eq!(leaked, v);
}
#[test] fn leak_vec() { usesuper::Leak;
let v = vec![3, 5]; let leaked : &'static [u8] = { let o = v.clone();
o.leak()
};
assert_eq!(leaked, &*v);
}
#[test] fn leak_empty_vec() { usesuper::Leak;
let v = vec![]; let leaked : &'static [u8] = { let o = v.clone();
o.leak()
};
assert_eq!(leaked, &*v);
}
#[test] fn leak_box() { usesuper::Leak;
let v : Box<[&str]> = vec!["hi", "there"].into_boxed_slice(); let leaked : &'static [&str] = { let o = v.clone();
o.leak()
};
assert_eq!(leaked, &*v);
}
#[test] fn leak_nested() { usesuper::Leak;
let v : Box<Vec<&str>> = Box::new(vec!["hi", "there"]); let leaked : &'static [&str] = { let o = v.clone();
o.leak()
};
assert_eq!(leaked, &**v);
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-18)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.