use cluFullTransmute::contract::TransmuteContract;
struct MyData {
data: TransmuteContract<&'static str, &'static [u8]>,
}
impl MyData {
#[inline]
const fn new(data: &'static str) -> Self {
let data = unsafe {
TransmuteContract::new_unchecked(data)
};
Self { data }
}
#[inline]
pub fn as_data(&self) -> &'static str {
&self.data
}
#[inline]
pub fn as_sliceu8(&self) -> &'static [u8] {
self.data.as_out()
}
#[inline]
pub fn into(self) -> &'static [u8] {
self.data.into()
}
}
fn main() {
const C_DATA: &str = "Test";
let data = MyData::new(C_DATA);
assert_eq!(data.as_data(), C_DATA); assert_eq!(data.as_sliceu8(), C_DATA.as_bytes());
let vec = data.into(); assert_eq!(vec, C_DATA.as_bytes());
}