mirror of
https://codeberg.org/icewind/bitbuffer.git
synced 2026-06-03 16:44:06 +02:00
add schemars_1 feature
This commit is contained in:
parent
b71925baad
commit
25a28172ad
5 changed files with 74 additions and 8 deletions
52
Cargo.lock
generated
52
Cargo.lock
generated
|
|
@ -19,14 +19,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "bitbuffer"
|
||||
version = "0.11.2"
|
||||
version = "0.11.3"
|
||||
dependencies = [
|
||||
"bitbuffer_derive",
|
||||
"iai-callgrind",
|
||||
"maplit",
|
||||
"memchr",
|
||||
"num-traits",
|
||||
"schemars",
|
||||
"schemars 0.8.22",
|
||||
"schemars 1.0.4",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"thiserror",
|
||||
|
|
@ -195,6 +196,26 @@ dependencies = [
|
|||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ref-cast"
|
||||
version = "1.0.24"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf"
|
||||
dependencies = [
|
||||
"ref-cast-impl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ref-cast-impl"
|
||||
version = "1.0.24"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
version = "1.0.19"
|
||||
|
|
@ -208,7 +229,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615"
|
||||
dependencies = [
|
||||
"dyn-clone",
|
||||
"schemars_derive",
|
||||
"schemars_derive 0.8.22",
|
||||
"serde",
|
||||
"serde_json",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "schemars"
|
||||
version = "1.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0"
|
||||
dependencies = [
|
||||
"dyn-clone",
|
||||
"ref-cast",
|
||||
"schemars_derive 1.0.4",
|
||||
"serde",
|
||||
"serde_json",
|
||||
]
|
||||
|
|
@ -225,6 +259,18 @@ dependencies = [
|
|||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "schemars_derive"
|
||||
version = "1.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "33d020396d1d138dc19f1165df7545479dcd58d93810dc5d646a16e55abefa80"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"serde_derive_internals",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.218"
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
[package]
|
||||
name = "bitbuffer"
|
||||
version = "0.11.2"
|
||||
version = "0.11.3"
|
||||
authors = ["Robin Appelman <robin@icewind.nl>"]
|
||||
edition = "2021"
|
||||
description = "Reading bit sequences from a byte slice"
|
||||
license = "MIT OR Apache-2.0"
|
||||
repository = "https://codeberg.org/icewind/bitbuffer"
|
||||
rust-version = "1.70.0"
|
||||
rust-version = "1.74.0"
|
||||
|
||||
[dependencies]
|
||||
num-traits = "0.2.19"
|
||||
|
|
@ -15,6 +15,7 @@ bitbuffer_derive = { version = "0.11.0", path = "bitbuffer_derive" }
|
|||
memchr = "2.7.4"
|
||||
serde = { version = "1.0.218", features = ["derive"], optional = true }
|
||||
schemars = { version = "0.8.21", optional = true }
|
||||
schemars_1 = { package = "schemars", version = "1.0.4", optional = true }
|
||||
|
||||
[dev-dependencies]
|
||||
maplit = "1.0.2"
|
||||
|
|
|
|||
|
|
@ -882,3 +882,22 @@ impl<'a, E: Endianness> schemars::JsonSchema for BitReadStream<'a, E> {
|
|||
StreamSchema::json_schema(gen)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "schemars_1")]
|
||||
impl<'a, E: Endianness> schemars_1::JsonSchema for BitReadStream<'a, E> {
|
||||
fn schema_name() -> std::borrow::Cow<'static, str> {
|
||||
"BitReadStream".into()
|
||||
}
|
||||
|
||||
fn json_schema(gen: &mut schemars_1::SchemaGenerator) -> schemars_1::Schema {
|
||||
use schemars_1 as schemars;
|
||||
|
||||
#[derive(schemars_1::JsonSchema)]
|
||||
#[allow(dead_code)]
|
||||
struct StreamSchema {
|
||||
data: Vec<u8>,
|
||||
bit_length: usize,
|
||||
}
|
||||
StreamSchema::json_schema(gen)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ impl<'a, E: Endianness> WriteBuffer<'a, E> {
|
|||
} else {
|
||||
0
|
||||
};
|
||||
let merged_byte_count = (count + bit_offset + 7) / 8;
|
||||
let merged_byte_count = (count + bit_offset).div_ceil(8);
|
||||
|
||||
if E::is_le() {
|
||||
let merged = last_written_byte as usize | (bits << bit_offset);
|
||||
|
|
@ -174,7 +174,7 @@ impl<'a, E: Endianness> WriteBuffer<'a, E> {
|
|||
|
||||
let bit_offset = pos & 7;
|
||||
let byte_pos = pos / 8;
|
||||
let byte_count = (count + bit_offset + 7) / 8;
|
||||
let byte_count = (count + bit_offset).div_ceil(8);
|
||||
|
||||
let mut old = [0; 8];
|
||||
old[0..byte_count].copy_from_slice(&self.bytes[byte_pos..byte_pos + byte_count]);
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ where
|
|||
|
||||
/// The number of written bytes in the buffer
|
||||
pub fn byte_len(&self) -> usize {
|
||||
(self.buffer.bit_len() + 7) / 8
|
||||
self.buffer.bit_len().div_ceil(8)
|
||||
}
|
||||
|
||||
fn push_non_fit_bits<I>(&mut self, bits: I, count: usize)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue