Skip to content

Commit

Permalink
Configure group_imports
Browse files Browse the repository at this point in the history
Configure `group_imports = "StdExternalCrate"`.

The benefit of this option is that it increases uniformity in the code
base over the default "Preserve", while saving devs needing to think
about where they place their import statements (for those that do not
use tooling to add them).
  • Loading branch information
tcharding committed Apr 28, 2022
1 parent 2a80b03 commit 3641a42
Show file tree
Hide file tree
Showing 38 changed files with 134 additions and 126 deletions.
3 changes: 2 additions & 1 deletion examples/htlc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@
extern crate bitcoin;
extern crate miniscript;

use std::str::FromStr;

use bitcoin::Network;
use miniscript::descriptor::Wsh;
use miniscript::policy::{Concrete, Liftable};
use miniscript::DescriptorTrait;
use std::str::FromStr;

fn main() {
//HTLC policy with 10:1 odds for happy(co-operative) case compared to uncooperative case
Expand Down
3 changes: 2 additions & 1 deletion examples/parse.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@
extern crate bitcoin;
extern crate miniscript;

use miniscript::{descriptor::DescriptorType, Descriptor, DescriptorTrait};
use std::str::FromStr;

use miniscript::{descriptor::DescriptorType, Descriptor, DescriptorTrait};

fn main() {
let my_descriptor = miniscript::Descriptor::<bitcoin::PublicKey>::from_str(
"wsh(c:pk_k(020202020202020202020202020202020202020202020202020202020202020202))",
Expand Down
5 changes: 3 additions & 2 deletions examples/sign_multisig.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@
extern crate bitcoin;
extern crate miniscript;

use std::collections::HashMap;
use std::str::FromStr;

use bitcoin::blockdata::witness::Witness;
use bitcoin::secp256k1; // secp256k1 re-exported from rust-bitcoin
use miniscript::DescriptorTrait;
use std::collections::HashMap;
use std::str::FromStr;

fn main() {
// Avoid repeatedly typing a pretty-common descriptor type
Expand Down
3 changes: 2 additions & 1 deletion examples/verify_tx.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@
extern crate bitcoin;
extern crate miniscript;

use std::str::FromStr;

use bitcoin::consensus::Decodable;
use bitcoin::util::sighash;
use bitcoin::{secp256k1, TxOut}; // secp256k1 re-exported from rust-bitcoin
use miniscript::interpreter::KeySigPair;
use std::str::FromStr;

fn main() {
// tx `f27eba163c38ad3f34971198687a3f1882b7ec818599ffe469a8440d82261c98`
Expand Down
4 changes: 2 additions & 2 deletions examples/xpub_descriptors.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@

extern crate miniscript;

use std::str::FromStr;

use miniscript::bitcoin::{self, secp256k1};
use miniscript::{Descriptor, DescriptorPublicKey, DescriptorTrait, TranslatePk2};

use std::str::FromStr;
fn main() {
// For deriving from descriptors, we need to provide a secp context
let secp_ctx = secp256k1::Secp256k1::verification_only();
Expand Down
2 changes: 1 addition & 1 deletion rustfmt.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ where_single_line = false
imports_indent = "Block"
imports_layout = "Mixed"
imports_granularity = "Preserve"
group_imports = "Preserve"
group_imports = "StdExternalCrate" # Default "Preserve"
reorder_imports = true
reorder_modules = true
reorder_impl_items = false
Expand Down
1 change: 0 additions & 1 deletion src/descriptor/bare.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
use std::{fmt, str::FromStr};

use bitcoin::{self, blockdata::script, Script};

use expression::{self, FromTree};
use miniscript::context::ScriptContext;
use policy::{semantic, Liftable};
Expand Down
3 changes: 2 additions & 1 deletion src/descriptor/checksum.rs
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,10 @@ pub(super) fn verify_checksum(s: &str) -> Result<&str, Error> {
}
#[cfg(test)]
mod test {
use super::*;
use std::str;

use super::*;

macro_rules! check_expected {
($desc: expr, $checksum: expr) => {
assert_eq!(desc_checksum($desc).unwrap(), $checksum);
Expand Down
5 changes: 2 additions & 3 deletions src/descriptor/key.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ use bitcoin::{
util::bip32,
XOnlyPublicKey, XpubIdentifier,
};

use {MiniscriptKey, ToPublicKey};

/// Single public key without any origin or range information
Expand Down Expand Up @@ -719,11 +718,11 @@ impl MiniscriptKey for DescriptorPublicKey {

#[cfg(test)]
mod test {
use super::{DescriptorKeyParseError, DescriptorPublicKey, DescriptorSecretKey};
use std::str::FromStr;

use bitcoin::secp256k1;

use std::str::FromStr;
use super::{DescriptorKeyParseError, DescriptorPublicKey, DescriptorSecretKey};

#[test]
fn parse_descriptor_key_errors() {
Expand Down
21 changes: 11 additions & 10 deletions src/descriptor/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@ use std::{

use bitcoin::blockdata::witness::Witness;
use bitcoin::{self, secp256k1, Script};

use self::checksum::verify_checksum;
use expression;
use miniscript;
use miniscript::{Legacy, Miniscript, Segwitv0};
Expand All @@ -41,6 +39,8 @@ use {
TranslatePk2,
};

use self::checksum::verify_checksum;

// Directly export from lib.rs, exporting the trait here causes conflicts in this file
pub(crate) mod pretaproot;

Expand Down Expand Up @@ -824,9 +824,10 @@ serde_string_impl_pk!(Descriptor, "a script descriptor");

#[cfg(test)]
mod tests {
use super::checksum::desc_checksum;
use super::tr::Tr;
use super::*;
use std::cmp;
use std::collections::HashMap;
use std::str::FromStr;

use bitcoin::blockdata::opcodes::all::{OP_CLTV, OP_CSV};
use bitcoin::blockdata::script::Instruction;
use bitcoin::blockdata::{opcodes, script};
Expand All @@ -839,13 +840,13 @@ mod tests {
DescriptorPublicKey, DescriptorSecretKey, DescriptorSinglePub, DescriptorXKey,
};
use hex_script;
use std::cmp;
use std::collections::HashMap;
use std::str::FromStr;
use {Descriptor, DummyKey, Error, Miniscript, Satisfier, TranslatePk2};

#[cfg(feature = "compiler")]
use policy;
use {Descriptor, DummyKey, Error, Miniscript, Satisfier, TranslatePk2};

use super::checksum::desc_checksum;
use super::tr::Tr;
use super::*;

type StdDescriptor = Descriptor<PublicKey>;
const TEST_PK: &'static str =
Expand Down
3 changes: 1 addition & 2 deletions src/descriptor/pretaproot.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ use std::{
};

use bitcoin::{self, Script};
use {expression, DescriptorTrait, Error, MiniscriptKey, Satisfier, ToPublicKey};

use super::{checksum::verify_checksum, Bare, Pkh, Sh, Wpkh, Wsh};
use {expression, DescriptorTrait, Error, MiniscriptKey, Satisfier, ToPublicKey};

/// Script descriptor
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
Expand Down Expand Up @@ -240,7 +240,6 @@ serde_string_impl_pk!(PreTaprootDescriptor, "a pre-taproot script descriptor");
// Have the trait in a separate module to avoid conflicts
pub(crate) mod traits {
use bitcoin::Script;

use {
descriptor::{Pkh, Sh, Wpkh, Wsh},
DescriptorTrait, MiniscriptKey, ToPublicKey,
Expand Down
1 change: 0 additions & 1 deletion src/descriptor/segwitv0.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
use std::{fmt, str::FromStr};

use bitcoin::{self, Script};

use expression::{self, FromTree};
use miniscript::context::{ScriptContext, ScriptContextError};
use policy::{semantic, Liftable};
Expand Down
1 change: 0 additions & 1 deletion src/descriptor/sh.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
use std::{fmt, str::FromStr};

use bitcoin::{self, blockdata::script, Script};

use expression::{self, FromTree};
use miniscript::context::ScriptContext;
use policy::{semantic, Liftable};
Expand Down
4 changes: 2 additions & 2 deletions src/descriptor/sortedmulti.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
use std::{fmt, marker::PhantomData, str::FromStr};

use bitcoin::blockdata::script;

use expression;
use miniscript::{
self, context::ScriptContext, decode::Terminal, limits::MAX_PUBKEYS_PER_MULTISIG,
Expand Down Expand Up @@ -240,10 +239,11 @@ impl<Pk: MiniscriptKey, Ctx: ScriptContext> fmt::Display for SortedMultiVec<Pk,

#[cfg(test)]
mod tests {
use super::*;
use bitcoin::secp256k1::PublicKey;
use miniscript::context::Legacy;

use super::*;

#[test]
fn too_many_pubkeys() {
// Arbitrary pubic key.
Expand Down
22 changes: 12 additions & 10 deletions src/descriptor/tr.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
// Tapscript

use policy::semantic::Policy;
use policy::Liftable;
use util::{varint_len, witness_size};
use {DescriptorTrait, ForEach, ForEachKey, Satisfier, ToPublicKey, TranslatePk};
use std::cmp::{self, max};
use std::hash;
use std::sync::{Arc, Mutex};
use std::{fmt, str::FromStr};

use super::checksum::{desc_checksum, verify_checksum};
use bitcoin::blockdata::opcodes;
use bitcoin::util::taproot::{
LeafVersion, TaprootBuilder, TaprootBuilderError, TaprootSpendInfo, TAPROOT_CONTROL_BASE_SIZE,
Expand All @@ -15,13 +14,15 @@ use bitcoin::{self, secp256k1, Script};
use errstr;
use expression::{self, FromTree};
use miniscript::Miniscript;
use std::cmp::{self, max};
use std::hash;
use std::sync::{Arc, Mutex};
use std::{fmt, str::FromStr};
use policy::semantic::Policy;
use policy::Liftable;
use util::{varint_len, witness_size};
use Tap;
use {DescriptorTrait, ForEach, ForEachKey, Satisfier, ToPublicKey, TranslatePk};
use {Error, MiniscriptKey};

use super::checksum::{desc_checksum, verify_checksum};

/// A Taproot Tree representation.
// Hidden leaves are not yet supported in descriptor spec. Conceptually, it should
// be simple to integrate those here, but it is best to wait on core for the exact syntax.
Expand Down Expand Up @@ -748,9 +749,10 @@ where

#[cfg(test)]
mod tests {
use super::*;
use ForEachKey;

use super::*;

#[test]
fn test_for_each() {
let desc = "tr(acc0, {
Expand Down
1 change: 0 additions & 1 deletion src/expression.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ use std::str::FromStr;

use errstr;
use Error;

use MAX_RECURSION_DEPTH;

#[derive(Debug)]
Expand Down
3 changes: 2 additions & 1 deletion src/interpreter/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,11 @@
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
//

use std::{error, fmt};

use bitcoin::hashes::{hash160, hex::ToHex};
use bitcoin::util::taproot;
use bitcoin::{self, secp256k1};
use std::{error, fmt};

use super::BitcoinKey;

Expand Down
11 changes: 6 additions & 5 deletions src/interpreter/inner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,11 @@ use bitcoin;
use bitcoin::blockdata::witness::Witness;
use bitcoin::hashes::{hash160, sha256, Hash};
use bitcoin::util::taproot::{ControlBlock, TAPROOT_ANNEX_PREFIX};

use miniscript::context::{NoChecks, ScriptContext};
use {BareCtx, Legacy, Segwitv0, Tap};
use {Miniscript, MiniscriptKey};

use super::{stack, BitcoinKey, Error, Stack, TypedHash160};
use miniscript::context::{NoChecks, ScriptContext};
use {Miniscript, MiniscriptKey};

/// Attempts to parse a slice as a Bitcoin public key, checking compressedness
/// if asked to, but otherwise dropping it
Expand Down Expand Up @@ -399,12 +398,14 @@ impl<Ctx: ScriptContext> ToNoChecks for Miniscript<bitcoin::XOnlyPublicKey, Ctx>
#[cfg(test)]
mod tests {

use super::*;
use std::str::FromStr;

use bitcoin::blockdata::script;
use bitcoin::hashes::hex::FromHex;
use bitcoin::hashes::{hash160, sha256, Hash};
use bitcoin::{self, Script};
use std::str::FromStr;

use super::*;

struct KeyTestData {
pk_spk: bitcoin::Script,
Expand Down
9 changes: 5 additions & 4 deletions src/interpreter/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@
//! assuming that the spent coin was descriptor controlled.
//!

use bitcoin::blockdata::witness::Witness;
use bitcoin::util::{sighash, taproot};
use std::borrow::Borrow;
use std::fmt;
use std::str::FromStr;

use bitcoin::blockdata::witness::Witness;
use bitcoin::hashes::{hash160, ripemd160, sha256, sha256d};
use bitcoin::util::{sighash, taproot};
use bitcoin::{self, secp256k1, TxOut};
use miniscript::context::NoChecks;
use miniscript::ScriptContext;
Expand Down Expand Up @@ -1030,8 +1030,6 @@ fn verify_sersig<'txin>(
#[cfg(test)]
mod tests {

use super::inner::ToNoChecks;
use super::*;
use bitcoin;
use bitcoin::hashes::{hash160, ripemd160, sha256, sha256d, Hash};
use bitcoin::secp256k1::{self, Secp256k1};
Expand All @@ -1040,6 +1038,9 @@ mod tests {
use MiniscriptKey;
use ToPublicKey;

use super::inner::ToNoChecks;
use super::*;

fn setup_keys_sigs(
n: usize,
) -> (
Expand Down
4 changes: 1 addition & 3 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -121,16 +121,14 @@ use std::{error, fmt, hash, str};

use bitcoin::blockdata::{opcodes, script};
use bitcoin::hashes::{hash160, sha256, Hash};

pub use descriptor::pretaproot::{traits::PreTaprootDescriptorTrait, PreTaprootDescriptor};
pub use descriptor::{Descriptor, DescriptorPublicKey, DescriptorTrait};
pub use interpreter::Interpreter;
pub use miniscript::context::{BareCtx, Legacy, ScriptContext, Segwitv0, Tap};
pub use miniscript::decode::Terminal;
pub use miniscript::satisfy::{Preimage32, Satisfier};
pub use miniscript::Miniscript;

pub use descriptor::pretaproot::{traits::PreTaprootDescriptorTrait, PreTaprootDescriptor};

///Public key trait which can be converted to Hash type
pub trait MiniscriptKey: Clone + Eq + Ord + fmt::Debug + fmt::Display + hash::Hash {
/// Returns true if the pubkey is uncompressed. Defaults to `false`.
Expand Down
5 changes: 3 additions & 2 deletions src/miniscript/analyzable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,11 @@
//! Tools for determining whether the guarantees offered by the library
//! actually hold.

use error;
use miniscript::iter::PkPkh;
use std::collections::HashSet;
use std::fmt;

use error;
use miniscript::iter::PkPkh;
use {Miniscript, MiniscriptKey, ScriptContext};
/// Possible reasons Miniscript guarantees can fail
/// We currently mark Miniscript as Non-Analyzable if
Expand Down
Loading

0 comments on commit 3641a42

Please sign in to comment.