mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
perf: misc Codec improvements (#5642)
This commit is contained in:
@ -89,7 +89,7 @@ impl_uint_compact!(u8, u64, u128);
|
|||||||
|
|
||||||
impl<T> Compact for Vec<T>
|
impl<T> Compact for Vec<T>
|
||||||
where
|
where
|
||||||
T: Compact + Default,
|
T: Compact,
|
||||||
{
|
{
|
||||||
/// Returns 0 since we won't include it in the `StructFlags`.
|
/// Returns 0 since we won't include it in the `StructFlags`.
|
||||||
fn to_compact<B>(self, buf: &mut B) -> usize
|
fn to_compact<B>(self, buf: &mut B) -> usize
|
||||||
@ -116,15 +116,11 @@ where
|
|||||||
fn from_compact(buf: &[u8], _: usize) -> (Self, &[u8]) {
|
fn from_compact(buf: &[u8], _: usize) -> (Self, &[u8]) {
|
||||||
let (length, mut buf) = decode_varuint(buf);
|
let (length, mut buf) = decode_varuint(buf);
|
||||||
let mut list = Vec::with_capacity(length);
|
let mut list = Vec::with_capacity(length);
|
||||||
#[allow(unused_assignments)]
|
|
||||||
let mut len = 0;
|
|
||||||
for _ in 0..length {
|
for _ in 0..length {
|
||||||
#[allow(unused_assignments)]
|
let len;
|
||||||
let mut element = T::default();
|
|
||||||
|
|
||||||
(len, buf) = decode_varuint(buf);
|
(len, buf) = decode_varuint(buf);
|
||||||
|
|
||||||
(element, _) = T::from_compact(&buf[..len], len);
|
let (element, _) = T::from_compact(&buf[..len], len);
|
||||||
buf.advance(len);
|
buf.advance(len);
|
||||||
|
|
||||||
list.push(element);
|
list.push(element);
|
||||||
@ -139,7 +135,6 @@ where
|
|||||||
B: bytes::BufMut + AsMut<[u8]>,
|
B: bytes::BufMut + AsMut<[u8]>,
|
||||||
{
|
{
|
||||||
encode_varuint(self.len(), buf);
|
encode_varuint(self.len(), buf);
|
||||||
|
|
||||||
for element in self {
|
for element in self {
|
||||||
element.to_compact(buf);
|
element.to_compact(buf);
|
||||||
}
|
}
|
||||||
@ -152,11 +147,8 @@ where
|
|||||||
let mut list = Vec::with_capacity(length);
|
let mut list = Vec::with_capacity(length);
|
||||||
|
|
||||||
for _ in 0..length {
|
for _ in 0..length {
|
||||||
#[allow(unused_assignments)]
|
let element;
|
||||||
let mut element = T::default();
|
|
||||||
|
|
||||||
(element, buf) = T::from_compact(buf, len);
|
(element, buf) = T::from_compact(buf, len);
|
||||||
|
|
||||||
list.push(element);
|
list.push(element);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -331,7 +323,7 @@ where
|
|||||||
fn decode_varuint(mut buf: &[u8]) -> (usize, &[u8]) {
|
fn decode_varuint(mut buf: &[u8]) -> (usize, &[u8]) {
|
||||||
let mut value: usize = 0;
|
let mut value: usize = 0;
|
||||||
|
|
||||||
for i in 0..33 {
|
for i in 0usize..33 {
|
||||||
let byte = buf.get_u8();
|
let byte = buf.get_u8();
|
||||||
if byte < 128 {
|
if byte < 128 {
|
||||||
value |= usize::from(byte) << (i * 7);
|
value |= usize::from(byte) << (i * 7);
|
||||||
|
|||||||
Reference in New Issue
Block a user