[package] name = "memberlist-core" version = "0.2.1" edition.workspace = true license.workspace = true repository.workspace = true homepage.workspace = true readme.workspace = true rust-version.workspace = true keywords.workspace = true categories.workspace = true description = "A highly customable, adaptable, async runtime agnostic Gossip protocol which helps manage cluster membership and member failure detection." [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] [features] default = ["metrics"] metrics = ["dep:metrics", "memberlist-types/metrics"] encryption = ["memberlist-types/encryption"] serde = [ "dep:serde", "bytes/serde", "base64", "nodecraft/serde", "humantime-serde", "memberlist-types/serde", ] rkyv = ["dep:rkyv", "nodecraft/rkyv", "memberlist-types/rkyv"] # expose all tests fn for users who want to use other runtime # see memberlist-wasm for more examples about how to use those tests fn test = ["tracing-subscriber", "pnet"] [target.'cfg(target_family = "wasm")'.dependencies] getrandom = { version = "0.2", features = ["js"] } once_cell = "1.17" [target.'cfg(not(any(target_family = "wasm", windows)))'.dependencies] rustix = { version = "0.38", features = ["system"] } [target.'cfg(windows)'.dependencies] hostname = "0.3" [dependencies] auto_impl.workspace = true atomic_refcell.workspace = true agnostic-lite.workspace = true async-channel.workspace = true async-lock.workspace = true bytes.workspace = true byteorder.workspace = true derive_more.workspace = true either = "1" futures.workspace = true nodecraft.workspace = true transformable = { workspace = true, features = ["bytes", "smol_str"] } paste.workspace = true parking_lot = "0.12" pin-project.workspace = true rand = "0.8" scopeguard.workspace = true smol_str.workspace = true smallvec.workspace = true memberlist-types.workspace = true thiserror.workspace = true tracing.workspace = true viewit.workspace = true base64 = { version = "0.22", optional = true } # rkyv feature rkyv = { version = "0.7", features = [ "validation", "bytes", "smol_str", ], optional = true } # serde feature serde = { workspace = true, optional = true } humantime-serde = { workspace = true, optional = true } # test feature tracing-subscriber = { version = "0.3", optional = true, features = [ "env-filter", "tracing-log", ] } pnet = { version = "0.34", optional = true } # metrics feature metrics = { workspace = true, optional = true } [dev-dependencies] tracing-subscriber = { version = "0.3", features = [ "env-filter", "tracing-log", ] } pnet = "0.34" agnostic = { workspace = true, features = ["net", "tokio"] } rand = "0.8" tokio = { version = "1", features = ["full"] } tokio-util = { version = "0.7", features = ["compat"] } parking_lot = "0.12"