diff --git a/.travis.yml b/.travis.yml index af16309..6a3e92b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,6 +37,8 @@ matrix: env: TEST_COMMAND=build EXTRA_FLAGS=--no-default-features FEATURES='' - rust: beta env: TEST_COMMAND=build EXTRA_FLAGS=--no-default-features FEATURES='' + - rust: nightly + env: TEST_COMMAND=build EXTRA_FLAGS=--no-default-features FEATURES='alloc' script: - cargo $TEST_COMMAND --features="$FEATURES" $EXTRA_FLAGS diff --git a/Cargo.toml b/Cargo.toml index 500dffb..772eab3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,6 +46,7 @@ version = "0.6" nightly = ["radix_51"] default = ["std"] std = ["rand"] +alloc = [] yolocrypto = [] bench = [] # Radix-51 arithmetic using u128 diff --git a/src/curve.rs b/src/curve.rs index cc1cfc8..59cb0f3 100644 --- a/src/curve.rs +++ b/src/curve.rs @@ -77,8 +77,8 @@ // affine and projective cakes and eat both of them too. #![allow(non_snake_case)] -#[cfg(not(feature = "std"))] -use collections::Vec; +#[cfg(feature = "alloc")] +use alloc::Vec; use core::fmt::Debug; use core::iter::Iterator; @@ -1195,6 +1195,7 @@ pub mod vartime { /// /// A vector of `Scalar`s and a vector of `ExtendedPoints`. It is an /// error to call this function with two vectors of different lengths. + #[cfg(any(feature = "alloc", feature = "std"))] pub fn k_fold_scalar_mult<'a,'b,I,J>(scalars: I, points: J) -> ExtendedPoint where I: IntoIterator, J: IntoIterator { diff --git a/src/lib.rs b/src/lib.rs index 408d7ff..e96b115 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -10,7 +10,7 @@ // - Henry de Valence #![cfg_attr(not(feature = "std"), no_std)] -#![cfg_attr(not(feature = "std"), feature(collections))] +#![cfg_attr(feature = "alloc", feature(alloc))] #![cfg_attr(feature = "nightly", feature(i128_type))] #![cfg_attr(feature = "bench", feature(test))] @@ -58,8 +58,8 @@ extern crate core; #[cfg(feature = "std")] extern crate rand; -#[cfg(not(feature = "std"))] -extern crate collections; +#[cfg(feature = "alloc")] +extern crate alloc; // Modules for low-level operations directly on field elements and curve points.