[package] name = "rkyv" description = "Zero-copy deserialization framework for Rust" version.workspace = true edition.workspace = true rust-version.workspace = true authors.workspace = true license.workspace = true readme = "../README.md" repository.workspace = true keywords = ["archive", "rkyv", "serialization", "zero-copy", "no_std"] categories = ["encoding", "no-std", "no-std::no-alloc"] documentation = "https://docs.rs/rkyv" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] bytecheck = { workspace = true, optional = true } hashbrown = { workspace = true, optional = true } munge.workspace = true ptr_meta.workspace = true rancor.workspace = true rend.workspace = true rkyv_derive.workspace = true # Support for various common crates. These are primarily to get users off the # ground and build some momentum. # These are NOT PLANNED to remain in rkyv for the 1.0 release. Much like serde, # these implementations should be moved into their respective crates over time. # Before adding support for another crate, please consider getting rkyv support # in the crate instead. arrayvec-0_7 = { package = "arrayvec", version = "0.7", optional = true, default-features = false } bytes-1 = { package = "bytes", version = "1", optional = true, default-features = false } hashbrown-0_14 = { package = "hashbrown", version = "0.14", optional = true, default-features = false } # rkyv already depends on hashbrown 0.15, so we can't duplicate this, but we can expose it as a feature below # hashbrown-0_15 = { package = "hashbrown", version = "0.15", optional = true, default-features = false } indexmap-2 = { package = "indexmap", version = "2", optional = true, default-features = false } smallvec-1 = { package = "smallvec", version = "1", optional = true, default-features = false } smol_str-0_2 = { package = "smol_str", version = "0.2", optional = true, default-features = false } smol_str-0_3 = { package = "smol_str", version = "0.3", optional = true, default-features = false } thin-vec-0_2 = { package = "thin-vec", version = "0.2.12", optional = true, default-features = false } tinyvec-1 = { package = "tinyvec", version = "1", optional = true, default-features = false } triomphe-0_1 = { package = "triomphe", version = "0.1", optional = true, default-features = false } uuid-1 = { package = "uuid", version = "1", optional = true, default-features = false } [features] default = ["std", "bytecheck"] little_endian = [] big_endian = [] aligned = [] unaligned = [] pointer_width_16 = [] pointer_width_32 = [] pointer_width_64 = [] alloc = ["dep:hashbrown", "tinyvec-1?/alloc", "rancor/alloc"] std = ["alloc", "bytes-1?/std", "indexmap-2?/std", "ptr_meta/std", "uuid-1?/std"] bytecheck = ["dep:bytecheck", "rend/bytecheck", "rkyv_derive/bytecheck"] # External crate support hashbrown-0_15 = ["dep:hashbrown"] indexmap-2 = ["dep:indexmap-2", "alloc"] triomphe-0_1 = ["dep:triomphe-0_1", "alloc"] uuid-1 = ["dep:uuid-1", "bytecheck?/uuid-1"] [package.metadata.docs.rs] features = ["bytecheck"] [dev-dependencies] ahash = "0.8" benchlib = { path = "../benchlib" } divan.workspace = true rustversion.workspace = true trybuild.workspace = true [[bench]] name = "log" harness = false [[bench]] name = "mesh" harness = false [[bench]] name = "minecraft_savedata" harness = false