diff --git a/.travis.yml b/.travis.yml index dbb33363f..c8a9b1059 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,19 +11,37 @@ matrix: - rust: nightly before_script: - rustup component add rustfmt-preview + - rustup target add wasm32-unknown-unknown script: - cargo fmt --all -- --check - cargo test --features "serde std v1 v3 v4 v5" - cargo bench --features "serde std v1 v3 v4 v5" + - cargo build --target wasm32-unknown-unknown --features "v3 stdweb" + - cargo build --target wasm32-unknown-unknown --features "v4 stdweb" + - cargo build --target wasm32-unknown-unknown --features "v5 stdweb" + - cargo build --target wasm32-unknown-unknown --features "v3 wasm-bindgen" + - cargo build --target wasm32-unknown-unknown --features "v4 wasm-bindgen" + - cargo build --target wasm32-unknown-unknown --features "v5 wasm-bindgen" - os: linux rust: nightly script: - cargo test --features "const_fn" + - rust: beta + before_script: + - rustup target add wasm32-unknown-unknown + script: + - cargo build --target wasm32-unknown-unknown --features "v3 wasm-bindgen" + - cargo build --target wasm32-unknown-unknown --features "v4 wasm-bindgen" + - cargo build --target wasm32-unknown-unknown --features "v5 wasm-bindgen" - rust: stable before_script: - rustup component add clippy-preview + - rustup target add wasm32-unknown-unknown script: - cargo clippy --features "u128 v1 v3 v4 v5 slog" + - cargo build --target wasm32-unknown-unknown --features "v3 wasm-bindgen" + - cargo build --target wasm32-unknown-unknown --features "v4 wasm-bindgen" + - cargo build --target wasm32-unknown-unknown --features "v5 wasm-bindgen" - rust: 1.22.0 script: - cargo test --features "serde std v4" diff --git a/Cargo.toml b/Cargo.toml index db3146149..a58b3349b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,7 +38,7 @@ version = "0.5" [dependencies.rand] optional = true -version = "0.5" +version = "0.6" [dependencies.serde] default-features = false @@ -77,6 +77,8 @@ v1 = [] v3 = ["md5", "rand"] v4 = ["rand"] v5 = ["sha1", "rand"] +stdweb = ["rand/stdweb"] +wasm-bindgen = ["rand/wasm-bindgen"] # since rust 1.26.0 u128 = ["byteorder"] diff --git a/src/lib.rs b/src/lib.rs index 27e92b89c..4685ec5a0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -43,6 +43,14 @@ //! * `serde` - adds the ability to serialize and deserialize a `Uuid` using the //! `serde` crate. //! +//! You need to enable one of the following Cargo features together with +//! `v3`, `v4` or `v5` feature if you're targeting `wasm32` architecture: +//! +//! * `stdweb` - enables support for `OsRng` on `wasm32-unknown-unknown` via +//! `stdweb` combined with `cargo-web` +//! * `wasm-bindgen` - `wasm-bindgen` enables support for `OsRng` on +//! `wasm32-unknown-unknown` via [`wasm-bindgen`] +//! //! By default, `uuid` can be depended on with: //! //! ```toml @@ -103,6 +111,8 @@ //! //! * [Wikipedia: Universally Unique Identifier]( http://en.wikipedia.org/wiki/Universally_unique_identifier) //! * [RFC4122: A Universally Unique IDentifier (UUID) URN Namespace]( http://tools.ietf.org/html/rfc4122) +//! +//! [`wasm-bindgen`]: https://github.com/rustwasm/wasm-bindgen #![cfg_attr(not(feature = "std"), no_std)] #![cfg_attr(feature = "const_fn", feature(const_fn))] @@ -160,11 +170,38 @@ mod std_support; mod test_util; #[cfg(feature = "u128")] mod u128_support; -#[cfg(feature = "v3")] +#[cfg(all( + feature = "v3", + any( + not(target_arch = "wasm32"), + all( + target_arch = "wasm32", + any(feature = "stdweb", feature = "wasm-bindgen") + ) + ) +))] mod v3; -#[cfg(feature = "v4")] +#[cfg(all( + feature = "v4", + any( + not(target_arch = "wasm32"), + all( + target_arch = "wasm32", + any(feature = "stdweb", feature = "wasm-bindgen") + ) + ) +))] mod v4; -#[cfg(feature = "v5")] +#[cfg(all( + feature = "v5", + any( + not(target_arch = "wasm32"), + all( + target_arch = "wasm32", + any(feature = "stdweb", feature = "wasm-bindgen") + ) + ) +))] mod v5; #[cfg(all(windows, feature = "winapi"))] mod winapi_support;