rustic_core 0.12.0

rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs
Documentation
[package]
name = "rustic_core"
version = "0.12.0"
authors = ["the rustic-rs team"]
categories = ["data-structures", "encoding", "filesystem"]
documentation = "https://docs.rs/rustic_core"
edition = "2024"
homepage = "https://rustic.cli.rs/"
include = ["src/**/*", "LICENSE-*", "README.md"]
keywords = ["backup", "restic", "deduplication", "encryption", "library"]
license = "Apache-2.0 OR MIT"
publish = true
readme = "README.md"
repository = "https://github.com/rustic-rs/rustic_core"
resolver = "3"
rust-version = { workspace = true }
description = """
rustic_core - library for fast, encrypted, deduplicated backups that powers rustic-rs
"""

[lib]
path = "src/lib.rs"
name = "rustic_core"
test = true
doctest = true
bench = true
doc = true
harness = true

[features]
default = []
cli = ["merge", "clap"]
merge = ["dep:conflate"]
clap = ["dep:clap"]

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--document-private-items", "--generate-link-to-definition"]

[dependencies]
# errors
displaydoc = { workspace = true }
thiserror = { workspace = true }

# macros
derive_more = { version = "2.1.1", features = ["add", "constructor", "display", "from", "deref", "from_str"] }
derive_setters = "0.1.9"

# logging
log = { workspace = true }

# parallelize
crossbeam-channel = "0.5.15"
pariter = "0.6.0"
rayon = "1.11.0"

# crypto
aes256ctr_poly1305aes = { version = "0.2.1", features = ["std"] } # we need std here for error impls
rand = "0.10.0"
scrypt = { version = "0.12.0", default-features = false }

# serialization / packing
binrw = "0.15.0"
hex = { version = "0.4.3", features = ["serde"] }
integer-sqrt = "0.1.5"
rustic_cdc = "0.3.1"
serde = { version = "1.0.228" }
serde-aux = { version = "4.7.0", default-features = false }
serde_derive = "1.0.228"
serde_json = "1.0.149"
serde_with = { version = "3.16.1", features = ["base64"] }

# local source/destination
cached = { version = "1.1.0", default-features = false, features = ["proc_macro"] }
dunce = "1.0.5"
filetime = "0.2.27"
ignore = "0.4.25"
nix = { version = "0.31.1", default-features = false, features = ["user", "fs"] }
path-dedot = "3.1.1"
walkdir = "2.5.0"

# cache
cachedir = "0.3.1"
dirs = "6.0.0"

# cli support
clap = { version = "4.5.57", optional = true, features = ["derive", "env", "wrap_help"] }
conflate = { version = "0.3.3", optional = true }

# vfs support
runtime-format = "0.1.3"

# other dependencies
backon = "1.6.0"
bytes = { workspace = true }
bytesize = "2.3.1"
ecow = "0.3.0"
enum-map = { workspace = true }
enumset = { version = "1.1.10", features = ["serde"] }
gethostname = "1.1.0"
itertools = "0.14.0"
jiff = { version = "0.2.19", features = ["logging", "serde"] }
quick_cache = "0.6.18"
sha2 = "0.11.0"
shell-words = "1.1.1"
smallvec = { version = "1.15.1", features = ["union"] }
strum = { version = "0.28.0", features = ["derive"] }
zstd = "0.13.3"

[target.'cfg(not(any(windows, target_os="openbsd")))'.dependencies]
# for local source/destination
xattr = "1"

[dev-dependencies]
anyhow = { workspace = true }
flate2 = "1.1.9"
globset = "0.4.18"
insta = { version = "1.46.3", features = ["redactions", "ron"] }
mockall = "0.14"
pretty_assertions = "1.4.1"
proptest = { version = "1.10.0", default-features = false, features = ["std"] }
rstest = { workspace = true }
# We need to have rustic_backend here, because the doc-tests in lib.rs of rustic_core
rustic_backend = { workspace = true }
rustic_testing = { workspace = true }
tar = "0.4.44"
tempfile = { workspace = true }
toml = "1.0.3"

[lints]
workspace = true