# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
rust-version = "1.38"
name = "spin"
version = "0.9.8"
authors = [
    "Mathijs van de Nes <git@mathijs.vd-nes.nl>",
    "John Ericson <git@JohnEricson.me>",
    "Joshua Barretto <joshua.s.barretto@gmail.com>",
]
description = "Spin-based synchronization primitives"
readme = "README.md"
keywords = [
    "spinlock",
    "mutex",
    "rwlock",
]
license = "MIT"
repository = "https://github.com/mvdnes/spin-rs.git"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
    "--cfg",
    "docsrs",
]

[[bench]]
name = "mutex"
harness = false
required-features = ["ticket_mutex"]

[dependencies.lock_api_crate]
version = "0.4"
optional = true
package = "lock_api"

[dependencies.portable-atomic]
version = "1"
optional = true
default-features = false

[dev-dependencies.criterion]
version = "0.4"

[features]
barrier = ["mutex"]
default = [
    "lock_api",
    "mutex",
    "spin_mutex",
    "rwlock",
    "once",
    "lazy",
    "barrier",
]
fair_mutex = ["mutex"]
lazy = ["once"]
lock_api = ["lock_api_crate"]
mutex = []
once = []
portable_atomic = ["portable-atomic"]
rwlock = []
spin_mutex = ["mutex"]
std = []
ticket_mutex = ["mutex"]
use_ticket_mutex = [
    "mutex",
    "ticket_mutex",
]
