[examples_redesign] Introduce example_cli package

This is the equivalent of `keychain_tracker_example_cli` that works with
the redesigned structures.
This commit is contained in:
志宇
2023-05-12 16:17:17 +08:00
parent 2e3cee4bd0
commit f55974a64b
8 changed files with 819 additions and 4 deletions

View File

@@ -16,6 +16,13 @@ pub enum ObservedAs<A> {
Unconfirmed(u64),
}
impl<A> ObservedAs<A> {
/// Returns whether [`ObservedAs`] is confirmed or not.
pub fn is_confirmed(&self) -> bool {
matches!(self, Self::Confirmed(_))
}
}
impl<A: Clone> ObservedAs<&A> {
pub fn cloned(self) -> ObservedAs<A> {
match self {

View File

@@ -19,4 +19,7 @@ pub trait ChainOracle {
block: BlockId,
chain_tip: BlockId,
) -> Result<Option<bool>, Self::Error>;
/// Get the best chain's chain tip.
fn get_chain_tip(&self) -> Result<Option<BlockId>, Self::Error>;
}

View File

@@ -203,6 +203,15 @@ impl<A: Anchor, IA: Append> Append for IndexedAdditions<A, IA> {
}
}
impl<A, IA: Default> From<Additions<A>> for IndexedAdditions<A, IA> {
fn from(graph_additions: Additions<A>) -> Self {
Self {
graph_additions,
..Default::default()
}
}
}
/// Represents a structure that can index transaction data.
pub trait Indexer {
/// The resultant "additions" when new transaction data is indexed.

View File

@@ -34,6 +34,10 @@ impl ChainOracle for LocalChain {
},
)
}
fn get_chain_tip(&self) -> Result<Option<BlockId>, Self::Error> {
Ok(self.tip())
}
}
impl AsRef<BTreeMap<u32, BlockHash>> for LocalChain {