# 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 believe there's an error in this file please file an
# issue against the rust-lang/cargo repository. If you're
# editing this file be aware that the upstream Cargo.toml
# will likely look very different (and much more reasonable)

[package]
name = "rand_os"
version = "0.1.2"
authors = ["The Rand Project Developers"]
description = "OS backed Random Number Generator"
homepage = "https://crates.io/crates/rand_os"
documentation = "https://docs.rs/rand_os"
readme = "README.md"
keywords = ["random", "rng", "os"]
license = "MIT/Apache-2.0"
repository = "https://github.com/rust-random/rand"
[dependencies.log]
version = "0.4"
optional = true

[dependencies.rand_core]
version = "0.4"
features = ["std"]
[target."cfg(target_env = \"sgx\")".dependencies.rdrand]
version = "0.4.0"
[target."cfg(target_os = \"cloudabi\")".dependencies.cloudabi]
version = "0.0.3"
[target."cfg(target_os = \"fuchsia\")".dependencies.fuchsia-cprng]
version = "0.1.0"
[target."cfg(unix)".dependencies.libc]
version = "0.2"
[target."cfg(windows)".dependencies.winapi]
version = "0.3"
features = ["minwindef", "ntsecapi", "winnt"]
[target.wasm32-unknown-unknown.dependencies.stdweb]
version = "0.4"
optional = true

[target.wasm32-unknown-unknown.dependencies.wasm-bindgen]
version = "0.2.12"
optional = true
[badges.appveyor]
repository = "rust-random/rand"

[badges.travis-ci]
repository = "rust-random/rand"
