use std::io::{Cursor, Read}; // TODO: We should use core2 here when we support no_std
+#[repr(C)]
+/// A dummy struct of which an instance must never exist.
+/// This corresponds to the Rust type `Infallible`, or, in unstable rust, `!`
+pub struct NotConstructable {
+ _priv_thing: core::convert::Infallible,
+}
+impl From<core::convert::Infallible> for NotConstructable {
+ fn from(_: core::convert::Infallible) -> Self { unreachable!(); }
+}
+
/// Integer in the range `0..32`
#[derive(PartialEq, Eq, Copy, Clone)]
#[allow(non_camel_case_types)]
}
#[repr(C)]
-#[derive(Clone)]
/// A Rust str object, ie a reference to a UTF8-valid string.
/// This is *not* null-terminated so cannot be used directly as a C string!
pub struct Str {
Str { chars: s.as_ptr(), len: s.len(), chars_is_owned: true }
}
}
+impl Clone for Str {
+ fn clone(&self) -> Self {
+ self.into_str().clone().into()
+ }
+}
impl Drop for Str {
fn drop(&mut self) {