diff --git a/src/implement/block.rs b/src/implement/block.rs index b7367c9..e81a7af 100644 --- a/src/implement/block.rs +++ b/src/implement/block.rs @@ -30,6 +30,13 @@ impl Block { data } + pub fn get_sized(&self) -> [u8; K] + { + let mut data = [0u8; K]; + Runtime::load(self.refer, &mut data as _, 0, std::cmp::min(self.len(), K)); + data + } + pub fn set_byte(&mut self, index:usize, byte:u8) { if index < self.len() { diff --git a/src/implement/sequence.rs b/src/implement/sequence.rs index 154babf..10fe8fd 100644 --- a/src/implement/sequence.rs +++ b/src/implement/sequence.rs @@ -97,6 +97,18 @@ impl Sequence { } } + pub fn get_sized(&self) -> [u8; K] + { + let mut data = [0u8; K]; + if let Some(header) = unsafe {(self.refer.address() as *const Data).as_ref()} { + let slice = unsafe { std::slice::from_raw_parts_mut(header.data as _, header.length) }; + for i in 0..std::cmp::min(slice.len(), K) { + data[i] = slice[i]; + } + } + data + } + pub fn get_str(&self) -> String { String::from_utf8(self.get()).unwrap_or_default()