diff --git a/.travis.yml b/.travis.yml index fef185eb..364d3609 100644 --- a/.travis.yml +++ b/.travis.yml @@ -116,9 +116,10 @@ matrix: - cargo build --target=x86_64-unknown-netbsd # - cargo build --target=x86_64-unknown-redox - cargo build --target=x86_64-fortanix-unknown-sgx - - cargo xbuild --target=x86_64-unknown-uefi - - cargo xbuild --target=x86_64-unknown-hermit - - cargo xbuild --target=x86_64-unknown-l4re-uclibc + - cargo xbuild --target=x86_64-unknown-uefi --no-default-features + - cargo xbuild --target=x86_64-unknown-hermit --no-default-features + - cargo xbuild --target=x86_64-unknown-l4re-uclibc --no-default-features + - cargo xbuild --target=x86_64-uwp-windows-gnu --no-default-features # also test minimum dependency versions are usable - cargo generate-lockfile -Z minimal-versions - cargo build --target=x86_64-sun-solaris @@ -128,10 +129,10 @@ matrix: - cargo build --target=x86_64-unknown-netbsd # - cargo build --target=x86_64-unknown-redox - cargo build --target=x86_64-fortanix-unknown-sgx - - cargo xbuild --target=x86_64-unknown-uefi - - cargo xbuild --target=x86_64-unknown-hermit - - cargo xbuild --target=x86_64-unknown-l4re-uclibc - - cargo xbuild --target=x86_64-uwp-windows-gnu + - cargo xbuild --target=x86_64-unknown-uefi --no-default-features + - cargo xbuild --target=x86_64-unknown-hermit --no-default-features + - cargo xbuild --target=x86_64-unknown-l4re-uclibc --no-default-features + - cargo xbuild --target=x86_64-uwp-windows-gnu --no-default-features # Trust cross-built/emulated targets. We must repeat all non-default values. - name: "Linux (MIPS, big-endian)" diff --git a/Cargo.toml b/Cargo.toml index 2fb7604d..68e99f81 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,6 +36,7 @@ wasm-bindgen = { version = "0.2.29", optional = true } stdweb = { version = "0.4.18", optional = true } [features] +default = ["std"] std = [] # enables dummy implementation for unsupported targets dummy = [] diff --git a/README.md b/README.md index 01bbfb5e..7e121da1 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,15 @@ fn get_random_buf() -> Result<[u8; 32], getrandom::Error> { ## Features -This library is `no_std` for every supported target. However, getting randomness +By default, the `std` feature is enabled, allowing getrandom's +[`Error`](https://docs.rs/getrandom/0.1.10/getrandom/struct.Error.html) +to implement traits like +[`std::error::Error`](https://doc.rust-lang.org/std/error/trait.Error.html). To +use getrandom in a `no_std` environment, the `std` feature must be disabled by +setting `default-features = false` in `Cargo.toml`. Without this feature, this +library is `no_std` for every supported target. + +However, getting randomness usually requires calling some external system API. This means most platforms will require linking against system libraries (i.e. `libc` for Unix, `Advapi32.dll` for Windows, Security framework on iOS, etc...).