interstice_abi/codec.rs
1use serde::{Deserialize, Serialize};
2
3pub fn encode<T: Serialize>(value: &T) -> Result<Vec<u8>, postcard::Error> {
4 postcard::to_allocvec(value)
5}
6
7pub fn decode<'a, T: Deserialize<'a>>(bytes: &'a [u8]) -> Result<T, postcard::Error> {
8 postcard::from_bytes(bytes)
9}
10
11#[inline]
12pub fn pack_ptr_len(ptr: i32, len: i32) -> i64 {
13 ((ptr as i64) << 32) | (len as u32 as i64)
14}
15
16#[inline]
17pub fn unpack_ptr_len(v: i64) -> (i32, i32) {
18 ((v >> 32) as i32, v as i32)
19}