Use () to indicate a missing blockchain
So that: 1. There are no runtime errors 2. There less type annotations needed 3. Less traits and stuff to document
This commit is contained in:
@@ -79,29 +79,9 @@ pub enum Capability {
|
||||
AccurateFees,
|
||||
}
|
||||
|
||||
/// Marker trait for a blockchain backend
|
||||
///
|
||||
/// This is a marker trait for blockchain types. It is automatically implemented for types that
|
||||
/// implement [`Blockchain`], so as a user of the library you won't have to implement this
|
||||
/// manually.
|
||||
///
|
||||
/// Users of the library will probably never have to implement this trait manually, but they
|
||||
/// could still need to import it to define types and structs with generics;
|
||||
/// Implementing only the marker trait is pointless, since [`OfflineBlockchain`]
|
||||
/// already does that, and whenever [`Blockchain`] is implemented, the marker trait is also
|
||||
/// automatically implemented by the library.
|
||||
pub trait BlockchainMarker {}
|
||||
|
||||
/// The [`BlockchainMarker`] marker trait is automatically implemented for [`Blockchain`] types
|
||||
impl<T: Blockchain> BlockchainMarker for T {}
|
||||
|
||||
/// Type that only implements [`BlockchainMarker`] and is always "offline"
|
||||
pub struct OfflineBlockchain;
|
||||
impl BlockchainMarker for OfflineBlockchain {}
|
||||
|
||||
/// Trait that defines the actions that must be supported by a blockchain backend
|
||||
#[maybe_async]
|
||||
pub trait Blockchain: BlockchainMarker {
|
||||
pub trait Blockchain {
|
||||
/// Return the set of [`Capability`] supported by this backend
|
||||
fn get_capabilities(&self) -> HashSet<Capability>;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user