Add rand-std feature

Currently we enable "secp256k1/rand-std" in the "rand" feature, this is
incorrect because it means "rand" implies "std" which it does not.

Add a "rand-std" feature that turns on "seck256k1/rand-std" and make the
"rand" feature turn on "seck256k1/rand".
This commit is contained in:
Tobin C. Harding 2022-11-15 04:41:56 +11:00
parent 7fee6239e1
commit f71335f971
3 changed files with 13 additions and 13 deletions

View File

@ -15,7 +15,8 @@ edition = "2018"
# Please don't forget to add relevant features to docs.rs below # Please don't forget to add relevant features to docs.rs below
[features] [features]
default = [ "std", "secp-recovery" ] default = [ "std", "secp-recovery" ]
rand = ["secp256k1/rand-std"] rand-std = ["secp256k1/rand-std"]
rand = ["secp256k1/rand"]
serde = ["actual-serde", "bitcoin_hashes/serde", "secp256k1/serde"] serde = ["actual-serde", "bitcoin_hashes/serde", "secp256k1/serde"]
secp-lowmemory = ["secp256k1/lowmemory"] secp-lowmemory = ["secp256k1/lowmemory"]
secp-recovery = ["secp256k1/recovery"] secp-recovery = ["secp256k1/recovery"]

View File

@ -8,24 +8,23 @@
//! # Example: creating a new address from a randomly-generated key pair //! # Example: creating a new address from a randomly-generated key pair
//! //!
//! ```rust //! ```rust
//! use bitcoin::network::constants::Network; //! # #[cfg(feature = "rand-std")] {
//! use bitcoin::address::Address; //! use bitcoin::{Address, PublicKey, Network};
//! use bitcoin::PublicKey; //! use bitcoin::secp256k1::{rand, Secp256k1};
//! use bitcoin::secp256k1::Secp256k1;
//! use bitcoin::secp256k1::rand::thread_rng;
//! //!
//! // Generate random key pair. //! // Generate random key pair.
//! let s = Secp256k1::new(); //! let s = Secp256k1::new();
//! let public_key = PublicKey::new(s.generate_keypair(&mut thread_rng()).1); //! let public_key = PublicKey::new(s.generate_keypair(&mut rand::thread_rng()).1);
//! //!
//! // Generate pay-to-pubkey-hash address. //! // Generate pay-to-pubkey-hash address.
//! let address = Address::p2pkh(&public_key, Network::Bitcoin); //! let address = Address::p2pkh(&public_key, Network::Bitcoin);
//! # }
//! ``` //! ```
//! //!
//! # Note: creating a new address requires the rand feature flag //! # Note: creating a new address requires the rand-std feature flag
//! //!
//! ```toml //! ```toml
//! bitcoin = { version = "...", features = ["rand"] } //! bitcoin = { version = "...", features = ["rand-std"] }
//! ``` //! ```
use core::convert::TryFrom; use core::convert::TryFrom;

View File

@ -887,7 +887,7 @@ mod tests {
use crate::hash_types::Txid; use crate::hash_types::Txid;
use secp256k1::{Secp256k1, self}; use secp256k1::{Secp256k1, self};
#[cfg(feature = "rand")] #[cfg(feature = "rand-std")]
use secp256k1::{All, SecretKey}; use secp256k1::{All, SecretKey};
use crate::blockdata::script::ScriptBuf; use crate::blockdata::script::ScriptBuf;
@ -1685,7 +1685,7 @@ mod tests {
assert_eq!(psbt1, psbt2); assert_eq!(psbt1, psbt2);
} }
#[cfg(feature = "rand")] #[cfg(feature = "rand-std")]
fn gen_keys() -> (PrivateKey, PublicKey, Secp256k1<All>) { fn gen_keys() -> (PrivateKey, PublicKey, Secp256k1<All>) {
use secp256k1::rand::thread_rng; use secp256k1::rand::thread_rng;
@ -1699,7 +1699,7 @@ mod tests {
} }
#[test] #[test]
#[cfg(feature = "rand")] #[cfg(feature = "rand-std")]
fn get_key_btree_map() { fn get_key_btree_map() {
let (priv_key, pk, secp) = gen_keys(); let (priv_key, pk, secp) = gen_keys();
@ -1811,7 +1811,7 @@ mod tests {
} }
#[test] #[test]
#[cfg(feature = "rand")] #[cfg(feature = "rand-std")]
fn sign_psbt() { fn sign_psbt() {
use crate::WPubkeyHash; use crate::WPubkeyHash;
use crate::bip32::{Fingerprint, DerivationPath}; use crate::bip32::{Fingerprint, DerivationPath};