[package] name = "tinyvec" description = "`tinyvec` provides 100% safe vec-like data structures." version = "1.12.0" authors = ["Lokathor "] edition = "2018" license = "Zlib OR Apache-2.0 OR MIT" keywords = ["vec", "no_std", "no-std"] categories = ["data-structures", "no-std"] repository = "https://github.com/Lokathor/tinyvec" exclude = ["/.github", "/*.py", "/*.sh", "/src-backup"] [dependencies] tinyvec_macros = { version = "0.1", optional = true } # Provides `Serialize` and `Deserialize` implementations serde_core = { version = "1.0", optional = true, default-features = false } # Provides derived `Arbitrary` implementations arbitrary = { version = "1", optional = true } # Provides `BorshSerialize` and `BorshDeserialize implementations borsh = { version = "1.2.0", optional = true, default-features = false } # Implements the trait `Array` for `GenericArray` struct. generic-array = { version = "1.1.1", optional = true, default-features = false } # Provides derived `BitEncode` and `BitDecode` implementations bin-proto = { version = "0.12.5", optional = true, default-features = false } # Provides `Format` implementations defmt = { version = "1.0", optional = true } # Provides `JsonSchema` implementations schemars = { version = "1.0", optional = true, default-features = false } [features] default = [] # Provide things that utilize the `alloc` crate, namely `TinyVec`. alloc = ["tinyvec_macros"] # Provide things that require Rust's `std` module std = ["alloc"] # Provides `Serialize` and `Deserialize` implementations serde = ["dep:serde_core"] # (not part of Vec!) Extra methods to let you grab the slice of memory after the # "active" portion of an `ArrayVec` or `SliceVec`. grab_spare_slice = [] # obsolete feature that has to stay for semver reasons rustc_1_40 = [] # obsolete feature that has to stay for semver reasons rustc_1_55 = [] # features that require rustc 1.57 # add try_reserve functions to types that heap allocate. rustc_1_57 = [] # features that require rustc 1.61 # add retain_mut function to TinyVec rustc_1_61 = ["rustc_1_57"] # We're done with per-version featuring, this feature opts in to all the # abilities of the latest release of Stable rust, and we don't need a million # features forever now. latest_stable_rust = ["rustc_1_61"] # allow use of nightly feature `slice_partition_dedup`, # will become useless once that is stabilized: # https://github.com/rust-lang/rust/issues/54279 nightly_slice_partition_dedup = [] # allow use of nightly feature `debugger_visualizer`, # will become useless once that is stabilized: # https://github.com/rust-lang/rust/issues/95939 debugger_visualizer = [] # EXPERIMENTAL: Not part of SemVer. It adds `core::fmt::Write` to `ArrayVec` # and `SliceVec`. It works on Stable Rust, but Vec normally supports the # `std::io::Write` trait instead of `core::fmt::Write`, so we're keeping it as # an experimental impl only for now. experimental_write_impl = [] # Some benchmarks are optimized away with the stable black_box function # which is based on read_volatile. This feature requires inline assembly # and thus a nightly compiler, but is only used in benchmarks. real_blackbox = ["criterion/real_blackbox"] schemars = ["dep:schemars", "alloc"] [package.metadata.docs.rs] features = ["alloc", "std", "grab_spare_slice", "latest_stable_rust", "serde", "borsh", "defmt", "bin-proto", "schemars"] rustdoc-args = ["--cfg","docs_rs"] [package.metadata.playground] features = ["alloc", "std", "grab_spare_slice", "latest_stable_rust", "serde", "borsh", "schemars"] [profile.dev] lto = "thin" [profile.bench] debug = 2 [workspace] members = ["fuzz"] [dev-dependencies] criterion = "0.8.0" serde_test = "1.0" smallvec = "1" debugger_test = "0.1" debugger_test_parser = "0.1" [[test]] name = "tinyvec" required-features = ["alloc", "std"] [[bench]] name = "macros" harness = false required-features = ["alloc"] [[bench]] name = "smallvec" harness = false required-features = ["alloc", "real_blackbox"] [[test]] path = "tests/debugger_visualizer.rs" name = "debugger_visualizer" required-features = ["debugger_visualizer"] test = false