Enum miniscript::miniscript::decode::Terminal   [−][src]
pub enum Terminal<Pk: MiniscriptKey, Ctx: ScriptContext> {}Show 26 variants
True, False, PkK(Pk), PkH(Pk::Hash), After(u32), Older(u32), Sha256(Hash), Hash256(Hash), Ripemd160(Hash), Hash160(Hash), Alt(Arc<Miniscript<Pk, Ctx>>), Swap(Arc<Miniscript<Pk, Ctx>>), Check(Arc<Miniscript<Pk, Ctx>>), DupIf(Arc<Miniscript<Pk, Ctx>>), Verify(Arc<Miniscript<Pk, Ctx>>), NonZero(Arc<Miniscript<Pk, Ctx>>), ZeroNotEqual(Arc<Miniscript<Pk, Ctx>>), AndV(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>), AndB(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>), AndOr(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>), OrB(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>), OrD(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>), OrC(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>), OrI(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>), Thresh(usize, Vec<Arc<Miniscript<Pk, Ctx>>>), Multi(usize, Vec<Pk>),
Expand description
All AST elements
Variants
1
0
<key>
DUP HASH160 <keyhash> EQUALVERIFY
Tuple Fields of PkH
0: Pk::Hashn CHECKLOCKTIMEVERIFY
Tuple Fields of After
0: u32n CHECKSEQUENCEVERIFY
Tuple Fields of Older
0: u32SIZE 32 EQUALVERIFY SHA256 <hash> EQUAL
SIZE 32 EQUALVERIFY HASH256 <hash> EQUAL
SIZE 32 EQUALVERIFY RIPEMD160 <hash> EQUAL
SIZE 32 EQUALVERIFY HASH160 <hash> EQUAL
TOALTSTACK [E] FROMALTSTACK
Tuple Fields of Alt
0: Arc<Miniscript<Pk, Ctx>>SWAP [E1]
Tuple Fields of Swap
0: Arc<Miniscript<Pk, Ctx>>[Kt]/[Ke] CHECKSIG
Tuple Fields of Check
0: Arc<Miniscript<Pk, Ctx>>DUP IF [V] ENDIF
Tuple Fields of DupIf
0: Arc<Miniscript<Pk, Ctx>>[T] VERIFY
Tuple Fields of Verify
0: Arc<Miniscript<Pk, Ctx>>SIZE 0NOTEQUAL IF Fn ENDIF
Tuple Fields of NonZero
0: Arc<Miniscript<Pk, Ctx>>[X] 0NOTEQUAL
Tuple Fields of ZeroNotEqual
0: Arc<Miniscript<Pk, Ctx>>[V] [T]/[V]/[F]/[Kt]
Tuple Fields of AndV
0: Arc<Miniscript<Pk, Ctx>>1: Arc<Miniscript<Pk, Ctx>>[E] [W] BOOLAND
Tuple Fields of AndB
0: Arc<Miniscript<Pk, Ctx>>1: Arc<Miniscript<Pk, Ctx>>[various] NOTIF [various] ELSE [various] ENDIF
Tuple Fields of AndOr
[E] [W] BOOLOR
Tuple Fields of OrB
0: Arc<Miniscript<Pk, Ctx>>1: Arc<Miniscript<Pk, Ctx>>[E] IFDUP NOTIF [T]/[E] ENDIF
Tuple Fields of OrD
0: Arc<Miniscript<Pk, Ctx>>1: Arc<Miniscript<Pk, Ctx>>[E] NOTIF [V] ENDIF
Tuple Fields of OrC
0: Arc<Miniscript<Pk, Ctx>>1: Arc<Miniscript<Pk, Ctx>>IF [various] ELSE [various] ENDIF
Tuple Fields of OrI
0: Arc<Miniscript<Pk, Ctx>>1: Arc<Miniscript<Pk, Ctx>>[E] ([W] ADD)* k EQUAL
Tuple Fields of Thresh
0: usize1: Vec<Arc<Miniscript<Pk, Ctx>>>k (
Implementations
Encode the element as a fragment of Bitcoin Script. The inverse
function, from Script to an AST element, is implemented in the
parse module.
Size, in bytes of the script-pubkey. If this Miniscript is used outside of segwit (e.g. in a bare or P2SH descriptor), this quantity should be multiplied by 4 to compute the weight.
In general, it is not recommended to use this function directly, but
to instead call the corresponding function on a Descriptor, which
will handle the segwit/non-segwit technicalities for you.
Trait Implementations
impl<Pk: Clone + MiniscriptKey, Ctx: Clone + ScriptContext> Clone for Terminal<Pk, Ctx> where
    Pk::Hash: Clone, 
impl<Pk: Clone + MiniscriptKey, Ctx: Clone + ScriptContext> Clone for Terminal<Pk, Ctx> where
    Pk::Hash: Clone, 
Run a predicate on every key in the descriptor, returning whether the predicate returned true for every key Read more
impl<Pk: Hash + MiniscriptKey, Ctx: Hash + ScriptContext> Hash for Terminal<Pk, Ctx> where
    Pk::Hash: Hash, 
impl<Pk: Hash + MiniscriptKey, Ctx: Hash + ScriptContext> Hash for Terminal<Pk, Ctx> where
    Pk::Hash: Hash, 
impl<Pk: Ord + MiniscriptKey, Ctx: Ord + ScriptContext> Ord for Terminal<Pk, Ctx> where
    Pk::Hash: Ord, 
impl<Pk: Ord + MiniscriptKey, Ctx: Ord + ScriptContext> Ord for Terminal<Pk, Ctx> where
    Pk::Hash: Ord, 
impl<Pk: PartialEq + MiniscriptKey, Ctx: PartialEq + ScriptContext> PartialEq<Terminal<Pk, Ctx>> for Terminal<Pk, Ctx> where
    Pk::Hash: PartialEq, 
impl<Pk: PartialEq + MiniscriptKey, Ctx: PartialEq + ScriptContext> PartialEq<Terminal<Pk, Ctx>> for Terminal<Pk, Ctx> where
    Pk::Hash: PartialEq, 
impl<Pk: PartialOrd + MiniscriptKey, Ctx: PartialOrd + ScriptContext> PartialOrd<Terminal<Pk, Ctx>> for Terminal<Pk, Ctx> where
    Pk::Hash: PartialOrd, 
impl<Pk: PartialOrd + MiniscriptKey, Ctx: PartialOrd + ScriptContext> PartialOrd<Terminal<Pk, Ctx>> for Terminal<Pk, Ctx> where
    Pk::Hash: PartialOrd, 
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
impl<Pk: MiniscriptKey, Q: MiniscriptKey, Ctx: ScriptContext> TranslatePk<Pk, Q> for Terminal<Pk, Ctx>
impl<Pk: MiniscriptKey, Q: MiniscriptKey, Ctx: ScriptContext> TranslatePk<Pk, Q> for Terminal<Pk, Ctx>
Convert an AST element with one public key type to one of another public key type .This will panic while converting to Segwit Miniscript using uncompressed public keys
impl<Pk: Eq + MiniscriptKey, Ctx: Eq + ScriptContext> Eq for Terminal<Pk, Ctx> where
    Pk::Hash: Eq, 
Auto Trait Implementations
impl<Pk, Ctx> RefUnwindSafe for Terminal<Pk, Ctx> where
    Ctx: RefUnwindSafe,
    Pk: RefUnwindSafe,
    <Pk as MiniscriptKey>::Hash: RefUnwindSafe, 
impl<Pk, Ctx> Send for Terminal<Pk, Ctx> where
    Ctx: Send + Sync,
    Pk: Send + Sync,
    <Pk as MiniscriptKey>::Hash: Send + Sync, 
impl<Pk, Ctx> Sync for Terminal<Pk, Ctx> where
    Ctx: Send + Sync,
    Pk: Send + Sync,
    <Pk as MiniscriptKey>::Hash: Send + Sync, 
impl<Pk, Ctx> UnwindSafe for Terminal<Pk, Ctx> where
    Ctx: RefUnwindSafe,
    Pk: RefUnwindSafe + UnwindSafe,
    <Pk as MiniscriptKey>::Hash: RefUnwindSafe + UnwindSafe, 
Blanket Implementations
Mutably borrows from an owned value. Read more
impl<P, Q, T> TranslatePk1<P, Q> for T where
    P: MiniscriptKey,
    Q: MiniscriptKey<Hash = <P as MiniscriptKey>::Hash>,
    T: TranslatePk<P, Q>, 
impl<P, Q, T> TranslatePk1<P, Q> for T where
    P: MiniscriptKey,
    Q: MiniscriptKey<Hash = <P as MiniscriptKey>::Hash>,
    T: TranslatePk<P, Q>, 
fn translate_pk1<Fpk, E>(
    &self, 
    translatefpk: Fpk
) -> Result<<Self as TranslatePk<P, Q>>::Output, E> where
    Fpk: FnMut(&P) -> Result<Q, E>, 
fn translate_pk1<Fpk, E>(
    &self, 
    translatefpk: Fpk
) -> Result<<Self as TranslatePk<P, Q>>::Output, E> where
    Fpk: FnMut(&P) -> Result<Q, E>, 
Translate a struct from one generic to another where the translation for Pk is provided by translatefpk Read more
fn translate_pk1_infallible<Fpk: FnMut(&P) -> Q>(
    &self, 
    translatefpk: Fpk
) -> <Self as TranslatePk<P, Q>>::Output
fn translate_pk1_infallible<Fpk: FnMut(&P) -> Q>(
    &self, 
    translatefpk: Fpk
) -> <Self as TranslatePk<P, Q>>::Output
Translate a struct from one generic to another where the translation for Pk is provided by translatefpk Read more
impl<P, Q, T> TranslatePk2<P, Q> for T where
    P: MiniscriptKey<Hash = P>,
    Q: MiniscriptKey,
    T: TranslatePk<P, Q>, 
impl<P, Q, T> TranslatePk2<P, Q> for T where
    P: MiniscriptKey<Hash = P>,
    Q: MiniscriptKey,
    T: TranslatePk<P, Q>, 
fn translate_pk2<Fpk: Fn(&P) -> Result<Q, E>, E>(
    &self, 
    translatefpk: Fpk
) -> Result<<Self as TranslatePk<P, Q>>::Output, E>
fn translate_pk2<Fpk: Fn(&P) -> Result<Q, E>, E>(
    &self, 
    translatefpk: Fpk
) -> Result<<Self as TranslatePk<P, Q>>::Output, E>
Translate a struct from one generic to another where the translation for Pk is provided by translatefpk Read more
fn translate_pk2_infallible<Fpk: Fn(&P) -> Q>(
    &self, 
    translatefpk: Fpk
) -> <Self as TranslatePk<P, Q>>::Output
fn translate_pk2_infallible<Fpk: Fn(&P) -> Q>(
    &self, 
    translatefpk: Fpk
) -> <Self as TranslatePk<P, Q>>::Output
Translate a struct from one generic to another where the translation for Pk is provided by translatefpk Read more
impl<P, Q, T> TranslatePk3<P, Q> for T where
    P: MiniscriptKey + ToPublicKey,
    Q: MiniscriptKey<Hash = Hash>,
    T: TranslatePk<P, Q>, 
impl<P, Q, T> TranslatePk3<P, Q> for T where
    P: MiniscriptKey + ToPublicKey,
    Q: MiniscriptKey<Hash = Hash>,
    T: TranslatePk<P, Q>, 
fn translate_pk3<Fpk, E>(
    &self, 
    translatefpk: Fpk
) -> Result<<Self as TranslatePk<P, Q>>::Output, E> where
    Fpk: FnMut(&P) -> Result<Q, E>, 
fn translate_pk3<Fpk, E>(
    &self, 
    translatefpk: Fpk
) -> Result<<Self as TranslatePk<P, Q>>::Output, E> where
    Fpk: FnMut(&P) -> Result<Q, E>, 
Translate a struct from one generic to another where the translation for Pk is provided by translatefpk Read more
fn translate_pk3_infallible<Fpk: FnMut(&P) -> Q>(
    &self, 
    translatefpk: Fpk
) -> <Self as TranslatePk<P, Q>>::Output
fn translate_pk3_infallible<Fpk: FnMut(&P) -> Q>(
    &self, 
    translatefpk: Fpk
) -> <Self as TranslatePk<P, Q>>::Output
Translate a struct from one generic to another where the translation for Pk is provided by translatefpk Read more