mirror of
https://github.com/serai-dex/serai.git
synced 2025-01-15 23:35:17 +00:00
1e448dec21
transcript, dalek-ff-group, ed449, and ciphersuite are all usable with no_std alone. The rest additionally require alloc. Part of #279.
16 lines
431 B
Rust
16 lines
431 B
Rust
use std_shims::io::{self, Write};
|
|
|
|
const VARINT_CONTINUATION_MASK: u8 = 0b1000_0000;
|
|
pub(crate) fn write_varint<W: Write>(varint: &u64, w: &mut W) -> io::Result<()> {
|
|
let mut varint = *varint;
|
|
while {
|
|
let mut b = u8::try_from(varint & u64::from(!VARINT_CONTINUATION_MASK)).unwrap();
|
|
varint >>= 7;
|
|
if varint != 0 {
|
|
b |= VARINT_CONTINUATION_MASK;
|
|
}
|
|
w.write_all(&[b])?;
|
|
varint != 0
|
|
} {}
|
|
Ok(())
|
|
}
|