use jacquard_common::types::tid::Tid;
use jacquard_common::{CowStr, IntoStatic};
use miette::{Context, IntoDiagnostic};
use serde::{Deserialize, Deserializer, Serialize, Serializer};
use smol_str::{SmolStr, SmolStrBuilder, format_smolstr};
use smol_str::{SmolStr, format_smolstr};
use std::borrow::Cow;
use std::fmt::Display;
const S32_CHAR: &str = "234567abcdefghijklmnopqrstuvwxyz";
269 unmodified lines
Expand all
})
.map(|i| Self(i.to_be_bytes()))
}
/// every replayed event calls this for its rev and most rkeys
fn to_smolstr(self) -> SmolStr {
let mut i = u64::from_be_bytes(self.0);
let mut s = SmolStrBuilder::new();
for _ in 0..13 {
let c = i & 0x1F;
s.push(S32_CHAR.chars().nth(c as usize).unwrap());
let mut out = [0; 13];
for c in out.iter_mut().rev() {
*c = S32_CHAR.as_bytes()[(i & 0x1F) as usize];
i >>= 5;
}
let mut builder = SmolStrBuilder::new();
for c in s.finish().chars().rev() {
builder.push(c);
}
builder.finish()
SmolStr::new_inline(std::str::from_utf8(&out).expect("s32 digits are ascii"))
}
}
pub fn s32decode(s: &str) -> u64 {
517 unmodified lines
Expand all