# 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]
edition = "2018"
rust-version = "1.36"
name = "fastrand"
version = "2.1.0"
authors = ["Stjepan Glavina <stjepang@gmail.com>"]
exclude = ["/.*"]
description = "A simple and fast random number generator"
readme = "README.md"
keywords = [
    "simple",
    "fast",
    "rand",
    "random",
    "wyrand",
]
categories = ["algorithms"]
license = "Apache-2.0 OR MIT"
repository = "https://github.com/smol-rs/fastrand"

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

[dev-dependencies.getrandom]
version = "0.2"

[dev-dependencies.rand]
version = "0.8"

[dev-dependencies.wyhash]
version = "0.5"

[features]
alloc = []
default = ["std"]
js = [
    "std",
    "getrandom",
]
std = ["alloc"]

[target."cfg(all(any(target_arch = \"wasm32\", target_arch = \"wasm64\"), target_os = \"unknown\"))".dependencies.getrandom]
version = "0.2"
features = ["js"]
optional = true

[target."cfg(all(any(target_arch = \"wasm32\", target_arch = \"wasm64\"), target_os = \"unknown\"))".dev-dependencies.getrandom]
version = "0.2"
features = ["js"]

[target."cfg(all(any(target_arch = \"wasm32\", target_arch = \"wasm64\"), target_os = \"unknown\"))".dev-dependencies.wasm-bindgen-test]
version = "0.3"
