From 32c23aae4492a07f9f68d16115dd9d935ab5c3e6 Mon Sep 17 00:00:00 2001 From: jbearer Date: Tue, 6 Feb 2024 17:34:33 +0000 Subject: [PATCH] deploy: 81e3a98efb2a35f7fe2771f3becbd16d054f8095 --- hotshot_query_service/all.html | 2 +- .../availability/enum.BlockId.html | 7 +- .../availability/enum.Error.html | 22 +- .../availability/enum.Fetch.html | 11 +- .../availability/fn.define_api.html | 2 +- hotshot_query_service/availability/index.html | 2 +- .../availability/struct.CustomSnafu.html | 10 +- .../availability/struct.FetchBlockSnafu.html | 10 +- .../availability/struct.FetchLeafSnafu.html | 10 +- .../struct.FetchTransactionSnafu.html | 10 +- .../struct.InconsistentLeafError.html | 2 +- .../struct.InvalidTransactionIndexSnafu.html | 10 +- .../availability/struct.Options.html | 9 +- .../availability/struct.RequestSnafu.html | 6 +- .../trait.AvailabilityDataSource.html | 4 +- .../trait.UpdateAvailabilityData.html | 2 +- .../fetching/enum.BlockRequest.html | 179 +++++ .../data_source/fetching/index.html | 51 ++ .../data_source/fetching/sidebar-items.js | 1 + .../data_source/fetching/struct.Builder.html | 175 +++++ .../fetching/struct.FetchingDataSource.html | 369 ++++++++++- .../fetching/struct.StorageReadGuard.html | 138 ++++ .../fetching/struct.StorageWriteGuard.html | 139 ++++ .../fetching/trait.AvailabilityProvider.html | 3 + hotshot_query_service/data_source/index.html | 6 +- .../data_source/sidebar-items.js | 2 +- .../data_source/sql/index.html | 4 +- .../data_source/sql/sidebar-items.js | 2 +- .../data_source/sql/type.Builder.html | 1 + .../data_source/sql/type.SqlDataSource.html | 37 +- .../storage/fs/struct.FileSystemStorage.html | 4 +- .../data_source/storage/index.html | 5 +- .../storage/sql/struct.Config.html | 11 +- .../storage/sql/struct.SqlStorage.html | 6 +- .../data_source/storage/sql/trait.Query.html | 2 +- .../storage/trait.AvailabilityStorage.html | 18 +- .../struct.ExtensibleDataSource.html | 6 +- .../struct.FetchingDataSource.html | 355 ---------- .../trait.VersionedDataSource.html | 2 +- .../type.FileSystemDataSource.html | 26 +- hotshot_query_service/enum.Error.html | 6 +- hotshot_query_service/enum.QueryError.html | 16 +- .../fetching/provider/struct.AnyProvider.html | 6 +- .../fetching/provider/struct.NoFetching.html | 6 +- .../provider/struct.QueryServiceProvider.html | 6 +- .../fetching/request/struct.LeafRequest.html | 6 +- .../fn.run_standalone_service.html | 2 +- hotshot_query_service/index.html | 2 +- .../macro.instantiate_data_source_tests.html | 2 +- .../metrics/enum.MetricsError.html | 2 +- .../metrics/struct.PrometheusMetrics.html | 4 +- hotshot_query_service/node/enum.Error.html | 14 +- .../node/trait.NodeDataSource.html | 2 +- .../node/trait.UpdateNodeData.html | 2 +- hotshot_query_service/status/enum.Error.html | 4 +- .../status/trait.StatusDataSource.html | 2 +- .../struct.MissingSnafu.html | 10 +- .../struct.NotFoundSnafu.html | 10 +- hotshot_query_service/struct.Options.html | 8 +- hotshot_query_service/struct.Snafu.html | 10 +- hotshot_query_service/type.Header.html | 2 +- hotshot_query_service/type.Metadata.html | 2 +- hotshot_query_service/type.Payload.html | 2 +- hotshot_query_service/type.QueryResult.html | 2 +- hotshot_query_service/type.SignatureKey.html | 2 +- hotshot_query_service/type.Transaction.html | 2 +- search-index.js | 2 +- src-files.js | 2 +- .../availability.rs.html | 336 +++++++--- .../availability/fetch.rs.html | 22 +- src/hotshot_query_service/data_source.rs.html | 488 +++++++++++--- .../data_source/extension.rs.html | 8 +- .../data_source/fetching.rs.html | 616 ++++++++++++++++-- .../data_source/fs.rs.html | 30 +- .../data_source/metrics.rs.html | 2 +- .../data_source/sql.rs.html | 62 +- .../data_source/storage.rs.html | 8 + .../fetching/provider/query_service.rs.html | 78 ++- src/hotshot_query_service/lib.rs.html | 2 + src/hotshot_query_service/task.rs.html | 155 +++++ trait.impl/clap_builder/derive/trait.Args.js | 2 +- .../derive/trait.FromArgMatches.js | 2 +- trait.impl/core/clone/trait.Clone.js | 2 +- trait.impl/core/cmp/trait.Eq.js | 2 +- trait.impl/core/cmp/trait.Ord.js | 2 +- trait.impl/core/cmp/trait.PartialEq.js | 2 +- trait.impl/core/cmp/trait.PartialOrd.js | 2 +- trait.impl/core/convert/trait.From.js | 2 +- trait.impl/core/default/trait.Default.js | 2 +- trait.impl/core/error/trait.Error.js | 2 +- trait.impl/core/fmt/trait.Debug.js | 2 +- trait.impl/core/fmt/trait.Display.js | 2 +- trait.impl/core/hash/trait.Hash.js | 2 +- trait.impl/core/marker/trait.Copy.js | 2 +- trait.impl/core/marker/trait.Freeze.js | 2 +- trait.impl/core/marker/trait.Send.js | 2 +- trait.impl/core/marker/trait.StructuralEq.js | 2 +- .../core/marker/trait.StructuralPartialEq.js | 2 +- trait.impl/core/marker/trait.Sync.js | 2 +- trait.impl/core/marker/trait.Unpin.js | 2 +- trait.impl/core/ops/deref/trait.Deref.js | 3 + trait.impl/core/ops/deref/trait.DerefMut.js | 3 + .../panic/unwind_safe/trait.RefUnwindSafe.js | 2 +- .../panic/unwind_safe/trait.UnwindSafe.js | 2 +- .../fetching/trait.AvailabilityProvider.js | 3 + trait.impl/serde/de/trait.Deserialize.js | 2 +- trait.impl/serde/ser/trait.Serialize.js | 2 +- trait.impl/snafu/trait.ErrorCompat.js | 2 +- trait.impl/snafu/trait.IntoError.js | 2 +- .../data_source/fetching/struct.Builder.js | 3 + .../fetching/struct.FetchingDataSource.js | 3 + .../data_source/struct.FetchingDataSource.js | 3 - 112 files changed, 2858 insertions(+), 816 deletions(-) create mode 100644 hotshot_query_service/data_source/fetching/enum.BlockRequest.html create mode 100644 hotshot_query_service/data_source/fetching/index.html create mode 100644 hotshot_query_service/data_source/fetching/sidebar-items.js create mode 100644 hotshot_query_service/data_source/fetching/struct.Builder.html create mode 100644 hotshot_query_service/data_source/fetching/struct.StorageReadGuard.html create mode 100644 hotshot_query_service/data_source/fetching/struct.StorageWriteGuard.html create mode 100644 hotshot_query_service/data_source/fetching/trait.AvailabilityProvider.html create mode 100644 hotshot_query_service/data_source/sql/type.Builder.html delete mode 100644 hotshot_query_service/data_source/struct.FetchingDataSource.html create mode 100644 src/hotshot_query_service/task.rs.html create mode 100644 trait.impl/core/ops/deref/trait.Deref.js create mode 100644 trait.impl/core/ops/deref/trait.DerefMut.js create mode 100644 trait.impl/hotshot_query_service/data_source/fetching/trait.AvailabilityProvider.js create mode 100644 type.impl/hotshot_query_service/data_source/fetching/struct.Builder.js create mode 100644 type.impl/hotshot_query_service/data_source/fetching/struct.FetchingDataSource.js delete mode 100644 type.impl/hotshot_query_service/data_source/struct.FetchingDataSource.js diff --git a/hotshot_query_service/all.html b/hotshot_query_service/all.html index 87f6ae181..555416e8b 100644 --- a/hotshot_query_service/all.html +++ b/hotshot_query_service/all.html @@ -1 +1 @@ -List of all items in this crate

List of all items

Structs

Enums

Traits

Macros

Functions

Type Aliases

\ No newline at end of file +List of all items in this crate

List of all items

Structs

Enums

Traits

Macros

Functions

Type Aliases

\ No newline at end of file diff --git a/hotshot_query_service/availability/enum.BlockId.html b/hotshot_query_service/availability/enum.BlockId.html index 6d5caab76..7b516af9f 100644 --- a/hotshot_query_service/availability/enum.BlockId.html +++ b/hotshot_query_service/availability/enum.BlockId.html @@ -1,8 +1,9 @@ -BlockId in hotshot_query_service::availability - Rust
pub enum BlockId<Types: NodeType> {
+BlockId in hotshot_query_service::availability - Rust
pub enum BlockId<Types: NodeType> {
     Number(usize),
     Hash(BlockHash<Types>),
     PayloadHash(VidCommitment),
-}

Variants§

§

Number(usize)

§

Hash(BlockHash<Types>)

§

PayloadHash(VidCommitment)

Trait Implementations§

source§

impl<Types: NodeType> Clone for BlockId<Types>

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<Types: NodeType> Debug for BlockId<Types>

source§

fn fmt(&self, __f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Types: NodeType> Display for BlockId<Types>

source§

fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Types: NodeType> From<Commitment<<Types as NodeType>::BlockHeader>> for BlockId<Types>

source§

fn from(original: BlockHash<Types>) -> BlockId<Types>

Converts to this type from the input type.
source§

impl<Types: NodeType> From<usize> for BlockId<Types>

source§

fn from(original: usize) -> BlockId<Types>

Converts to this type from the input type.
source§

impl<Types: NodeType> Hash for BlockId<Types>

source§

fn hash<__HTypes>(&self, __state: &mut __HTypes)where +}

Variants§

§

Number(usize)

§

Hash(BlockHash<Types>)

§

PayloadHash(VidCommitment)

Trait Implementations§

source§

impl<Types: NodeType> Clone for BlockId<Types>

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<Types: NodeType> Debug for BlockId<Types>

source§

fn fmt(&self, __f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Types: NodeType> Display for BlockId<Types>

source§

fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Types> From<BlockId<Types>> for BlockRequest<Types>where + Types: NodeType,

source§

fn from(original: BlockId<Types>) -> BlockRequest<Types>

Converts to this type from the input type.
source§

impl<Types: NodeType> From<Commitment<<Types as NodeType>::BlockHeader>> for BlockId<Types>

source§

fn from(original: BlockHash<Types>) -> BlockId<Types>

Converts to this type from the input type.
source§

impl<Types: NodeType> From<usize> for BlockId<Types>

source§

fn from(original: usize) -> BlockId<Types>

Converts to this type from the input type.
source§

impl<Types: NodeType> Hash for BlockId<Types>

source§

fn hash<__HTypes>(&self, __state: &mut __HTypes)where __HTypes: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<Types: NodeType> Ord for BlockId<Types>

source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere @@ -58,7 +59,7 @@ Debug-formatted.

§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>where - &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+ &'a Self: for<'a> IntoIterator,
Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an diff --git a/hotshot_query_service/availability/enum.Error.html b/hotshot_query_service/availability/enum.Error.html index 777f898c4..1a7767dd1 100644 --- a/hotshot_query_service/availability/enum.Error.html +++ b/hotshot_query_service/availability/enum.Error.html @@ -1,4 +1,4 @@ -Error in hotshot_query_service::availability - Rust
pub enum Error {
+Error in hotshot_query_service::availability - Rust
pub enum Error {
     Request {
         source: RequestError,
     },
@@ -19,25 +19,25 @@
         message: String,
         status: StatusCode,
     },
-}

Variants§

§

Request

Fields

§source: RequestError
§

FetchLeaf

Fields

§resource: String
§

FetchBlock

Fields

§resource: String
§

FetchTransaction

Fields

§resource: String
§

InvalidTransactionIndex

Fields

§height: u64
§index: u64
§

Custom

Fields

§message: String
§status: StatusCode

Implementations§

source§

impl Error

source

pub fn internal<M: Display>(message: M) -> Self

source

pub fn status(&self) -> StatusCode

Trait Implementations§

source§

impl Clone for Error

source§

fn clone(&self) -> Error

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for Error

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for Error

source§

fn fmt(&self, __snafu_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for Errorwhere - Self: Debug + Display,

source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl ErrorCompat for Error

source§

fn backtrace(&self) -> Option<&Backtrace>

Returns a Backtrace that may be printed.
§

fn iter_chain(&self) -> ChainCompat<'_>where +}

Variants§

§

Request

Fields

§source: RequestError
§

FetchLeaf

Fields

§resource: String
§

FetchBlock

Fields

§resource: String
§

FetchTransaction

Fields

§resource: String
§

InvalidTransactionIndex

Fields

§height: u64
§index: u64
§

Custom

Fields

§message: String
§status: StatusCode

Implementations§

source§

impl Error

source

pub fn internal<M: Display>(message: M) -> Self

source

pub fn status(&self) -> StatusCode

Trait Implementations§

source§

impl Clone for Error

source§

fn clone(&self) -> Error

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for Error

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for Error

source§

fn fmt(&self, __snafu_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for Errorwhere + Self: Debug + Display,

source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl ErrorCompat for Error

source§

fn backtrace(&self) -> Option<&Backtrace>

Returns a Backtrace that may be printed.
§

fn iter_chain(&self) -> ChainCompat<'_>where Self: AsErrorSource,

Returns an iterator for traversing the chain of errors, starting with the current error -and continuing with recursive calls to Error::source. Read more
source§

impl From<(String, StatusCode)> for Error

source§

fn from(original: (String, StatusCode)) -> Error

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(original: Error) -> Error

Converts to this type from the input type.
source§

impl From<RequestError> for Error

source§

fn from(original: RequestError) -> Error

Converts to this type from the input type.
source§

impl<__T0, __T1> IntoError<Error> for CustomSnafu<__T0, __T1>where +and continuing with recursive calls to Error::source. Read more

source§

impl From<(String, StatusCode)> for Error

source§

fn from(original: (String, StatusCode)) -> Error

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(original: Error) -> Error

Converts to this type from the input type.
source§

impl From<RequestError> for Error

source§

fn from(original: RequestError) -> Error

Converts to this type from the input type.
source§

impl<__T0, __T1> IntoError<Error> for CustomSnafu<__T0, __T1>where Error: Error + ErrorCompat, __T0: Into<String>, - __T1: Into<StatusCode>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl<__T0> IntoError<Error> for FetchBlockSnafu<__T0>where + __T1: Into<StatusCode>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl<__T0> IntoError<Error> for FetchBlockSnafu<__T0>where Error: Error + ErrorCompat, - __T0: Into<String>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl<__T0> IntoError<Error> for FetchLeafSnafu<__T0>where + __T0: Into<String>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl<__T0> IntoError<Error> for FetchLeafSnafu<__T0>where Error: Error + ErrorCompat, - __T0: Into<String>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl<__T0> IntoError<Error> for FetchTransactionSnafu<__T0>where + __T0: Into<String>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl<__T0> IntoError<Error> for FetchTransactionSnafu<__T0>where Error: Error + ErrorCompat, - __T0: Into<String>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl<__T0, __T1> IntoError<Error> for InvalidTransactionIndexSnafu<__T0, __T1>where + __T0: Into<String>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl<__T0, __T1> IntoError<Error> for InvalidTransactionIndexSnafu<__T0, __T1>where Error: Error + ErrorCompat, __T0: Into<u64>, - __T1: Into<u64>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl IntoError<Error> for RequestSnafuwhere - Error: Error + ErrorCompat,

§

type Source = RequestError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl Serialize for Error

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where + __T1: Into<u64>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl IntoError<Error> for RequestSnafuwhere + Error: Error + ErrorCompat,

§

type Source = RequestError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl Serialize for Error

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> AsErrorSource for Twhere T: Error + 'static,

§

fn as_error_source(&self) -> &(dyn Error + 'static)

For maximum effectiveness, this needs to be called as a method diff --git a/hotshot_query_service/availability/enum.Fetch.html b/hotshot_query_service/availability/enum.Fetch.html index ed8835522..36a47599e 100644 --- a/hotshot_query_service/availability/enum.Fetch.html +++ b/hotshot_query_service/availability/enum.Fetch.html @@ -1,4 +1,4 @@ -Fetch in hotshot_query_service::availability - Rust
pub enum Fetch<T> {
+Fetch in hotshot_query_service::availability - Rust
pub enum Fetch<T> {
     Ready(T),
     Pending(BoxFuture<'static, T>),
 }
Expand description

An in-progress request to fetch some data.

@@ -28,12 +28,15 @@ E: Error + ErrorCompat,

Convert this Fetch to a Result with the provided error context.

The result indicates whether the requested data is immediately available. If it is, Ok is returned. Otherwise, an error is created from context using Snafu.

-
source§

impl<T: Send + 'static> Fetch<T>

source

pub async fn resolve(self) -> T

Wait for the data to become available, if it is not already.

-
source§

impl<T: 'static> Fetch<T>

source

pub fn map<F, U>(self, f: F) -> Fetch<U>where +

source§

impl<T: Send + 'static> Fetch<T>

source

pub async fn resolve(self) -> T

Wait for the data to become available, if it is not already.

+
source

pub async fn with_timeout(self, timeout: Duration) -> Option<T>

Wait for the requested data to become available, but only for up to timeout.

+

This function is similar to resolve, but if the future does not resolve +within timeout, then with_timeout will resolve with None.

+
source§

impl<T: 'static> Fetch<T>

source

pub fn map<F, U>(self, f: F) -> Fetch<U>where F: 'static + Send + FnOnce(T) -> U,

Transform the result of this fetch.

If the requested data is already available, f will be applied immediately. Otherwise, f will be saved and applied after the pending future resolves.

-

Trait Implementations§

source§

impl<T: Send + 'static> IntoFuture for Fetch<T>

§

type Output = T

The output that the future will produce on completion.
§

type IntoFuture = Pin<Box<dyn Future<Output = <Fetch<T> as IntoFuture>::Output> + Send>>

Which kind of future are we turning this into?
source§

fn into_future(self) -> Self::IntoFuture

Creates a future from a value. Read more

Auto Trait Implementations§

§

impl<T> !RefUnwindSafe for Fetch<T>

§

impl<T> Send for Fetch<T>where +

Trait Implementations§

source§

impl<T: Send + 'static> IntoFuture for Fetch<T>

§

type Output = T

The output that the future will produce on completion.
§

type IntoFuture = Pin<Box<dyn Future<Output = <Fetch<T> as IntoFuture>::Output> + Send>>

Which kind of future are we turning this into?
source§

fn into_future(self) -> Self::IntoFuture

Creates a future from a value. Read more

Auto Trait Implementations§

§

impl<T> !RefUnwindSafe for Fetch<T>

§

impl<T> Send for Fetch<T>where T: Send,

§

impl<T> !Sync for Fetch<T>

§

impl<T> Unpin for Fetch<T>where T: Unpin,

§

impl<T> !UnwindSafe for Fetch<T>

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere diff --git a/hotshot_query_service/availability/fn.define_api.html b/hotshot_query_service/availability/fn.define_api.html index e7ba1127e..3bacf49ea 100644 --- a/hotshot_query_service/availability/fn.define_api.html +++ b/hotshot_query_service/availability/fn.define_api.html @@ -1,4 +1,4 @@ -define_api in hotshot_query_service::availability - Rust
pub fn define_api<State, Types: NodeType>(
+define_api in hotshot_query_service::availability - Rust
pub fn define_api<State, Types: NodeType>(
     options: &Options
 ) -> Result<Api<State, Error>, ApiError>where
     State: 'static + Send + Sync + ReadState,
diff --git a/hotshot_query_service/availability/index.html b/hotshot_query_service/availability/index.html
index 95d3b22be..e40fa18a1 100644
--- a/hotshot_query_service/availability/index.html
+++ b/hotshot_query_service/availability/index.html
@@ -1,4 +1,4 @@
-hotshot_query_service::availability - Rust
Expand description

Queries for HotShot chain state.

+hotshot_query_service::availability - Rust
Expand description

Queries for HotShot chain state.

The availability API provides an objective view of the HotShot blockchain. It provides access only to normative data: that is, data which is agreed upon by all honest consensus nodes and which is immutable. This means access to core consensus data structures including leaves, diff --git a/hotshot_query_service/availability/struct.CustomSnafu.html b/hotshot_query_service/availability/struct.CustomSnafu.html index 5d7d10f09..e00e6e2d8 100644 --- a/hotshot_query_service/availability/struct.CustomSnafu.html +++ b/hotshot_query_service/availability/struct.CustomSnafu.html @@ -1,17 +1,17 @@ -CustomSnafu in hotshot_query_service::availability - Rust

pub struct CustomSnafu<__T0, __T1> {
+CustomSnafu in hotshot_query_service::availability - Rust
pub struct CustomSnafu<__T0, __T1> {
     pub message: __T0,
     pub status: __T1,
 }
Expand description

SNAFU context selector for the Error::Custom variant

-

Fields§

§message: __T0§status: __T1

Implementations§

source§

impl<__T0, __T1> CustomSnafu<__T0, __T1>

source

pub fn build(self) -> Errorwhere +

Fields§

§message: __T0§status: __T1

Implementations§

source§

impl<__T0, __T1> CustomSnafu<__T0, __T1>

source

pub fn build(self) -> Errorwhere __T0: Into<String>, __T1: Into<StatusCode>,

Consume the selector and return the associated error

-
source

pub fn fail<__T>(self) -> Result<__T, Error>where +

source

pub fn fail<__T>(self) -> Result<__T, Error>where __T0: Into<String>, __T1: Into<StatusCode>,

Consume the selector and return a Result with the associated error

-

Trait Implementations§

source§

impl<__T0: Clone, __T1: Clone> Clone for CustomSnafu<__T0, __T1>

source§

fn clone(&self) -> CustomSnafu<__T0, __T1>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<__T0: Debug, __T1: Debug> Debug for CustomSnafu<__T0, __T1>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<__T0, __T1> IntoError<Error> for CustomSnafu<__T0, __T1>where +

Trait Implementations§

source§

impl<__T0: Clone, __T1: Clone> Clone for CustomSnafu<__T0, __T1>

source§

fn clone(&self) -> CustomSnafu<__T0, __T1>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<__T0: Debug, __T1: Debug> Debug for CustomSnafu<__T0, __T1>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<__T0, __T1> IntoError<Error> for CustomSnafu<__T0, __T1>where Error: Error + ErrorCompat, __T0: Into<String>, - __T1: Into<StatusCode>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl<__T0: Copy, __T1: Copy> Copy for CustomSnafu<__T0, __T1>

Auto Trait Implementations§

§

impl<__T0, __T1> RefUnwindSafe for CustomSnafu<__T0, __T1>where + __T1: Into<StatusCode>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl<__T0: Copy, __T1: Copy> Copy for CustomSnafu<__T0, __T1>

Auto Trait Implementations§

§

impl<__T0, __T1> RefUnwindSafe for CustomSnafu<__T0, __T1>where __T0: RefUnwindSafe, __T1: RefUnwindSafe,

§

impl<__T0, __T1> Send for CustomSnafu<__T0, __T1>where __T0: Send, diff --git a/hotshot_query_service/availability/struct.FetchBlockSnafu.html b/hotshot_query_service/availability/struct.FetchBlockSnafu.html index c5f2203b7..3f0b6eb99 100644 --- a/hotshot_query_service/availability/struct.FetchBlockSnafu.html +++ b/hotshot_query_service/availability/struct.FetchBlockSnafu.html @@ -1,13 +1,13 @@ -FetchBlockSnafu in hotshot_query_service::availability - Rust
pub struct FetchBlockSnafu<__T0> {
+FetchBlockSnafu in hotshot_query_service::availability - Rust
pub struct FetchBlockSnafu<__T0> {
     pub resource: __T0,
 }
Expand description

SNAFU context selector for the Error::FetchBlock variant

-

Fields§

§resource: __T0

Implementations§

source§

impl<__T0> FetchBlockSnafu<__T0>

source

pub fn build(self) -> Errorwhere +

Fields§

§resource: __T0

Implementations§

source§

impl<__T0> FetchBlockSnafu<__T0>

source

pub fn build(self) -> Errorwhere __T0: Into<String>,

Consume the selector and return the associated error

-
source

pub fn fail<__T>(self) -> Result<__T, Error>where +

source

pub fn fail<__T>(self) -> Result<__T, Error>where __T0: Into<String>,

Consume the selector and return a Result with the associated error

-

Trait Implementations§

source§

impl<__T0: Clone> Clone for FetchBlockSnafu<__T0>

source§

fn clone(&self) -> FetchBlockSnafu<__T0>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<__T0: Debug> Debug for FetchBlockSnafu<__T0>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<__T0> IntoError<Error> for FetchBlockSnafu<__T0>where +

Trait Implementations§

source§

impl<__T0: Clone> Clone for FetchBlockSnafu<__T0>

source§

fn clone(&self) -> FetchBlockSnafu<__T0>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<__T0: Debug> Debug for FetchBlockSnafu<__T0>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<__T0> IntoError<Error> for FetchBlockSnafu<__T0>where Error: Error + ErrorCompat, - __T0: Into<String>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl<__T0: Copy> Copy for FetchBlockSnafu<__T0>

Auto Trait Implementations§

§

impl<__T0> RefUnwindSafe for FetchBlockSnafu<__T0>where + __T0: Into<String>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl<__T0: Copy> Copy for FetchBlockSnafu<__T0>

Auto Trait Implementations§

§

impl<__T0> RefUnwindSafe for FetchBlockSnafu<__T0>where __T0: RefUnwindSafe,

§

impl<__T0> Send for FetchBlockSnafu<__T0>where __T0: Send,

§

impl<__T0> Sync for FetchBlockSnafu<__T0>where __T0: Sync,

§

impl<__T0> Unpin for FetchBlockSnafu<__T0>where diff --git a/hotshot_query_service/availability/struct.FetchLeafSnafu.html b/hotshot_query_service/availability/struct.FetchLeafSnafu.html index a689b283f..91b71508e 100644 --- a/hotshot_query_service/availability/struct.FetchLeafSnafu.html +++ b/hotshot_query_service/availability/struct.FetchLeafSnafu.html @@ -1,13 +1,13 @@ -FetchLeafSnafu in hotshot_query_service::availability - Rust
pub struct FetchLeafSnafu<__T0> {
+FetchLeafSnafu in hotshot_query_service::availability - Rust
pub struct FetchLeafSnafu<__T0> {
     pub resource: __T0,
 }
Expand description

SNAFU context selector for the Error::FetchLeaf variant

-

Fields§

§resource: __T0

Implementations§

source§

impl<__T0> FetchLeafSnafu<__T0>

source

pub fn build(self) -> Errorwhere +

Fields§

§resource: __T0

Implementations§

source§

impl<__T0> FetchLeafSnafu<__T0>

source

pub fn build(self) -> Errorwhere __T0: Into<String>,

Consume the selector and return the associated error

-
source

pub fn fail<__T>(self) -> Result<__T, Error>where +

source

pub fn fail<__T>(self) -> Result<__T, Error>where __T0: Into<String>,

Consume the selector and return a Result with the associated error

-

Trait Implementations§

source§

impl<__T0: Clone> Clone for FetchLeafSnafu<__T0>

source§

fn clone(&self) -> FetchLeafSnafu<__T0>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<__T0: Debug> Debug for FetchLeafSnafu<__T0>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<__T0> IntoError<Error> for FetchLeafSnafu<__T0>where +

Trait Implementations§

source§

impl<__T0: Clone> Clone for FetchLeafSnafu<__T0>

source§

fn clone(&self) -> FetchLeafSnafu<__T0>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<__T0: Debug> Debug for FetchLeafSnafu<__T0>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<__T0> IntoError<Error> for FetchLeafSnafu<__T0>where Error: Error + ErrorCompat, - __T0: Into<String>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl<__T0: Copy> Copy for FetchLeafSnafu<__T0>

Auto Trait Implementations§

§

impl<__T0> RefUnwindSafe for FetchLeafSnafu<__T0>where + __T0: Into<String>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl<__T0: Copy> Copy for FetchLeafSnafu<__T0>

Auto Trait Implementations§

§

impl<__T0> RefUnwindSafe for FetchLeafSnafu<__T0>where __T0: RefUnwindSafe,

§

impl<__T0> Send for FetchLeafSnafu<__T0>where __T0: Send,

§

impl<__T0> Sync for FetchLeafSnafu<__T0>where __T0: Sync,

§

impl<__T0> Unpin for FetchLeafSnafu<__T0>where diff --git a/hotshot_query_service/availability/struct.FetchTransactionSnafu.html b/hotshot_query_service/availability/struct.FetchTransactionSnafu.html index 1f0d01659..12dfbf8b2 100644 --- a/hotshot_query_service/availability/struct.FetchTransactionSnafu.html +++ b/hotshot_query_service/availability/struct.FetchTransactionSnafu.html @@ -1,13 +1,13 @@ -FetchTransactionSnafu in hotshot_query_service::availability - Rust
pub struct FetchTransactionSnafu<__T0> {
+FetchTransactionSnafu in hotshot_query_service::availability - Rust
pub struct FetchTransactionSnafu<__T0> {
     pub resource: __T0,
 }
Expand description

SNAFU context selector for the Error::FetchTransaction variant

-

Fields§

§resource: __T0

Implementations§

source§

impl<__T0> FetchTransactionSnafu<__T0>

source

pub fn build(self) -> Errorwhere +

Fields§

§resource: __T0

Implementations§

source§

impl<__T0> FetchTransactionSnafu<__T0>

source

pub fn build(self) -> Errorwhere __T0: Into<String>,

Consume the selector and return the associated error

-
source

pub fn fail<__T>(self) -> Result<__T, Error>where +

source

pub fn fail<__T>(self) -> Result<__T, Error>where __T0: Into<String>,

Consume the selector and return a Result with the associated error

-

Trait Implementations§

source§

impl<__T0: Clone> Clone for FetchTransactionSnafu<__T0>

source§

fn clone(&self) -> FetchTransactionSnafu<__T0>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<__T0: Debug> Debug for FetchTransactionSnafu<__T0>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<__T0> IntoError<Error> for FetchTransactionSnafu<__T0>where +

Trait Implementations§

source§

impl<__T0: Clone> Clone for FetchTransactionSnafu<__T0>

source§

fn clone(&self) -> FetchTransactionSnafu<__T0>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<__T0: Debug> Debug for FetchTransactionSnafu<__T0>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<__T0> IntoError<Error> for FetchTransactionSnafu<__T0>where Error: Error + ErrorCompat, - __T0: Into<String>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl<__T0: Copy> Copy for FetchTransactionSnafu<__T0>

Auto Trait Implementations§

§

impl<__T0> RefUnwindSafe for FetchTransactionSnafu<__T0>where + __T0: Into<String>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl<__T0: Copy> Copy for FetchTransactionSnafu<__T0>

Auto Trait Implementations§

§

impl<__T0> RefUnwindSafe for FetchTransactionSnafu<__T0>where __T0: RefUnwindSafe,

§

impl<__T0> Send for FetchTransactionSnafu<__T0>where __T0: Send,

§

impl<__T0> Sync for FetchTransactionSnafu<__T0>where __T0: Sync,

§

impl<__T0> Unpin for FetchTransactionSnafu<__T0>where diff --git a/hotshot_query_service/availability/struct.InconsistentLeafError.html b/hotshot_query_service/availability/struct.InconsistentLeafError.html index 07832bbe3..db369d3e6 100644 --- a/hotshot_query_service/availability/struct.InconsistentLeafError.html +++ b/hotshot_query_service/availability/struct.InconsistentLeafError.html @@ -1,7 +1,7 @@ InconsistentLeafError in hotshot_query_service::availability - Rust
pub struct InconsistentLeafError<Types: NodeType> {
     pub leaf: LeafHash<Types>,
     pub qc_leaf: LeafHash<Types>,
-}

Fields§

§leaf: LeafHash<Types>§qc_leaf: LeafHash<Types>

Trait Implementations§

source§

impl<Types: Clone + NodeType> Clone for InconsistentLeafError<Types>

source§

fn clone(&self) -> InconsistentLeafError<Types>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<Types: Debug + NodeType> Debug for InconsistentLeafError<Types>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Types: NodeType> Display for InconsistentLeafError<Types>

source§

fn fmt(&self, __snafu_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Types: NodeType> Error for InconsistentLeafError<Types>where +}

Fields§

§leaf: LeafHash<Types>§qc_leaf: LeafHash<Types>

Trait Implementations§

source§

impl<Types: Clone + NodeType> Clone for InconsistentLeafError<Types>

source§

fn clone(&self) -> InconsistentLeafError<Types>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<Types: Debug + NodeType> Debug for InconsistentLeafError<Types>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Types: NodeType> Display for InconsistentLeafError<Types>

source§

fn fmt(&self, __snafu_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Types: NodeType> Error for InconsistentLeafError<Types>where Self: Debug + Display,

source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl<Types: NodeType> ErrorCompat for InconsistentLeafError<Types>

source§

fn backtrace(&self) -> Option<&Backtrace>

Returns a Backtrace that may be printed.
§

fn iter_chain(&self) -> ChainCompat<'_>where Self: AsErrorSource,

Returns an iterator for traversing the chain of errors, starting with the current error diff --git a/hotshot_query_service/availability/struct.InvalidTransactionIndexSnafu.html b/hotshot_query_service/availability/struct.InvalidTransactionIndexSnafu.html index 3395a5ad5..dcf5d8816 100644 --- a/hotshot_query_service/availability/struct.InvalidTransactionIndexSnafu.html +++ b/hotshot_query_service/availability/struct.InvalidTransactionIndexSnafu.html @@ -1,17 +1,17 @@ -InvalidTransactionIndexSnafu in hotshot_query_service::availability - Rust
pub struct InvalidTransactionIndexSnafu<__T0, __T1> {
+InvalidTransactionIndexSnafu in hotshot_query_service::availability - Rust
pub struct InvalidTransactionIndexSnafu<__T0, __T1> {
     pub height: __T0,
     pub index: __T1,
 }
Expand description

SNAFU context selector for the Error::InvalidTransactionIndex variant

-

Fields§

§height: __T0§index: __T1

Implementations§

source§

impl<__T0, __T1> InvalidTransactionIndexSnafu<__T0, __T1>

source

pub fn build(self) -> Errorwhere +

Fields§

§height: __T0§index: __T1

Implementations§

source§

impl<__T0, __T1> InvalidTransactionIndexSnafu<__T0, __T1>

source

pub fn build(self) -> Errorwhere __T0: Into<u64>, __T1: Into<u64>,

Consume the selector and return the associated error

-
source

pub fn fail<__T>(self) -> Result<__T, Error>where +

source

pub fn fail<__T>(self) -> Result<__T, Error>where __T0: Into<u64>, __T1: Into<u64>,

Consume the selector and return a Result with the associated error

-

Trait Implementations§

source§

impl<__T0: Clone, __T1: Clone> Clone for InvalidTransactionIndexSnafu<__T0, __T1>

source§

fn clone(&self) -> InvalidTransactionIndexSnafu<__T0, __T1>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<__T0: Debug, __T1: Debug> Debug for InvalidTransactionIndexSnafu<__T0, __T1>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<__T0, __T1> IntoError<Error> for InvalidTransactionIndexSnafu<__T0, __T1>where +

Trait Implementations§

source§

impl<__T0: Clone, __T1: Clone> Clone for InvalidTransactionIndexSnafu<__T0, __T1>

source§

fn clone(&self) -> InvalidTransactionIndexSnafu<__T0, __T1>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<__T0: Debug, __T1: Debug> Debug for InvalidTransactionIndexSnafu<__T0, __T1>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<__T0, __T1> IntoError<Error> for InvalidTransactionIndexSnafu<__T0, __T1>where Error: Error + ErrorCompat, __T0: Into<u64>, - __T1: Into<u64>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl<__T0: Copy, __T1: Copy> Copy for InvalidTransactionIndexSnafu<__T0, __T1>

Auto Trait Implementations§

§

impl<__T0, __T1> RefUnwindSafe for InvalidTransactionIndexSnafu<__T0, __T1>where + __T1: Into<u64>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl<__T0: Copy, __T1: Copy> Copy for InvalidTransactionIndexSnafu<__T0, __T1>

Auto Trait Implementations§

§

impl<__T0, __T1> RefUnwindSafe for InvalidTransactionIndexSnafu<__T0, __T1>where __T0: RefUnwindSafe, __T1: RefUnwindSafe,

§

impl<__T0, __T1> Send for InvalidTransactionIndexSnafu<__T0, __T1>where __T0: Send, diff --git a/hotshot_query_service/availability/struct.Options.html b/hotshot_query_service/availability/struct.Options.html index 762cd882d..ec15e4ceb 100644 --- a/hotshot_query_service/availability/struct.Options.html +++ b/hotshot_query_service/availability/struct.Options.html @@ -1,7 +1,12 @@ -Options in hotshot_query_service::availability - Rust
pub struct Options {
+Options in hotshot_query_service::availability - Rust
pub struct Options {
     pub api_path: Option<PathBuf>,
+    pub fetch_timeout: Duration,
     pub extensions: Vec<Value>,
-}

Fields§

§api_path: Option<PathBuf>§extensions: Vec<Value>

Additional API specification files to merge with availability-api-path.

+}

Fields§

§api_path: Option<PathBuf>§fetch_timeout: Duration

Timeout for failing requests due to missing data.

+

If data needed to respond to a request is missing, it can (in some cases) be fetched from an +external provider. This parameter controls how long the request handler will wait for +missing data to be fetched before giving up and failing the request.

+
§extensions: Vec<Value>

Additional API specification files to merge with availability-api-path.

These optional files may contain route definitions for application-specific routes that have been added as extensions to the basic availability API.

Trait Implementations§

source§

impl Args for Options

source§

fn group_id() -> Option<Id>

Report the [ArgGroup::id][crate::ArgGroup::id] for this set of arguments
source§

fn augment_args<'b>(__clap_app: Command) -> Command

Append to [Command] so it can instantiate Self. Read more
source§

fn augment_args_for_update<'b>(__clap_app: Command) -> Command

Append to [Command] so it can update self. Read more
source§

impl Default for Options

source§

fn default() -> Options

Returns the “default value” for a type. Read more
source§

impl FromArgMatches for Options

source§

fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
source§

fn from_arg_matches_mut( diff --git a/hotshot_query_service/availability/struct.RequestSnafu.html b/hotshot_query_service/availability/struct.RequestSnafu.html index 95e586503..e7468bbfc 100644 --- a/hotshot_query_service/availability/struct.RequestSnafu.html +++ b/hotshot_query_service/availability/struct.RequestSnafu.html @@ -1,6 +1,6 @@ -RequestSnafu in hotshot_query_service::availability - Rust
pub struct RequestSnafu;
Expand description

SNAFU context selector for the Error::Request variant

-

Trait Implementations§

source§

impl Clone for RequestSnafu

source§

fn clone(&self) -> RequestSnafu

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for RequestSnafu

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl IntoError<Error> for RequestSnafuwhere - Error: Error + ErrorCompat,

§

type Source = RequestError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl Copy for RequestSnafu

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere +RequestSnafu in hotshot_query_service::availability - Rust
pub struct RequestSnafu;
Expand description

SNAFU context selector for the Error::Request variant

+

Trait Implementations§

source§

impl Clone for RequestSnafu

source§

fn clone(&self) -> RequestSnafu

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for RequestSnafu

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl IntoError<Error> for RequestSnafuwhere + Error: Error + ErrorCompat,

§

type Source = RequestError

The underlying error
source§

fn into_error(self, error: Self::Source) -> Error

Combine the information to produce the error
source§

impl Copy for RequestSnafu

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere T: 'a,

§

fn implicit( diff --git a/hotshot_query_service/availability/trait.AvailabilityDataSource.html b/hotshot_query_service/availability/trait.AvailabilityDataSource.html index 581c10754..c1500f46c 100644 --- a/hotshot_query_service/availability/trait.AvailabilityDataSource.html +++ b/hotshot_query_service/availability/trait.AvailabilityDataSource.html @@ -172,11 +172,11 @@ where R: RangeBounds<usize> + Send

§

type PayloadRange<R> = <D as AvailabilityDataSource<Types>>::PayloadRange<R> where - R: RangeBounds<usize> + Send

source§

impl<Types, S, P> AvailabilityDataSource<Types> for FetchingDataSource<Types, S, P>where + R: RangeBounds<usize> + Send

source§

impl<Types, S, P> AvailabilityDataSource<Types> for FetchingDataSource<Types, S, P>where Types: NodeType, Payload<Types>: QueryablePayload, S: AvailabilityStorage<Types> + 'static, - P: AvailabilityProvider<Types>,

§

type LeafRange<R> = Pin<Box<dyn Stream<Item = Fetch<LeafQueryData<Types>>> + Send>> + P: AvailabilityProvider<Types>,

§

type LeafRange<R> = Pin<Box<dyn Stream<Item = Fetch<LeafQueryData<Types>>> + Send>> where R: RangeBounds<usize> + Send

§

type BlockRange<R> = Pin<Box<dyn Stream<Item = Fetch<BlockQueryData<Types>>> + Send>> where diff --git a/hotshot_query_service/availability/trait.UpdateAvailabilityData.html b/hotshot_query_service/availability/trait.UpdateAvailabilityData.html index c52bbf718..a82fa4189 100644 --- a/hotshot_query_service/availability/trait.UpdateAvailabilityData.html +++ b/hotshot_query_service/availability/trait.UpdateAvailabilityData.html @@ -29,7 +29,7 @@ U: Send + Sync, Types: NodeType,

§

type Error = <D as UpdateAvailabilityData<Types>>::Error

source§

impl<Types> UpdateAvailabilityData<Types> for SqlStoragewhere Types: NodeType, - Payload<Types>: QueryablePayload,

source§

impl<Types, S, P> UpdateAvailabilityData<Types> for FetchingDataSource<Types, S, P>where + Payload<Types>: QueryablePayload,

source§

impl<Types, S, P> UpdateAvailabilityData<Types> for FetchingDataSource<Types, S, P>where Types: NodeType, Payload<Types>: QueryablePayload, S: UpdateAvailabilityData<Types> + Send + Sync, diff --git a/hotshot_query_service/data_source/fetching/enum.BlockRequest.html b/hotshot_query_service/data_source/fetching/enum.BlockRequest.html new file mode 100644 index 000000000..b2cb733f0 --- /dev/null +++ b/hotshot_query_service/data_source/fetching/enum.BlockRequest.html @@ -0,0 +1,179 @@ +BlockRequest in hotshot_query_service::data_source::fetching - Rust
pub enum BlockRequest<Types>where
+    Types: NodeType,{
+    Id(BlockId<Types>),
+    WithTransaction(TransactionHash<Types>),
+}
Expand description

A request to fetch a block.

+

Blocks can be requested either directly by their BlockId, or indirectly, by requesting a +block containing a particular transaction.

+

Variants§

§

Id(BlockId<Types>)

§

WithTransaction(TransactionHash<Types>)

Trait Implementations§

source§

impl<Types> Clone for BlockRequest<Types>where + Types: NodeType,

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<Types> Debug for BlockRequest<Types>where + Types: NodeType,

source§

fn fmt(&self, __f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Types> Display for BlockRequest<Types>where + TransactionHash<Types>: Display, + BlockId<Types>: Display, + Types: NodeType,

source§

fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Types> From<BlockId<Types>> for BlockRequest<Types>where + Types: NodeType,

source§

fn from(original: BlockId<Types>) -> BlockRequest<Types>

Converts to this type from the input type.
source§

impl<Types> From<Commitment<<<Types as NodeType>::BlockPayload as BlockPayload>::Transaction>> for BlockRequest<Types>where + Types: NodeType,

source§

fn from(original: TransactionHash<Types>) -> BlockRequest<Types>

Converts to this type from the input type.
source§

impl<Types> From<usize> for BlockRequest<Types>where + Types: NodeType,

source§

fn from(i: usize) -> Self

Converts to this type from the input type.
source§

impl<Types> Hash for BlockRequest<Types>where + Types: NodeType,

source§

fn hash<__HTypes>(&self, __state: &mut __HTypes)where + __HTypes: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<Types> Ord for BlockRequest<Types>where + Types: NodeType,

source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl<Types> PartialEq for BlockRequest<Types>where + Types: NodeType,

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl<Types> PartialOrd for BlockRequest<Types>where + Types: NodeType,

source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl<Types> Copy for BlockRequest<Types>where + Types: NodeType,

source§

impl<Types> Eq for BlockRequest<Types>where + Types: NodeType,

Auto Trait Implementations§

§

impl<Types> RefUnwindSafe for BlockRequest<Types>

§

impl<Types> Send for BlockRequest<Types>

§

impl<Types> Sync for BlockRequest<Types>

§

impl<Types> Unpin for BlockRequest<Types>

§

impl<Types> UnwindSafe for BlockRequest<Types>

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere + T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere + T: 'a,

§

fn implicit( + self, + class: Class, + constructed: bool, + tag: u32 +) -> TaggedParser<'a, Implicit, Self, E>

source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CallHasher for Twhere + T: Hash + ?Sized,

§

fn get_hash<H, B>(value: &H, build_hasher: &B) -> u64where + H: Hash + ?Sized, + B: BuildHasher,

§

impl<Q, K> Comparable<K> for Qwhere + Q: Ord + ?Sized, + K: Borrow<Q> + ?Sized,

§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
§

impl<T> Conv for T

§

fn conv<T>(self) -> Twhere + Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> Downcast for Twhere + T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can +then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be +further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot +generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot +generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for Twhere + T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be +further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> DynClone for Twhere + T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

source§

impl<T> DynClone for Twhere + T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

§

impl<Q, K> Equivalent<K> for Qwhere + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Qwhere + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
§

impl<Q, K> Equivalent<K> for Qwhere + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>where + Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>where + Self: Display,

Causes self to use its Display implementation when +Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>where + Self: LowerExp,

Causes self to use its LowerExp implementation when +Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>where + Self: LowerHex,

Causes self to use its LowerHex implementation when +Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>where + Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>where + Self: Pointer,

Causes self to use its Pointer implementation when +Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>where + Self: UpperExp,

Causes self to use its UpperExp implementation when +Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>where + Self: UpperHex,

Causes self to use its UpperHex implementation when +Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>where + &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
§

impl<D> OwoColorize for D

§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where + C: Color,

Set the foreground color generically Read more
§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where + C: Color,

Set the background color generically. Read more
§

fn black<'a>(&'a self) -> FgColorDisplay<'a, Black, Self>

Change the foreground color to black
§

fn on_black<'a>(&'a self) -> BgColorDisplay<'a, Black, Self>

Change the background color to black
§

fn red<'a>(&'a self) -> FgColorDisplay<'a, Red, Self>

Change the foreground color to red
§

fn on_red<'a>(&'a self) -> BgColorDisplay<'a, Red, Self>

Change the background color to red
§

fn green<'a>(&'a self) -> FgColorDisplay<'a, Green, Self>

Change the foreground color to green
§

fn on_green<'a>(&'a self) -> BgColorDisplay<'a, Green, Self>

Change the background color to green
§

fn yellow<'a>(&'a self) -> FgColorDisplay<'a, Yellow, Self>

Change the foreground color to yellow
§

fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>

Change the background color to yellow
§

fn blue<'a>(&'a self) -> FgColorDisplay<'a, Blue, Self>

Change the foreground color to blue
§

fn on_blue<'a>(&'a self) -> BgColorDisplay<'a, Blue, Self>

Change the background color to blue
§

fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>

Change the foreground color to magenta
§

fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>

Change the background color to magenta
§

fn purple<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>

Change the foreground color to purple
§

fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>

Change the background color to purple
§

fn cyan<'a>(&'a self) -> FgColorDisplay<'a, Cyan, Self>

Change the foreground color to cyan
§

fn on_cyan<'a>(&'a self) -> BgColorDisplay<'a, Cyan, Self>

Change the background color to cyan
§

fn white<'a>(&'a self) -> FgColorDisplay<'a, White, Self>

Change the foreground color to white
§

fn on_white<'a>(&'a self) -> BgColorDisplay<'a, White, Self>

Change the background color to white
§

fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>

Change the foreground color to the terminal default
§

fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>

Change the background color to the terminal default
§

fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>

Change the foreground color to bright black
§

fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>

Change the background color to bright black
§

fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>

Change the foreground color to bright red
§

fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>

Change the background color to bright red
§

fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>

Change the foreground color to bright green
§

fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>

Change the background color to bright green
§

fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>

Change the foreground color to bright yellow
§

fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>

Change the background color to bright yellow
§

fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>

Change the foreground color to bright blue
§

fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>

Change the background color to bright blue
§

fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>

Change the foreground color to bright magenta
§

fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>

Change the background color to bright magenta
§

fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>

Change the foreground color to bright purple
§

fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>

Change the background color to bright purple
§

fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>

Change the foreground color to bright cyan
§

fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>

Change the background color to bright cyan
§

fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>

Change the foreground color to bright white
§

fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>

Change the background color to bright white
§

fn bold<'a>(&'a self) -> BoldDisplay<'a, Self>

Make the text bold
§

fn dimmed<'a>(&'a self) -> DimDisplay<'a, Self>

Make the text dim
§

fn italic<'a>(&'a self) -> ItalicDisplay<'a, Self>

Make the text italicized
§

fn underline<'a>(&'a self) -> UnderlineDisplay<'a, Self>

Make the text italicized
Make the text blink
Make the text blink (but fast!)
§

fn reversed<'a>(&'a self) -> ReversedDisplay<'a, Self>

Swap the foreground and background colors
§

fn hidden<'a>(&'a self) -> HiddenDisplay<'a, Self>

Hide the text
§

fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, Self>

Cross out the text
§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where + Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at +compile-time. If the color is constant, use either OwoColorize::fg or +a color-specific method, such as OwoColorize::green, Read more
§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where + Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at +compile-time. If the color is constant, use either OwoColorize::bg or +a color-specific method, such as OwoColorize::on_yellow, Read more
§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( + &self +) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( + &self +) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
§

impl<T> Pipe for Twhere + T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere + Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere + R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere + R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere + Self: Borrow<B>, + B: 'a + ?Sized, + R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( + &'a mut self, + func: impl FnOnce(&'a mut B) -> R +) -> Rwhere + Self: BorrowMut<B>, + B: 'a + ?Sized, + R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere + Self: AsRef<U>, + U: 'a + ?Sized, + R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere + Self: AsMut<U>, + U: 'a + ?Sized, + R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe +function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> Rwhere + Self: Deref<Target = T>, + T: 'a + ?Sized, + R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( + &'a mut self, + func: impl FnOnce(&'a mut T) -> R +) -> Rwhere + Self: DerefMut<Target = T> + Deref, + T: 'a + ?Sized, + R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe +function.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> SectionExt for Twhere + T: Display + Send + Sync + 'static,

source§

fn header<C>(self, header: C) -> IndentedSection<C, T>where + C: Display + Send + Sync + 'static,

Add a header to a Section and indent the body Read more
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere + Self: Borrow<B>, + B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere + Self: BorrowMut<B>, + B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere + Self: AsRef<R>, + R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere + Self: AsMut<R>, + R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere + Self: Deref<Target = T>, + T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere + Self: DerefMut<Target = T> + Deref, + T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release +builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere + Self: Borrow<B>, + B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release +builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere + Self: BorrowMut<B>, + B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere + Self: AsRef<R>, + R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release +builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere + Self: AsMut<R>, + R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Selfwhere + Self: Deref<Target = T>, + T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release +builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere + Self: DerefMut<Target = T> + Deref, + T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds.
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for Twhere + T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>where + Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more
§

impl<T> Element for Twhere + T: Clone + Eq + PartialEq + Hash,

§

impl<T> Index for Twhere + T: Debug + Eq + PartialEq + Hash + Ord + PartialOrd + Clone,

§

impl<T> PassType for Twhere + T: Clone + Debug + Sync + Send + 'static,

source§

impl<T> RuleType for Twhere + T: Copy + Debug + Eq + Hash + Ord,

\ No newline at end of file diff --git a/hotshot_query_service/data_source/fetching/index.html b/hotshot_query_service/data_source/fetching/index.html new file mode 100644 index 000000000..4efe981c8 --- /dev/null +++ b/hotshot_query_service/data_source/fetching/index.html @@ -0,0 +1,51 @@ +hotshot_query_service::data_source::fetching - Rust
Expand description

Asynchronous retrieval of missing data.

+

FetchingDataSource combines a local storage implementation with a remote data availability +provider to create a data sources which caches data locally, but which is capable of fetching +missing data from a remote source, either proactively or on demand.

+

This implementation supports three kinds of data fetching.

+

Proactive Fetching

+

Proactive fetching means actively scanning the local database for missing objects and +proactively retrieving them from a remote provider, even if those objects have yet to be +requested by a client. Doing this increases the chance of success and decreases latency when a +client does eventually ask for those objects. This is also the mechanism by which a query +service joining a network late, or having been offline for some time, is able to catch up with +the events on the network that it missed.

+

The current implementation of proactive fetching is meant to be the simplest effective algorithm +which still gives us a reasonable range of configuration options for experimentation. It is +subject to change as we learn about the behavior of proactive fetching in a realistic system.

+

Proactive fetching is currently implemented by a background task which performs periodic scans +of the database, identifying and retrieving missing objects. This task is generally low +priority, since missing objects are rare, and it will take care not to monopolize resources that +could be used to serve requests. To reduce load and to optimize for the common case where blocks +are usually not missing once they have already been retrieved, we distinguish between major +and minor scans.

+

Minor scans are lightweight and can run very frequently. They will only look for missing +blocks among blocks that are new since the previous scan. Thus, the more frequently minor +scans run, the less work they have to do. This allows them to run frequently, giving low +latency for retrieval of newly produced blocks that we failed to receive initially. Between +each minor scan, the task will sleep for a configurable +duration to wait for new blocks to be produced and give +other tasks full access to all shared resources.

+

Every nth scan (n is configurable) is a major scan. +These scan all blocks from 0, which guarantees that we will eventually retrieve all blocks, even +if for some reason we have lost a block that we previously had (due to storage failures and +corruptions, or simple bugs in this software). These scans are rather expensive (although they +will release control of shared resources many times during the duration of the scan), but +because it is rather unlikely that a major scan will discover any missing blocks that the next +minor scan would have missed, it is ok if major scans run very infrequently.

+

Active Fetching

+

Active fetching means reaching out to a remote data availability provider to retrieve a missing +resource, upon receiving a request for that resource from a client. Not every request for a +missing resource triggers an active fetch. To avoid spamming peers with requests for missing +data, we only actively fetch resources that are known to exist somewhere. This means we can +actively fetch leaves and headers when we are requested a leaf or header by height, whose height +is less than the current chain height. We can fetch a block when the corresponding header exists +(corresponding based on height, hash, or payload hash) or can be actively fetched.

+

Passive Fetching

+

For requests that cannot be actively fetched (for example, a block requested by hash, where we +do not have a header proving that a block with that hash exists), we use passive fetching. This +essentially means waiting passively until the query service receives an object that satisfies +the request. This object may be received because it was actively fetched in responsive to a +different request for the same object, one that permitted an active fetch. Or it may have been +fetched proactively.

+

Structs

Enums

Traits

\ No newline at end of file diff --git a/hotshot_query_service/data_source/fetching/sidebar-items.js b/hotshot_query_service/data_source/fetching/sidebar-items.js new file mode 100644 index 000000000..1e099aed8 --- /dev/null +++ b/hotshot_query_service/data_source/fetching/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"enum":["BlockRequest"],"struct":["Builder","FetchingDataSource","StorageReadGuard","StorageWriteGuard"],"trait":["AvailabilityProvider"]}; \ No newline at end of file diff --git a/hotshot_query_service/data_source/fetching/struct.Builder.html b/hotshot_query_service/data_source/fetching/struct.Builder.html new file mode 100644 index 000000000..f578d2612 --- /dev/null +++ b/hotshot_query_service/data_source/fetching/struct.Builder.html @@ -0,0 +1,175 @@ +Builder in hotshot_query_service::data_source::fetching - Rust
pub struct Builder<Types, S, P> { /* private fields */ }
Expand description

Builder for FetchingDataSource with configuration.

+

Implementations§

source§

impl<Types, S, P> Builder<Types, S, P>

source

pub fn new(storage: S, provider: P) -> Self

Construct a new builder with the given storage and fetcher and the default options.

+
source

pub fn with_retry_delay(self, retry_delay: Duration) -> Self

Set the maximum delay between retries of fetches.

+
source

pub fn with_range_chunk_size(self, range_chunk_size: usize) -> Self

Set the number of items to process at a time when loading a range or stream.

+

This determines:

+
    +
  • The number of objects to load from storage in a single request
  • +
  • The number of objects to buffer in memory per request/stream
  • +
  • The number of concurrent notification subscriptions per request/stream
  • +
+
source

pub fn with_minor_scan_interval(self, interval: Duration) -> Self

Set the time interval between minor proactive fetching scans.

+

See proactive fetching.

+
source

pub fn with_major_scan_interval(self, interval: usize) -> Self

Set the interval (denominated in minor scans) between +major proactive fetching scans.

+

See proactive fetching.

+
source

pub fn with_proactive_range_chunk_size(self, range_chunk_size: usize) -> Self

Set the number of items to process at a time when scanning for proactive fetching.

+

This is similar to Self::with_range_chunk_size, but only affects the chunk size for +proactive fetching scans, not for normal subscription streams. This can be useful to tune +the proactive scanner to be more or less greedy with the lock on persistent storage.

+

By default (i.e. if this method is not called) the proactive range chunk size will be set to +whatever the normal range chunk size is.

+
source

pub fn disable_proactive_fetching(self) -> Self

Run without proactive fetching.

+

This can reduce load on the CPU and the database, but increases the probability that +requests will fail due to missing resources. If resources are constrained, it is recommended +to run with rare proactive fetching (see +with_major_scan_interval, +with_minor_scan_interval), rather than disabling it +entirely.

+
source§

impl<Types, S, P> Builder<Types, S, P>where + Types: NodeType, + Payload<Types>: QueryablePayload, + S: NodeDataSource<Types> + UpdateNodeData<Types> + AvailabilityStorage<Types> + VersionedDataSource + 'static, + P: AvailabilityProvider<Types>,

source

pub async fn build(self) -> Result<FetchingDataSource<Types, S, P>>

Build a FetchingDataSource with these options.

+

Auto Trait Implementations§

§

impl<Types, S, P> RefUnwindSafe for Builder<Types, S, P>where + P: RefUnwindSafe, + S: RefUnwindSafe, + Types: RefUnwindSafe,

§

impl<Types, S, P> Send for Builder<Types, S, P>where + P: Send, + S: Send, + Types: Send,

§

impl<Types, S, P> Sync for Builder<Types, S, P>where + P: Sync, + S: Sync, + Types: Sync,

§

impl<Types, S, P> Unpin for Builder<Types, S, P>where + P: Unpin, + S: Unpin, + Types: Unpin,

§

impl<Types, S, P> UnwindSafe for Builder<Types, S, P>where + P: UnwindSafe, + S: UnwindSafe, + Types: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere + T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere + T: 'a,

§

fn implicit( + self, + class: Class, + constructed: bool, + tag: u32 +) -> TaggedParser<'a, Implicit, Self, E>

source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> Twhere + Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> Downcast for Twhere + T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can +then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be +further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot +generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot +generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for Twhere + T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be +further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>where + Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>where + Self: Display,

Causes self to use its Display implementation when +Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>where + Self: LowerExp,

Causes self to use its LowerExp implementation when +Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>where + Self: LowerHex,

Causes self to use its LowerHex implementation when +Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>where + Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>where + Self: Pointer,

Causes self to use its Pointer implementation when +Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>where + Self: UpperExp,

Causes self to use its UpperExp implementation when +Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>where + Self: UpperHex,

Causes self to use its UpperHex implementation when +Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>where + &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
§

impl<D> OwoColorize for D

§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where + C: Color,

Set the foreground color generically Read more
§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where + C: Color,

Set the background color generically. Read more
§

fn black<'a>(&'a self) -> FgColorDisplay<'a, Black, Self>

Change the foreground color to black
§

fn on_black<'a>(&'a self) -> BgColorDisplay<'a, Black, Self>

Change the background color to black
§

fn red<'a>(&'a self) -> FgColorDisplay<'a, Red, Self>

Change the foreground color to red
§

fn on_red<'a>(&'a self) -> BgColorDisplay<'a, Red, Self>

Change the background color to red
§

fn green<'a>(&'a self) -> FgColorDisplay<'a, Green, Self>

Change the foreground color to green
§

fn on_green<'a>(&'a self) -> BgColorDisplay<'a, Green, Self>

Change the background color to green
§

fn yellow<'a>(&'a self) -> FgColorDisplay<'a, Yellow, Self>

Change the foreground color to yellow
§

fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>

Change the background color to yellow
§

fn blue<'a>(&'a self) -> FgColorDisplay<'a, Blue, Self>

Change the foreground color to blue
§

fn on_blue<'a>(&'a self) -> BgColorDisplay<'a, Blue, Self>

Change the background color to blue
§

fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>

Change the foreground color to magenta
§

fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>

Change the background color to magenta
§

fn purple<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>

Change the foreground color to purple
§

fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>

Change the background color to purple
§

fn cyan<'a>(&'a self) -> FgColorDisplay<'a, Cyan, Self>

Change the foreground color to cyan
§

fn on_cyan<'a>(&'a self) -> BgColorDisplay<'a, Cyan, Self>

Change the background color to cyan
§

fn white<'a>(&'a self) -> FgColorDisplay<'a, White, Self>

Change the foreground color to white
§

fn on_white<'a>(&'a self) -> BgColorDisplay<'a, White, Self>

Change the background color to white
§

fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>

Change the foreground color to the terminal default
§

fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>

Change the background color to the terminal default
§

fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>

Change the foreground color to bright black
§

fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>

Change the background color to bright black
§

fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>

Change the foreground color to bright red
§

fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>

Change the background color to bright red
§

fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>

Change the foreground color to bright green
§

fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>

Change the background color to bright green
§

fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>

Change the foreground color to bright yellow
§

fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>

Change the background color to bright yellow
§

fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>

Change the foreground color to bright blue
§

fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>

Change the background color to bright blue
§

fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>

Change the foreground color to bright magenta
§

fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>

Change the background color to bright magenta
§

fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>

Change the foreground color to bright purple
§

fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>

Change the background color to bright purple
§

fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>

Change the foreground color to bright cyan
§

fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>

Change the background color to bright cyan
§

fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>

Change the foreground color to bright white
§

fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>

Change the background color to bright white
§

fn bold<'a>(&'a self) -> BoldDisplay<'a, Self>

Make the text bold
§

fn dimmed<'a>(&'a self) -> DimDisplay<'a, Self>

Make the text dim
§

fn italic<'a>(&'a self) -> ItalicDisplay<'a, Self>

Make the text italicized
§

fn underline<'a>(&'a self) -> UnderlineDisplay<'a, Self>

Make the text italicized
Make the text blink
Make the text blink (but fast!)
§

fn reversed<'a>(&'a self) -> ReversedDisplay<'a, Self>

Swap the foreground and background colors
§

fn hidden<'a>(&'a self) -> HiddenDisplay<'a, Self>

Hide the text
§

fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, Self>

Cross out the text
§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where + Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at +compile-time. If the color is constant, use either OwoColorize::fg or +a color-specific method, such as OwoColorize::green, Read more
§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where + Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at +compile-time. If the color is constant, use either OwoColorize::bg or +a color-specific method, such as OwoColorize::on_yellow, Read more
§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( + &self +) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( + &self +) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
§

impl<T> Pipe for Twhere + T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere + Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere + R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere + R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere + Self: Borrow<B>, + B: 'a + ?Sized, + R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( + &'a mut self, + func: impl FnOnce(&'a mut B) -> R +) -> Rwhere + Self: BorrowMut<B>, + B: 'a + ?Sized, + R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere + Self: AsRef<U>, + U: 'a + ?Sized, + R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere + Self: AsMut<U>, + U: 'a + ?Sized, + R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe +function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> Rwhere + Self: Deref<Target = T>, + T: 'a + ?Sized, + R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( + &'a mut self, + func: impl FnOnce(&'a mut T) -> R +) -> Rwhere + Self: DerefMut<Target = T> + Deref, + T: 'a + ?Sized, + R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe +function.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere + Self: Borrow<B>, + B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere + Self: BorrowMut<B>, + B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere + Self: AsRef<R>, + R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere + Self: AsMut<R>, + R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere + Self: Deref<Target = T>, + T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere + Self: DerefMut<Target = T> + Deref, + T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release +builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere + Self: Borrow<B>, + B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release +builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere + Self: BorrowMut<B>, + B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere + Self: AsRef<R>, + R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release +builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere + Self: AsMut<R>, + R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Selfwhere + Self: Deref<Target = T>, + T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release +builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere + Self: DerefMut<Target = T> + Deref, + T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>where + Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more
\ No newline at end of file diff --git a/hotshot_query_service/data_source/fetching/struct.FetchingDataSource.html b/hotshot_query_service/data_source/fetching/struct.FetchingDataSource.html index fe08f8ff6..1ae9c8457 100644 --- a/hotshot_query_service/data_source/fetching/struct.FetchingDataSource.html +++ b/hotshot_query_service/data_source/fetching/struct.FetchingDataSource.html @@ -1,11 +1,358 @@ - - - - - Redirection - - -

Redirecting to ../../../hotshot_query_service/data_source/struct.FetchingDataSource.html...

- - - \ No newline at end of file +FetchingDataSource in hotshot_query_service::data_source::fetching - Rust
pub struct FetchingDataSource<Types, S, P>where
+    Types: NodeType,{ /* private fields */ }
Expand description

The most basic kind of data source.

+

A data source is constructed modularly by combining a storage implementation +with a Fetcher. The former allows the query service to store the +data it has persistently in an easily accessible storage medium, such as the local file system +or a database. This allows it to answer queries efficiently and to maintain its state across +restarts. The latter allows the query service to fetch data that is missing from its storage +from an external data availability provider, such as the Tiramisu DA network or another instance +of the query service.

+

These two components of a data source are combined in FetchingDataSource, which is the +lowest level kind of data source available. It simply uses the storage implementation to fetch +data when available, and fills in everything else using the fetcher. Various kinds of data +sources can be constructed out of FetchingDataSource by changing the storage and fetcher +implementations used, and more complex data sources can be built on top using data source +combinators.

+

Implementations§

source§

impl<Types, S, P> FetchingDataSource<Types, S, P>where + Types: NodeType, + Payload<Types>: QueryablePayload, + S: NodeDataSource<Types> + UpdateNodeData<Types> + AvailabilityStorage<Types> + VersionedDataSource + 'static, + P: AvailabilityProvider<Types>,

source

pub fn builder(storage: S, provider: P) -> Builder<Types, S, P>

Build a FetchingDataSource with the given storage and provider.

+
source§

impl<Types, S, P> FetchingDataSource<Types, S, P>where + Types: NodeType,

source

pub async fn storage(&self) -> StorageReadGuard<'_, Types, S>

Obtain direct, read-only access to the underlying local storage.

+
source

pub async fn storage_mut(&self) -> StorageWriteGuard<'_, Types, S>

Obtain direct, mutable access the underlying local storage.

+
source§

impl<Types: NodeType, P> FetchingDataSource<Types, FileSystemStorage<Types>, P>where + Payload<Types>: QueryablePayload, + P: AvailabilityProvider<Types>,

source

pub async fn create(path: &Path, provider: P) -> Result<Self>

Create a new FileSystemDataSource with storage at path.

+

If there is already data at path, it will be archived.

+

The FileSystemDataSource will manage its own persistence synchronization.

+
source

pub async fn open(path: &Path, provider: P) -> Result<Self>

Open an existing FileSystemDataSource from storage at path.

+

If there is no data at path, a new store will be created.

+

The FileSystemDataSource will manage its own persistence synchronization.

+
source

pub async fn create_with_store( + loader: &mut AtomicStoreLoader, + provider: P +) -> Result<Self>

Create a new FileSystemDataSource using a persistent storage loader.

+

If there is existing data corresponding to the FileSystemDataSource data structures, it +will be archived.

+

The FileSystemDataSource will register its persistent data structures with loader. The +caller is responsible for creating an AtomicStore from loader +and managing synchronization of the store.

+
source

pub async fn open_with_store( + loader: &mut AtomicStoreLoader, + provider: P +) -> Result<Self>

Open an existing FileSystemDataSource using a persistent storage loader.

+

If there is no existing data corresponding to the FileSystemDataSource data structures, a +new store will be created.

+

The FileSystemDataSource will register its persistent data structures with loader. The +caller is responsible for creating an AtomicStore from loader +and managing synchronization of the store.

+
source

pub async fn skip_version(&mut self) -> Result<()>

Advance the version of the persistent store without committing changes to persistent state.

+

This function is useful when the AtomicStore synchronizing +storage for this FileSystemDataSource is being managed by the caller. The caller may want +to persist some changes to other modules whose state is managed by the same +AtomicStore. In order to call +AtomicStore::commit_version, the version of +this FileSystemDataSource must be advanced, either by +commit or, if there are no outstanding changes, +skip_version.

+
source§

impl<Types, P: AvailabilityProvider<Types>> FetchingDataSource<Types, SqlStorage, P>where + Types: NodeType, + Payload<Types>: QueryablePayload,

source

pub async fn connect( + config: Config, + provider: P +) -> Result<Builder<Types, P>, Error>

Connect to a remote database.

+

This function returns a fetching::Builder which can be used to set options on the +underlying FetchingDataSource, before constructing the SqlDataSource with +build. For a convenient constructor that uses the default +fetching options, see Config::connect.

+
source§

impl<Types, P> FetchingDataSource<Types, SqlStorage, P>where + Types: NodeType,

source

pub async fn transaction(&mut self) -> QueryResult<Transaction<'_>>

Access the transaction which is accumulating all uncommitted changes to the data source.

+

This can be used to manually group database modifications to custom state atomically with +modifications made through the SqlDataSource.

+

If there is no currently open transaction, a new transaction will be opened. No changes +made through the transaction objeect returned by this method will be persisted until +commit is called.

+

Trait Implementations§

source§

impl<Types, S, P> AvailabilityDataSource<Types> for FetchingDataSource<Types, S, P>where + Types: NodeType, + Payload<Types>: QueryablePayload, + S: AvailabilityStorage<Types> + 'static, + P: AvailabilityProvider<Types>,

§

type LeafRange<R> = Pin<Box<dyn Stream<Item = Fetch<LeafQueryData<Types>>> + Send>> +where + R: RangeBounds<usize> + Send

§

type BlockRange<R> = Pin<Box<dyn Stream<Item = Fetch<BlockQueryData<Types>>> + Send>> +where + R: RangeBounds<usize> + Send

§

type PayloadRange<R> = Pin<Box<dyn Stream<Item = Fetch<PayloadQueryData<Types>>> + Send>> +where + R: RangeBounds<usize> + Send

source§

fn get_leaf<'life0, 'async_trait, ID>( + &'life0 self, + id: ID +) -> Pin<Box<dyn Future<Output = Fetch<LeafQueryData<Types>>> + Send + 'async_trait>>where + ID: Into<LeafId<Types>> + Send + Sync + 'async_trait, + Self: 'async_trait, + 'life0: 'async_trait,

source§

fn get_block<'life0, 'async_trait, ID>( + &'life0 self, + id: ID +) -> Pin<Box<dyn Future<Output = Fetch<BlockQueryData<Types>>> + Send + 'async_trait>>where + ID: Into<BlockId<Types>> + Send + Sync + 'async_trait, + Self: 'async_trait, + 'life0: 'async_trait,

source§

fn get_payload<'life0, 'async_trait, ID>( + &'life0 self, + id: ID +) -> Pin<Box<dyn Future<Output = Fetch<PayloadQueryData<Types>>> + Send + 'async_trait>>where + ID: Into<BlockId<Types>> + Send + Sync + 'async_trait, + Self: 'async_trait, + 'life0: 'async_trait,

source§

fn get_leaf_range<'life0, 'async_trait, R>( + &'life0 self, + range: R +) -> Pin<Box<dyn Future<Output = Self::LeafRange<R>> + Send + 'async_trait>>where + R: RangeBounds<usize> + Send + 'static + 'async_trait, + Self: 'async_trait, + 'life0: 'async_trait,

source§

fn get_block_range<'life0, 'async_trait, R>( + &'life0 self, + range: R +) -> Pin<Box<dyn Future<Output = Self::BlockRange<R>> + Send + 'async_trait>>where + R: RangeBounds<usize> + Send + 'static + 'async_trait, + Self: 'async_trait, + 'life0: 'async_trait,

source§

fn get_payload_range<'life0, 'async_trait, R>( + &'life0 self, + range: R +) -> Pin<Box<dyn Future<Output = Self::PayloadRange<R>> + Send + 'async_trait>>where + R: RangeBounds<usize> + Send + 'static + 'async_trait, + Self: 'async_trait, + 'life0: 'async_trait,

source§

fn get_block_with_transaction<'life0, 'async_trait>( + &'life0 self, + hash: TransactionHash<Types> +) -> Pin<Box<dyn Future<Output = Fetch<(BlockQueryData<Types>, TransactionIndex<Types>)>> + Send + 'async_trait>>where + Self: 'async_trait, + 'life0: 'async_trait,

Returns the block containing a transaction with the given hash and the transaction’s +position in the block.
source§

fn subscribe_blocks<'life0, 'async_trait>( + &'life0 self, + from: usize +) -> Pin<Box<dyn Future<Output = BoxStream<'static, BlockQueryData<Types>>> + Send + 'async_trait>>where + Self: Sync + 'async_trait, + 'life0: 'async_trait,

source§

fn subscribe_payloads<'life0, 'async_trait>( + &'life0 self, + from: usize +) -> Pin<Box<dyn Future<Output = BoxStream<'static, PayloadQueryData<Types>>> + Send + 'async_trait>>where + Self: Sync + 'async_trait, + 'life0: 'async_trait,

source§

fn subscribe_leaves<'life0, 'async_trait>( + &'life0 self, + from: usize +) -> Pin<Box<dyn Future<Output = BoxStream<'static, LeafQueryData<Types>>> + Send + 'async_trait>>where + Self: Sync + 'async_trait, + 'life0: 'async_trait,

source§

impl<Types, S, P> Clone for FetchingDataSource<Types, S, P>where + Types: NodeType,

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<Types, S, P> Debug for FetchingDataSource<Types, S, P>where + Types: NodeType, + S: Debug, + P: Debug,

source§

fn fmt(&self, __f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Types, S, P> NodeDataSource<Types> for FetchingDataSource<Types, S, P>where + Types: NodeType, + S: NodeDataSource<Types> + Send + Sync, + P: Send + Sync,

source§

fn block_height<'life0, 'async_trait>( + &'life0 self +) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>where + Self: 'async_trait, + 'life0: 'async_trait,

source§

fn get_proposals<'life0, 'life1, 'async_trait>( + &'life0 self, + proposer: &'life1 SignatureKey<Types>, + limit: Option<usize> +) -> Pin<Box<dyn Future<Output = QueryResult<Vec<LeafQueryData<Types>>>> + Send + 'async_trait>>where + Self: 'async_trait, + 'life0: 'async_trait, + 'life1: 'async_trait,

source§

fn count_proposals<'life0, 'life1, 'async_trait>( + &'life0 self, + proposer: &'life1 SignatureKey<Types> +) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>where + Self: 'async_trait, + 'life0: 'async_trait, + 'life1: 'async_trait,

source§

impl<Types, S, P> StatusDataSource for FetchingDataSource<Types, S, P>where + Types: NodeType, + S: NodeDataSource<Types> + Send + Sync, + P: Send + Sync,

source§

fn block_height<'life0, 'async_trait>( + &'life0 self +) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>where + Self: 'async_trait, + 'life0: 'async_trait,

source§

fn metrics(&self) -> &PrometheusMetrics

source§

fn consensus_metrics(&self) -> QueryResult<PrometheusMetrics>

source§

fn mempool_info<'life0, 'async_trait>( + &'life0 self +) -> Pin<Box<dyn Future<Output = QueryResult<MempoolQueryData>> + Send + 'async_trait>>where + Self: Sync + 'async_trait, + 'life0: 'async_trait,

source§

fn success_rate<'life0, 'async_trait>( + &'life0 self +) -> Pin<Box<dyn Future<Output = QueryResult<f64>> + Send + 'async_trait>>where + Self: Sync + 'async_trait, + 'life0: 'async_trait,

source§

impl<Types, S, P> UpdateAvailabilityData<Types> for FetchingDataSource<Types, S, P>where + Types: NodeType, + Payload<Types>: QueryablePayload, + S: UpdateAvailabilityData<Types> + Send + Sync, + P: Send + Sync,

§

type Error = <S as UpdateAvailabilityData<Types>>::Error

source§

fn insert_leaf<'life0, 'async_trait>( + &'life0 mut self, + leaf: LeafQueryData<Types> +) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where + Self: 'async_trait, + 'life0: 'async_trait,

source§

fn insert_block<'life0, 'async_trait>( + &'life0 mut self, + block: BlockQueryData<Types> +) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where + Self: 'async_trait, + 'life0: 'async_trait,

source§

impl<Types, S, P> UpdateNodeData<Types> for FetchingDataSource<Types, S, P>where + Types: NodeType, + S: UpdateNodeData<Types> + Send + Sync, + P: Send + Sync,

§

type Error = <S as UpdateNodeData<Types>>::Error

source§

fn insert_leaf<'life0, 'async_trait>( + &'life0 mut self, + leaf: LeafQueryData<Types> +) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where + Self: 'async_trait, + 'life0: 'async_trait,

source§

impl<Types, S, P> VersionedDataSource for FetchingDataSource<Types, S, P>where + Types: NodeType, + S: VersionedDataSource + Send + Sync, + P: Send + Sync,

§

type Error = <S as VersionedDataSource>::Error

source§

fn commit<'life0, 'async_trait>( + &'life0 mut self +) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where + Self: 'async_trait, + 'life0: 'async_trait,

Atomically commit to all outstanding modifications to the data. Read more
source§

fn revert<'life0, 'async_trait>( + &'life0 mut self +) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where + Self: 'async_trait, + 'life0: 'async_trait,

Erase all oustanding modifications to the data. Read more

Auto Trait Implementations§

§

impl<Types, S, P> !RefUnwindSafe for FetchingDataSource<Types, S, P>

§

impl<Types, S, P> Send for FetchingDataSource<Types, S, P>where + P: Send + Sync, + S: Send + Sync,

§

impl<Types, S, P> Sync for FetchingDataSource<Types, S, P>where + P: Send + Sync, + S: Send + Sync,

§

impl<Types, S, P> Unpin for FetchingDataSource<Types, S, P>

§

impl<Types, S, P> !UnwindSafe for FetchingDataSource<Types, S, P>

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere + T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere + T: 'a,

§

fn implicit( + self, + class: Class, + constructed: bool, + tag: u32 +) -> TaggedParser<'a, Implicit, Self, E>

source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> Twhere + Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> Downcast for Twhere + T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can +then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be +further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot +generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot +generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for Twhere + T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be +further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> DynClone for Twhere + T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

source§

impl<T> DynClone for Twhere + T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>where + Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>where + Self: Display,

Causes self to use its Display implementation when +Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>where + Self: LowerExp,

Causes self to use its LowerExp implementation when +Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>where + Self: LowerHex,

Causes self to use its LowerHex implementation when +Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>where + Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>where + Self: Pointer,

Causes self to use its Pointer implementation when +Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>where + Self: UpperExp,

Causes self to use its UpperExp implementation when +Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>where + Self: UpperHex,

Causes self to use its UpperHex implementation when +Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>where + &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
§

impl<D> OwoColorize for D

§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where + C: Color,

Set the foreground color generically Read more
§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where + C: Color,

Set the background color generically. Read more
§

fn black<'a>(&'a self) -> FgColorDisplay<'a, Black, Self>

Change the foreground color to black
§

fn on_black<'a>(&'a self) -> BgColorDisplay<'a, Black, Self>

Change the background color to black
§

fn red<'a>(&'a self) -> FgColorDisplay<'a, Red, Self>

Change the foreground color to red
§

fn on_red<'a>(&'a self) -> BgColorDisplay<'a, Red, Self>

Change the background color to red
§

fn green<'a>(&'a self) -> FgColorDisplay<'a, Green, Self>

Change the foreground color to green
§

fn on_green<'a>(&'a self) -> BgColorDisplay<'a, Green, Self>

Change the background color to green
§

fn yellow<'a>(&'a self) -> FgColorDisplay<'a, Yellow, Self>

Change the foreground color to yellow
§

fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>

Change the background color to yellow
§

fn blue<'a>(&'a self) -> FgColorDisplay<'a, Blue, Self>

Change the foreground color to blue
§

fn on_blue<'a>(&'a self) -> BgColorDisplay<'a, Blue, Self>

Change the background color to blue
§

fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>

Change the foreground color to magenta
§

fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>

Change the background color to magenta
§

fn purple<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>

Change the foreground color to purple
§

fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>

Change the background color to purple
§

fn cyan<'a>(&'a self) -> FgColorDisplay<'a, Cyan, Self>

Change the foreground color to cyan
§

fn on_cyan<'a>(&'a self) -> BgColorDisplay<'a, Cyan, Self>

Change the background color to cyan
§

fn white<'a>(&'a self) -> FgColorDisplay<'a, White, Self>

Change the foreground color to white
§

fn on_white<'a>(&'a self) -> BgColorDisplay<'a, White, Self>

Change the background color to white
§

fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>

Change the foreground color to the terminal default
§

fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>

Change the background color to the terminal default
§

fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>

Change the foreground color to bright black
§

fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>

Change the background color to bright black
§

fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>

Change the foreground color to bright red
§

fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>

Change the background color to bright red
§

fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>

Change the foreground color to bright green
§

fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>

Change the background color to bright green
§

fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>

Change the foreground color to bright yellow
§

fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>

Change the background color to bright yellow
§

fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>

Change the foreground color to bright blue
§

fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>

Change the background color to bright blue
§

fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>

Change the foreground color to bright magenta
§

fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>

Change the background color to bright magenta
§

fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>

Change the foreground color to bright purple
§

fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>

Change the background color to bright purple
§

fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>

Change the foreground color to bright cyan
§

fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>

Change the background color to bright cyan
§

fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>

Change the foreground color to bright white
§

fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>

Change the background color to bright white
§

fn bold<'a>(&'a self) -> BoldDisplay<'a, Self>

Make the text bold
§

fn dimmed<'a>(&'a self) -> DimDisplay<'a, Self>

Make the text dim
§

fn italic<'a>(&'a self) -> ItalicDisplay<'a, Self>

Make the text italicized
§

fn underline<'a>(&'a self) -> UnderlineDisplay<'a, Self>

Make the text italicized
Make the text blink
Make the text blink (but fast!)
§

fn reversed<'a>(&'a self) -> ReversedDisplay<'a, Self>

Swap the foreground and background colors
§

fn hidden<'a>(&'a self) -> HiddenDisplay<'a, Self>

Hide the text
§

fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, Self>

Cross out the text
§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where + Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at +compile-time. If the color is constant, use either OwoColorize::fg or +a color-specific method, such as OwoColorize::green, Read more
§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where + Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at +compile-time. If the color is constant, use either OwoColorize::bg or +a color-specific method, such as OwoColorize::on_yellow, Read more
§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( + &self +) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( + &self +) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
§

impl<T> Pipe for Twhere + T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere + Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere + R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere + R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere + Self: Borrow<B>, + B: 'a + ?Sized, + R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( + &'a mut self, + func: impl FnOnce(&'a mut B) -> R +) -> Rwhere + Self: BorrowMut<B>, + B: 'a + ?Sized, + R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere + Self: AsRef<U>, + U: 'a + ?Sized, + R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere + Self: AsMut<U>, + U: 'a + ?Sized, + R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe +function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> Rwhere + Self: Deref<Target = T>, + T: 'a + ?Sized, + R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( + &'a mut self, + func: impl FnOnce(&'a mut T) -> R +) -> Rwhere + Self: DerefMut<Target = T> + Deref, + T: 'a + ?Sized, + R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe +function.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere + Self: Borrow<B>, + B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere + Self: BorrowMut<B>, + B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere + Self: AsRef<R>, + R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere + Self: AsMut<R>, + R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere + Self: Deref<Target = T>, + T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere + Self: DerefMut<Target = T> + Deref, + T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release +builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere + Self: Borrow<B>, + B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release +builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere + Self: BorrowMut<B>, + B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere + Self: AsRef<R>, + R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release +builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere + Self: AsMut<R>, + R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Selfwhere + Self: Deref<Target = T>, + T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release +builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere + Self: DerefMut<Target = T> + Deref, + T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds.
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>where + Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<Types, T> UpdateDataSource<Types> for Twhere + Types: NodeType, + T: UpdateAvailabilityData<Types> + UpdateNodeData<Types, Error = <T as UpdateAvailabilityData<Types>>::Error> + UpdateStatusData + Send,

source§

fn update<'life0, 'life1, 'async_trait>( + &'life0 mut self, + event: &'life1 Event<Types> +) -> Pin<Box<dyn Future<Output = Result<(), <T as UpdateAvailabilityData<Types>>::Error>> + Send + 'async_trait>>where + 'life0: 'async_trait, + 'life1: 'async_trait, + T: 'async_trait,

Update query state based on a new consensus event. Read more
source§

impl<T> UpdateStatusData for Twhere + T: StatusDataSource,

source§

fn populate_metrics(&self) -> Box<dyn Metrics>

§

impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more
§

impl<T> PassType for Twhere + T: Clone + Debug + Sync + Send + 'static,

\ No newline at end of file diff --git a/hotshot_query_service/data_source/fetching/struct.StorageReadGuard.html b/hotshot_query_service/data_source/fetching/struct.StorageReadGuard.html new file mode 100644 index 000000000..7cb257d2f --- /dev/null +++ b/hotshot_query_service/data_source/fetching/struct.StorageReadGuard.html @@ -0,0 +1,138 @@ +StorageReadGuard in hotshot_query_service::data_source::fetching - Rust
pub struct StorageReadGuard<'a, Types, S>where
+    Types: NodeType,{ /* private fields */ }

Trait Implementations§

source§

impl<'a, Types, S> Deref for StorageReadGuard<'a, Types, S>where + Types: NodeType,

§

type Target = S

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl<'a, Types, S> From<RwLockReadGuard<'a, NotifyStorage<Types, S>>> for StorageReadGuard<'a, Types, S>where + Types: NodeType,

source§

fn from( + original: RwLockReadGuard<'a, NotifyStorage<Types, S>> +) -> StorageReadGuard<'a, Types, S>

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<'a, Types, S> !RefUnwindSafe for StorageReadGuard<'a, Types, S>

§

impl<'a, Types, S> Send for StorageReadGuard<'a, Types, S>where + S: Sync,

§

impl<'a, Types, S> Sync for StorageReadGuard<'a, Types, S>where + S: Sync,

§

impl<'a, Types, S> Unpin for StorageReadGuard<'a, Types, S>

§

impl<'a, Types, S> !UnwindSafe for StorageReadGuard<'a, Types, S>

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere + T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere + T: 'a,

§

fn implicit( + self, + class: Class, + constructed: bool, + tag: u32 +) -> TaggedParser<'a, Implicit, Self, E>

source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> Twhere + Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> Downcast for Twhere + T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can +then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be +further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot +generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot +generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for Twhere + T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be +further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>where + Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>where + Self: Display,

Causes self to use its Display implementation when +Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>where + Self: LowerExp,

Causes self to use its LowerExp implementation when +Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>where + Self: LowerHex,

Causes self to use its LowerHex implementation when +Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>where + Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>where + Self: Pointer,

Causes self to use its Pointer implementation when +Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>where + Self: UpperExp,

Causes self to use its UpperExp implementation when +Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>where + Self: UpperHex,

Causes self to use its UpperHex implementation when +Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>where + &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
§

impl<D> OwoColorize for D

§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where + C: Color,

Set the foreground color generically Read more
§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where + C: Color,

Set the background color generically. Read more
§

fn black<'a>(&'a self) -> FgColorDisplay<'a, Black, Self>

Change the foreground color to black
§

fn on_black<'a>(&'a self) -> BgColorDisplay<'a, Black, Self>

Change the background color to black
§

fn red<'a>(&'a self) -> FgColorDisplay<'a, Red, Self>

Change the foreground color to red
§

fn on_red<'a>(&'a self) -> BgColorDisplay<'a, Red, Self>

Change the background color to red
§

fn green<'a>(&'a self) -> FgColorDisplay<'a, Green, Self>

Change the foreground color to green
§

fn on_green<'a>(&'a self) -> BgColorDisplay<'a, Green, Self>

Change the background color to green
§

fn yellow<'a>(&'a self) -> FgColorDisplay<'a, Yellow, Self>

Change the foreground color to yellow
§

fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>

Change the background color to yellow
§

fn blue<'a>(&'a self) -> FgColorDisplay<'a, Blue, Self>

Change the foreground color to blue
§

fn on_blue<'a>(&'a self) -> BgColorDisplay<'a, Blue, Self>

Change the background color to blue
§

fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>

Change the foreground color to magenta
§

fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>

Change the background color to magenta
§

fn purple<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>

Change the foreground color to purple
§

fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>

Change the background color to purple
§

fn cyan<'a>(&'a self) -> FgColorDisplay<'a, Cyan, Self>

Change the foreground color to cyan
§

fn on_cyan<'a>(&'a self) -> BgColorDisplay<'a, Cyan, Self>

Change the background color to cyan
§

fn white<'a>(&'a self) -> FgColorDisplay<'a, White, Self>

Change the foreground color to white
§

fn on_white<'a>(&'a self) -> BgColorDisplay<'a, White, Self>

Change the background color to white
§

fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>

Change the foreground color to the terminal default
§

fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>

Change the background color to the terminal default
§

fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>

Change the foreground color to bright black
§

fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>

Change the background color to bright black
§

fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>

Change the foreground color to bright red
§

fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>

Change the background color to bright red
§

fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>

Change the foreground color to bright green
§

fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>

Change the background color to bright green
§

fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>

Change the foreground color to bright yellow
§

fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>

Change the background color to bright yellow
§

fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>

Change the foreground color to bright blue
§

fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>

Change the background color to bright blue
§

fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>

Change the foreground color to bright magenta
§

fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>

Change the background color to bright magenta
§

fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>

Change the foreground color to bright purple
§

fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>

Change the background color to bright purple
§

fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>

Change the foreground color to bright cyan
§

fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>

Change the background color to bright cyan
§

fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>

Change the foreground color to bright white
§

fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>

Change the background color to bright white
§

fn bold<'a>(&'a self) -> BoldDisplay<'a, Self>

Make the text bold
§

fn dimmed<'a>(&'a self) -> DimDisplay<'a, Self>

Make the text dim
§

fn italic<'a>(&'a self) -> ItalicDisplay<'a, Self>

Make the text italicized
§

fn underline<'a>(&'a self) -> UnderlineDisplay<'a, Self>

Make the text italicized
Make the text blink
Make the text blink (but fast!)
§

fn reversed<'a>(&'a self) -> ReversedDisplay<'a, Self>

Swap the foreground and background colors
§

fn hidden<'a>(&'a self) -> HiddenDisplay<'a, Self>

Hide the text
§

fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, Self>

Cross out the text
§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where + Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at +compile-time. If the color is constant, use either OwoColorize::fg or +a color-specific method, such as OwoColorize::green, Read more
§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where + Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at +compile-time. If the color is constant, use either OwoColorize::bg or +a color-specific method, such as OwoColorize::on_yellow, Read more
§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( + &self +) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( + &self +) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
§

impl<T> Pipe for Twhere + T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere + Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere + R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere + R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere + Self: Borrow<B>, + B: 'a + ?Sized, + R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( + &'a mut self, + func: impl FnOnce(&'a mut B) -> R +) -> Rwhere + Self: BorrowMut<B>, + B: 'a + ?Sized, + R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere + Self: AsRef<U>, + U: 'a + ?Sized, + R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere + Self: AsMut<U>, + U: 'a + ?Sized, + R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe +function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> Rwhere + Self: Deref<Target = T>, + T: 'a + ?Sized, + R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( + &'a mut self, + func: impl FnOnce(&'a mut T) -> R +) -> Rwhere + Self: DerefMut<Target = T> + Deref, + T: 'a + ?Sized, + R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe +function.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere + Self: Borrow<B>, + B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere + Self: BorrowMut<B>, + B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere + Self: AsRef<R>, + R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere + Self: AsMut<R>, + R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere + Self: Deref<Target = T>, + T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere + Self: DerefMut<Target = T> + Deref, + T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release +builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere + Self: Borrow<B>, + B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release +builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere + Self: BorrowMut<B>, + B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere + Self: AsRef<R>, + R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release +builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere + Self: AsMut<R>, + R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Selfwhere + Self: Deref<Target = T>, + T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release +builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere + Self: DerefMut<Target = T> + Deref, + T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>where + Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more
§

impl<T> Formattable for Twhere + T: Deref, + <T as Deref>::Target: Formattable,

§

impl<T> Parsable for Twhere + T: Deref, + <T as Deref>::Target: Parsable,

\ No newline at end of file diff --git a/hotshot_query_service/data_source/fetching/struct.StorageWriteGuard.html b/hotshot_query_service/data_source/fetching/struct.StorageWriteGuard.html new file mode 100644 index 000000000..6145438f8 --- /dev/null +++ b/hotshot_query_service/data_source/fetching/struct.StorageWriteGuard.html @@ -0,0 +1,139 @@ +StorageWriteGuard in hotshot_query_service::data_source::fetching - Rust
pub struct StorageWriteGuard<'a, Types, S>where
+    Types: NodeType,{ /* private fields */ }

Trait Implementations§

source§

impl<'a, Types, S> Deref for StorageWriteGuard<'a, Types, S>where + Types: NodeType,

§

type Target = S

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl<'a, Types, S> DerefMut for StorageWriteGuard<'a, Types, S>where + Types: NodeType,

source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
source§

impl<'a, Types, S> From<RwLockWriteGuard<'a, NotifyStorage<Types, S>>> for StorageWriteGuard<'a, Types, S>where + Types: NodeType,

source§

fn from( + original: RwLockWriteGuard<'a, NotifyStorage<Types, S>> +) -> StorageWriteGuard<'a, Types, S>

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<'a, Types, S> !RefUnwindSafe for StorageWriteGuard<'a, Types, S>

§

impl<'a, Types, S> Send for StorageWriteGuard<'a, Types, S>where + S: Send,

§

impl<'a, Types, S> Sync for StorageWriteGuard<'a, Types, S>where + S: Sync,

§

impl<'a, Types, S> Unpin for StorageWriteGuard<'a, Types, S>

§

impl<'a, Types, S> !UnwindSafe for StorageWriteGuard<'a, Types, S>

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere + T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere + T: 'a,

§

fn implicit( + self, + class: Class, + constructed: bool, + tag: u32 +) -> TaggedParser<'a, Implicit, Self, E>

source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> Twhere + Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> Downcast for Twhere + T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can +then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be +further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot +generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot +generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for Twhere + T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be +further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>where + Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>where + Self: Display,

Causes self to use its Display implementation when +Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>where + Self: LowerExp,

Causes self to use its LowerExp implementation when +Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>where + Self: LowerHex,

Causes self to use its LowerHex implementation when +Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>where + Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>where + Self: Pointer,

Causes self to use its Pointer implementation when +Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>where + Self: UpperExp,

Causes self to use its UpperExp implementation when +Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>where + Self: UpperHex,

Causes self to use its UpperHex implementation when +Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>where + &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an +Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
§

impl<D> OwoColorize for D

§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where + C: Color,

Set the foreground color generically Read more
§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where + C: Color,

Set the background color generically. Read more
§

fn black<'a>(&'a self) -> FgColorDisplay<'a, Black, Self>

Change the foreground color to black
§

fn on_black<'a>(&'a self) -> BgColorDisplay<'a, Black, Self>

Change the background color to black
§

fn red<'a>(&'a self) -> FgColorDisplay<'a, Red, Self>

Change the foreground color to red
§

fn on_red<'a>(&'a self) -> BgColorDisplay<'a, Red, Self>

Change the background color to red
§

fn green<'a>(&'a self) -> FgColorDisplay<'a, Green, Self>

Change the foreground color to green
§

fn on_green<'a>(&'a self) -> BgColorDisplay<'a, Green, Self>

Change the background color to green
§

fn yellow<'a>(&'a self) -> FgColorDisplay<'a, Yellow, Self>

Change the foreground color to yellow
§

fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>

Change the background color to yellow
§

fn blue<'a>(&'a self) -> FgColorDisplay<'a, Blue, Self>

Change the foreground color to blue
§

fn on_blue<'a>(&'a self) -> BgColorDisplay<'a, Blue, Self>

Change the background color to blue
§

fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>

Change the foreground color to magenta
§

fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>

Change the background color to magenta
§

fn purple<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>

Change the foreground color to purple
§

fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>

Change the background color to purple
§

fn cyan<'a>(&'a self) -> FgColorDisplay<'a, Cyan, Self>

Change the foreground color to cyan
§

fn on_cyan<'a>(&'a self) -> BgColorDisplay<'a, Cyan, Self>

Change the background color to cyan
§

fn white<'a>(&'a self) -> FgColorDisplay<'a, White, Self>

Change the foreground color to white
§

fn on_white<'a>(&'a self) -> BgColorDisplay<'a, White, Self>

Change the background color to white
§

fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>

Change the foreground color to the terminal default
§

fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>

Change the background color to the terminal default
§

fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>

Change the foreground color to bright black
§

fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>

Change the background color to bright black
§

fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>

Change the foreground color to bright red
§

fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>

Change the background color to bright red
§

fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>

Change the foreground color to bright green
§

fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>

Change the background color to bright green
§

fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>

Change the foreground color to bright yellow
§

fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>

Change the background color to bright yellow
§

fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>

Change the foreground color to bright blue
§

fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>

Change the background color to bright blue
§

fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>

Change the foreground color to bright magenta
§

fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>

Change the background color to bright magenta
§

fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>

Change the foreground color to bright purple
§

fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>

Change the background color to bright purple
§

fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>

Change the foreground color to bright cyan
§

fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>

Change the background color to bright cyan
§

fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>

Change the foreground color to bright white
§

fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>

Change the background color to bright white
§

fn bold<'a>(&'a self) -> BoldDisplay<'a, Self>

Make the text bold
§

fn dimmed<'a>(&'a self) -> DimDisplay<'a, Self>

Make the text dim
§

fn italic<'a>(&'a self) -> ItalicDisplay<'a, Self>

Make the text italicized
§

fn underline<'a>(&'a self) -> UnderlineDisplay<'a, Self>

Make the text italicized
Make the text blink
Make the text blink (but fast!)
§

fn reversed<'a>(&'a self) -> ReversedDisplay<'a, Self>

Swap the foreground and background colors
§

fn hidden<'a>(&'a self) -> HiddenDisplay<'a, Self>

Hide the text
§

fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, Self>

Cross out the text
§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where + Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at +compile-time. If the color is constant, use either OwoColorize::fg or +a color-specific method, such as OwoColorize::green, Read more
§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where + Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at +compile-time. If the color is constant, use either OwoColorize::bg or +a color-specific method, such as OwoColorize::on_yellow, Read more
§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( + &self +) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( + &self +) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
§

impl<T> Pipe for Twhere + T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere + Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere + R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere + R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere + Self: Borrow<B>, + B: 'a + ?Sized, + R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( + &'a mut self, + func: impl FnOnce(&'a mut B) -> R +) -> Rwhere + Self: BorrowMut<B>, + B: 'a + ?Sized, + R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere + Self: AsRef<U>, + U: 'a + ?Sized, + R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere + Self: AsMut<U>, + U: 'a + ?Sized, + R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe +function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> Rwhere + Self: Deref<Target = T>, + T: 'a + ?Sized, + R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( + &'a mut self, + func: impl FnOnce(&'a mut T) -> R +) -> Rwhere + Self: DerefMut<Target = T> + Deref, + T: 'a + ?Sized, + R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe +function.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere + Self: Borrow<B>, + B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere + Self: BorrowMut<B>, + B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere + Self: AsRef<R>, + R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere + Self: AsMut<R>, + R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere + Self: Deref<Target = T>, + T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere + Self: DerefMut<Target = T> + Deref, + T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release +builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere + Self: Borrow<B>, + B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release +builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere + Self: BorrowMut<B>, + B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere + Self: AsRef<R>, + R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release +builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere + Self: AsMut<R>, + R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Selfwhere + Self: Deref<Target = T>, + T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release +builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere + Self: DerefMut<Target = T> + Deref, + T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>where + Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +WithDispatch wrapper. Read more
§

impl<T> Formattable for Twhere + T: Deref, + <T as Deref>::Target: Formattable,

§

impl<T> Parsable for Twhere + T: Deref, + <T as Deref>::Target: Parsable,

\ No newline at end of file diff --git a/hotshot_query_service/data_source/fetching/trait.AvailabilityProvider.html b/hotshot_query_service/data_source/fetching/trait.AvailabilityProvider.html new file mode 100644 index 000000000..9d935ac70 --- /dev/null +++ b/hotshot_query_service/data_source/fetching/trait.AvailabilityProvider.html @@ -0,0 +1,3 @@ +AvailabilityProvider in hotshot_query_service::data_source::fetching - Rust
pub trait AvailabilityProvider<Types: NodeType>: Provider<Types, LeafRequest> + Provider<Types, PayloadRequest> + Sync + 'static { }
Expand description

A provider which can be used as a fetcher by the availability service.

+

Implementors§

source§

impl<Types: NodeType, P> AvailabilityProvider<Types> for Pwhere + P: Provider<Types, LeafRequest> + Provider<Types, PayloadRequest> + Sync + 'static,

\ No newline at end of file diff --git a/hotshot_query_service/data_source/index.html b/hotshot_query_service/data_source/index.html index a21c60c37..15d9173af 100644 --- a/hotshot_query_service/data_source/index.html +++ b/hotshot_query_service/data_source/index.html @@ -1,11 +1,11 @@ -hotshot_query_service::data_source - Rust
Expand description

Persistent storage and sources of data consumed by APIs.

+hotshot_query_service::data_source - Rust
Expand description

Persistent storage and sources of data consumed by APIs.

The APIs provided by this query service are generic over the implementation which actually retrieves data in answer to queries. We call this implementation a data source. This module defines a data source and provides several pre-built implementations:

The user can choose which data source to use when initializing the query service.

@@ -13,4 +13,4 @@ -

Re-exports

Modules

Structs

Traits

  • An extension trait for types which implement the update trait for each API module.
  • A data source with an atomic transaction-based synchronization interface.

Type Aliases

  • A data source for the APIs provided in this crate, backed by the local file system.
\ No newline at end of file +

Re-exports

Modules

  • Asynchronous retrieval of missing data.
  • Persistent storage for data sources.

Structs

  • Wrapper to add extensibility to an existing data source.
  • A minimal data source for the status API provided in this crate, with no persistent storage.

Traits

  • An extension trait for types which implement the update trait for each API module.
  • A data source with an atomic transaction-based synchronization interface.

Type Aliases

  • A data source for the APIs provided in this crate, backed by the local file system.
\ No newline at end of file diff --git a/hotshot_query_service/data_source/sidebar-items.js b/hotshot_query_service/data_source/sidebar-items.js index 98aa40452..2d5309aaa 100644 --- a/hotshot_query_service/data_source/sidebar-items.js +++ b/hotshot_query_service/data_source/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"mod":["sql","storage"],"struct":["ExtensibleDataSource","FetchingDataSource","MetricsDataSource"],"trait":["UpdateDataSource","VersionedDataSource"],"type":["FileSystemDataSource"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"mod":["fetching","sql","storage"],"struct":["ExtensibleDataSource","MetricsDataSource"],"trait":["UpdateDataSource","VersionedDataSource"],"type":["FileSystemDataSource"]}; \ No newline at end of file diff --git a/hotshot_query_service/data_source/sql/index.html b/hotshot_query_service/data_source/sql/index.html index 7d59aa029..3b73226a5 100644 --- a/hotshot_query_service/data_source/sql/index.html +++ b/hotshot_query_service/data_source/sql/index.html @@ -1,3 +1,3 @@ -hotshot_query_service::data_source::sql - Rust

Re-exports

Macros

Structs

Type Aliases

  • A data source for the APIs provided in this crate, backed by a remote PostgreSQL database.
\ No newline at end of file diff --git a/hotshot_query_service/data_source/sql/sidebar-items.js b/hotshot_query_service/data_source/sql/sidebar-items.js index a5a90d6e3..feadd0a2c 100644 --- a/hotshot_query_service/data_source/sql/sidebar-items.js +++ b/hotshot_query_service/data_source/sql/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"macro":["include_migrations"],"struct":["Error","Migration"],"type":["SqlDataSource"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"macro":["include_migrations"],"struct":["Error","Migration"],"type":["Builder","SqlDataSource"]}; \ No newline at end of file diff --git a/hotshot_query_service/data_source/sql/type.Builder.html b/hotshot_query_service/data_source/sql/type.Builder.html new file mode 100644 index 000000000..9c6e6fa9e --- /dev/null +++ b/hotshot_query_service/data_source/sql/type.Builder.html @@ -0,0 +1 @@ +Builder in hotshot_query_service::data_source::sql - Rust
pub type Builder<Types, Provider> = Builder<Types, SqlStorage, Provider>;

Aliased Type§

struct Builder<Types, Provider> { /* private fields */ }
\ No newline at end of file diff --git a/hotshot_query_service/data_source/sql/type.SqlDataSource.html b/hotshot_query_service/data_source/sql/type.SqlDataSource.html index d6d71720d..d9f509654 100644 --- a/hotshot_query_service/data_source/sql/type.SqlDataSource.html +++ b/hotshot_query_service/data_source/sql/type.SqlDataSource.html @@ -1,4 +1,4 @@ -SqlDataSource in hotshot_query_service::data_source::sql - Rust
pub type SqlDataSource<Types, P> = FetchingDataSource<Types, SqlStorage, P>;
Expand description

A data source for the APIs provided in this crate, backed by a remote PostgreSQL database.

+SqlDataSource in hotshot_query_service::data_source::sql - Rust
pub type SqlDataSource<Types, P> = FetchingDataSource<Types, SqlStorage, P>;
Expand description

A data source for the APIs provided in this crate, backed by a remote PostgreSQL database.

Administration

This data source will automatically connect to and perform queries on a remote SQL database. However, administration of the database, such as initialization, resetting, and backups, is @@ -92,7 +92,7 @@

Synchronization

also be rolled back completely using revert.

Internally, the data source maintains an open Transaction whenever there are outstanding changes, and commits the transaction on commit. The -underlying database transaction can be accessed directly via transaction, +underlying database transaction can be accessed directly via transaction, which makes it possible to compose application-specific database updates atomically with updates made by the SqlDataSource itself. This is useful for extension and composition.

@@ -118,24 +118,24 @@

Extension

is more involved, but still possible. Follow the steps for custom migrations to modify the database schema to account for the new data you want to store. You can then access this data through the SqlDataSource using -query to run a custom read-only SQL query or transaction +query to run a custom read-only SQL query or transaction to execute a custom atomic mutation of the database. If you use -transaction, be sure to call +transaction, be sure to call commit when you are ready to persist your changes.

-

You will typically use query to read custom data in API endpoint handlers and -transaction to populate custom data in your web server’s update loop.

+

You will typically use query to read custom data in API endpoint handlers and +transaction to populate custom data in your web server’s update loop.

Composition

Composing SqlDataSource with other module states is fairly simple – just create an aggregate struct containing both SqlDataSource and your additional module states, as described in the composition guide. If the additional modules have data that should live in the same database as the SqlDataSource data, you can follow the steps in custom migrations to accomodate this. When modifying that -data, you can use transaction to atomically synchronize updates to the +data, you can use transaction to atomically synchronize updates to the other modules’ data with updates to the SqlDataSource. If the additional data is completely independent of HotShot query service data and does not need to be synchronized, you can also connect to the database directly to make updates.

In the following example, we compose HotShot query service modules with other application- -specific modules, synchronizing updates using transaction.

+specific modules, synchronizing updates using transaction.

struct AppState {
     hotshot_qs: SqlDataSource<AppTypes, NoFetching>,
@@ -176,18 +176,25 @@ 

Composition

Ok(app) }
-

Aliased Type§

struct SqlDataSource<Types, P> { /* private fields */ }

Implementations§

source§

impl<Types, P: Send + Sync> SqlDataSource<Types, P>where +

Aliased Type§

struct SqlDataSource<Types, P> { /* private fields */ }

Implementations§

source§

impl<Types, P: AvailabilityProvider<Types>> SqlDataSource<Types, P>where Types: NodeType, - Payload<Types>: QueryablePayload,

source

pub async fn connect(config: Config, provider: P) -> Result<Self, Error>

Connect to a remote database.

-
source§

impl<Types, P> SqlDataSource<Types, P>where - Types: NodeType,

source

pub async fn transaction(&mut self) -> QueryResult<Transaction<'_>>

Access the transaction which is accumulating all uncommitted changes to the data source.

+ Payload<Types>: QueryablePayload,

source

pub async fn connect( + config: Config, + provider: P +) -> Result<Builder<Types, P>, Error>

Connect to a remote database.

+

This function returns a fetching::Builder which can be used to set options on the +underlying FetchingDataSource, before constructing the SqlDataSource with +build. For a convenient constructor that uses the default +fetching options, see Config::connect.

+
source§

impl<Types, P> SqlDataSource<Types, P>where + Types: NodeType,

source

pub async fn transaction(&mut self) -> QueryResult<Transaction<'_>>

Access the transaction which is accumulating all uncommitted changes to the data source.

This can be used to manually group database modifications to custom state atomically with modifications made through the SqlDataSource.

If there is no currently open transaction, a new transaction will be opened. No changes made through the transaction objeect returned by this method will be persisted until commit is called.

-

Trait Implementations§

source§

impl<Types, P: Send + Sync> Query for SqlDataSource<Types, P>where - Types: NodeType,

source§

fn client<'life0, 'async_trait>( +

Trait Implementations§

source§

impl<Types, P: Send + Sync> Query for SqlDataSource<Types, P>where + Types: NodeType,

source§

fn client<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Cow<'_, Arc<Client>>> + Send + 'async_trait>>where Self: 'async_trait, @@ -246,4 +253,4 @@

Composition

T: ?Sized + ToStatement + Sync + 'async_trait, Self: Sync + 'async_trait, 'life0: 'async_trait, - 'life1: 'async_trait,

Query the underlying SQL database with no parameters, returning zero or one results.

\ No newline at end of file + 'life1: 'async_trait,

Query the underlying SQL database with no parameters, returning zero or one results.

\ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/fs/struct.FileSystemStorage.html b/hotshot_query_service/data_source/storage/fs/struct.FileSystemStorage.html index 897a4bb2f..3ed89d3fc 100644 --- a/hotshot_query_service/data_source/storage/fs/struct.FileSystemStorage.html +++ b/hotshot_query_service/data_source/storage/fs/struct.FileSystemStorage.html @@ -94,7 +94,7 @@ Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

source§

impl<Types: NodeType> UpdateAvailabilityData<Types> for FileSystemStorage<Types>where - Payload<Types>: QueryablePayload,

§

type Error = PersistenceError

source§

fn insert_leaf<'life0, 'async_trait>( + Payload<Types>: QueryablePayload,

§

type Error = PersistenceError

source§

fn insert_leaf<'life0, 'async_trait>( &'life0 mut self, leaf: LeafQueryData<Types> ) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where @@ -105,7 +105,7 @@ ) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,

source§

impl<Types: NodeType> UpdateNodeData<Types> for FileSystemStorage<Types>where - Payload<Types>: QueryablePayload,

§

type Error = PersistenceError

source§

fn insert_leaf<'life0, 'async_trait>( + Payload<Types>: QueryablePayload,

§

type Error = PersistenceError

source§

fn insert_leaf<'life0, 'async_trait>( &'life0 mut self, leaf: LeafQueryData<Types> ) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where diff --git a/hotshot_query_service/data_source/storage/index.html b/hotshot_query_service/data_source/storage/index.html index 6c75bb04d..1ab9bfed5 100644 --- a/hotshot_query_service/data_source/storage/index.html +++ b/hotshot_query_service/data_source/storage/index.html @@ -1,12 +1,13 @@ -hotshot_query_service::data_source::storage - Rust
Expand description

Persistent storage for data sources.

+hotshot_query_service::data_source::storage - Rust
Expand description

Persistent storage for data sources.

Naturally, an archival query service such as this is heavily dependent on a persistent storage implementation. This module defines the interfaces required of this storage. Any storage layer implementing the appropriate interfaces can be used as the storage layer when constructing a -FetchingDataSource, which can in turn be used to instantiate the +FetchingDataSource, which can in turn be used to instantiate the REST APIs provided by this crate.

This module also comes with a few pre-built persistence implementations:

Re-exports

Modules

Traits

\ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/sql/struct.Config.html b/hotshot_query_service/data_source/storage/sql/struct.Config.html index bf7f10838..9dd531f29 100644 --- a/hotshot_query_service/data_source/storage/sql/struct.Config.html +++ b/hotshot_query_service/data_source/storage/sql/struct.Config.html @@ -1,10 +1,17 @@ -Config in hotshot_query_service::data_source::storage::sql - Rust
pub struct Config { /* private fields */ }
Expand description

Postgres client config.

-

Implementations§

source§

impl Config

source

pub async fn connect<Types, P: Send + Sync>( +Config in hotshot_query_service::data_source::storage::sql - Rust
pub struct Config { /* private fields */ }
Expand description

Postgres client config.

+

Implementations§

source§

impl Config

source

pub async fn connect<Types, P: AvailabilityProvider<Types>>( self, provider: P ) -> Result<SqlDataSource<Types, P>, Error>where Types: NodeType, Payload<Types>: QueryablePayload,

Connect to the database with this config.

+
source

pub async fn builder<Types, P: AvailabilityProvider<Types>>( + self, + provider: P +) -> Result<Builder<Types, P>, Error>where + Types: NodeType, + Payload<Types>: QueryablePayload,

Connect to the database, setting options on the underlying FetchingDataSource using the +fetching::Builder interface.

source§

impl Config

source

pub fn host(self, host: impl Into<String>) -> Self

Set the hostname of the database server.

The default is localhost.

source

pub fn port(self, port: u16) -> Self

Set the port on which to connect to the database.

diff --git a/hotshot_query_service/data_source/storage/sql/struct.SqlStorage.html b/hotshot_query_service/data_source/storage/sql/struct.SqlStorage.html index 2ad783152..0791ff6c9 100644 --- a/hotshot_query_service/data_source/storage/sql/struct.SqlStorage.html +++ b/hotshot_query_service/data_source/storage/sql/struct.SqlStorage.html @@ -125,7 +125,7 @@ 'life0: 'async_trait, 'life1: 'async_trait,

Query the underlying SQL database with no parameters, returning zero or one results.
source§

impl<Types> UpdateAvailabilityData<Types> for SqlStoragewhere Types: NodeType, - Payload<Types>: QueryablePayload,

§

type Error = QueryError

source§

fn insert_leaf<'life0, 'async_trait>( + Payload<Types>: QueryablePayload,

§

type Error = QueryError

source§

fn insert_leaf<'life0, 'async_trait>( &'life0 mut self, leaf: LeafQueryData<Types> ) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where @@ -136,12 +136,12 @@ ) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,

source§

impl<Types> UpdateNodeData<Types> for SqlStoragewhere - Types: NodeType,

§

type Error = QueryError

source§

fn insert_leaf<'life0, 'async_trait>( + Types: NodeType,

§

type Error = QueryError

source§

fn insert_leaf<'life0, 'async_trait>( &'life0 mut self, _leaf: LeafQueryData<Types> ) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where Self: 'async_trait, - 'life0: 'async_trait,

source§

impl VersionedDataSource for SqlStorage

§

type Error = Error

source§

fn commit<'life0, 'async_trait>( + 'life0: 'async_trait,

source§

impl VersionedDataSource for SqlStorage

§

type Error = Error

source§

fn commit<'life0, 'async_trait>( &'life0 mut self ) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where Self: 'async_trait, diff --git a/hotshot_query_service/data_source/storage/sql/trait.Query.html b/hotshot_query_service/data_source/storage/sql/trait.Query.html index d5e6e35a9..8eda38136 100644 --- a/hotshot_query_service/data_source/storage/sql/trait.Query.html +++ b/hotshot_query_service/data_source/storage/sql/trait.Query.html @@ -134,5 +134,5 @@

Object Safety§

This trait is not object safe.

Implementors§

source§

impl Query for SqlStorage

source§

impl<'a> Query for Transaction<'a>

Query the underlying SQL database.

The results will reflect the state after the statements thus far added to this transaction have been applied, even though those effects have not been committed to the database yet.

-
source§

impl<Types, P: Send + Sync> Query for SqlDataSource<Types, P>where +

source§

impl<Types, P: Send + Sync> Query for SqlDataSource<Types, P>where Types: NodeType,

\ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/trait.AvailabilityStorage.html b/hotshot_query_service/data_source/storage/trait.AvailabilityStorage.html index 886334cfb..4ada870a1 100644 --- a/hotshot_query_service/data_source/storage/trait.AvailabilityStorage.html +++ b/hotshot_query_service/data_source/storage/trait.AvailabilityStorage.html @@ -1,4 +1,4 @@ -AvailabilityStorage in hotshot_query_service::data_source::storage - Rust
pub trait AvailabilityStorage<Types>: UpdateAvailabilityData<Types> + VersionedDataSource + Send + Syncwhere
+AvailabilityStorage in hotshot_query_service::data_source::storage - Rust
pub trait AvailabilityStorage<Types>: UpdateAvailabilityData<Types> + VersionedDataSource + Send + Syncwhere
     Types: NodeType,
     Payload<Types>: QueryablePayload,{
     // Required methods
@@ -65,45 +65,45 @@
 data.

Rust gives us ways to abstract and deduplicate these two similar APIs, but they do not lead to a better interface.

-

Required Methods§

source

fn get_leaf<'life0, 'async_trait>( +

Required Methods§

source

fn get_leaf<'life0, 'async_trait>( &'life0 self, id: LeafId<Types> ) -> Pin<Box<dyn Future<Output = QueryResult<LeafQueryData<Types>>> + Send + 'async_trait>>where Self: 'async_trait, - 'life0: 'async_trait,

source

fn get_block<'life0, 'async_trait>( + 'life0: 'async_trait,

source

fn get_block<'life0, 'async_trait>( &'life0 self, id: BlockId<Types> ) -> Pin<Box<dyn Future<Output = QueryResult<BlockQueryData<Types>>> + Send + 'async_trait>>where Self: 'async_trait, - 'life0: 'async_trait,

source

fn get_header<'life0, 'async_trait>( + 'life0: 'async_trait,

source

fn get_header<'life0, 'async_trait>( &'life0 self, id: BlockId<Types> ) -> Pin<Box<dyn Future<Output = QueryResult<Header<Types>>> + Send + 'async_trait>>where Self: 'async_trait, - 'life0: 'async_trait,

source

fn get_payload<'life0, 'async_trait>( + 'life0: 'async_trait,

source

fn get_payload<'life0, 'async_trait>( &'life0 self, id: BlockId<Types> ) -> Pin<Box<dyn Future<Output = QueryResult<PayloadQueryData<Types>>> + Send + 'async_trait>>where Self: 'async_trait, - 'life0: 'async_trait,

source

fn get_leaf_range<'life0, 'async_trait, R>( + 'life0: 'async_trait,

source

fn get_leaf_range<'life0, 'async_trait, R>( &'life0 self, range: R ) -> Pin<Box<dyn Future<Output = QueryResult<Vec<QueryResult<LeafQueryData<Types>>>>> + Send + 'async_trait>>where R: RangeBounds<usize> + Send + 'static + 'async_trait, Self: 'async_trait, - 'life0: 'async_trait,

source

fn get_block_range<'life0, 'async_trait, R>( + 'life0: 'async_trait,

source

fn get_block_range<'life0, 'async_trait, R>( &'life0 self, range: R ) -> Pin<Box<dyn Future<Output = QueryResult<Vec<QueryResult<BlockQueryData<Types>>>>> + Send + 'async_trait>>where R: RangeBounds<usize> + Send + 'static + 'async_trait, Self: 'async_trait, - 'life0: 'async_trait,

source

fn get_payload_range<'life0, 'async_trait, R>( + 'life0: 'async_trait,

source

fn get_payload_range<'life0, 'async_trait, R>( &'life0 self, range: R ) -> Pin<Box<dyn Future<Output = QueryResult<Vec<QueryResult<PayloadQueryData<Types>>>>> + Send + 'async_trait>>where R: RangeBounds<usize> + Send + 'static + 'async_trait, Self: 'async_trait, - 'life0: 'async_trait,

source

fn get_block_with_transaction<'life0, 'async_trait>( + 'life0: 'async_trait,

source

fn get_block_with_transaction<'life0, 'async_trait>( &'life0 self, hash: TransactionHash<Types> ) -> Pin<Box<dyn Future<Output = QueryResult<(BlockQueryData<Types>, TransactionIndex<Types>)>> + Send + 'async_trait>>where diff --git a/hotshot_query_service/data_source/struct.ExtensibleDataSource.html b/hotshot_query_service/data_source/struct.ExtensibleDataSource.html index 47ee359df..cc205df48 100644 --- a/hotshot_query_service/data_source/struct.ExtensibleDataSource.html +++ b/hotshot_query_service/data_source/struct.ExtensibleDataSource.html @@ -133,7 +133,7 @@ 'life0: 'async_trait,

source§

impl<D, U, Types> UpdateAvailabilityData<Types> for ExtensibleDataSource<D, U>where D: UpdateAvailabilityData<Types> + Send + Sync, U: Send + Sync, - Types: NodeType,

§

type Error = <D as UpdateAvailabilityData<Types>>::Error

source§

fn insert_leaf<'life0, 'async_trait>( + Types: NodeType,

§

type Error = <D as UpdateAvailabilityData<Types>>::Error

source§

fn insert_leaf<'life0, 'async_trait>( &'life0 mut self, leaf: LeafQueryData<Types> ) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where @@ -146,14 +146,14 @@ 'life0: 'async_trait,

source§

impl<D, U, Types> UpdateNodeData<Types> for ExtensibleDataSource<D, U>where D: UpdateNodeData<Types> + Send + Sync, U: Send + Sync, - Types: NodeType,

§

type Error = <D as UpdateNodeData<Types>>::Error

source§

fn insert_leaf<'life0, 'async_trait>( + Types: NodeType,

§

type Error = <D as UpdateNodeData<Types>>::Error

source§

fn insert_leaf<'life0, 'async_trait>( &'life0 mut self, leaf: LeafQueryData<Types> ) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,

source§

impl<D, U> VersionedDataSource for ExtensibleDataSource<D, U>where D: VersionedDataSource + Send, - U: Send,

§

type Error = <D as VersionedDataSource>::Error

source§

fn commit<'life0, 'async_trait>( + U: Send,

§

type Error = <D as VersionedDataSource>::Error

source§

fn commit<'life0, 'async_trait>( &'life0 mut self ) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where Self: 'async_trait, diff --git a/hotshot_query_service/data_source/struct.FetchingDataSource.html b/hotshot_query_service/data_source/struct.FetchingDataSource.html deleted file mode 100644 index 64fd43766..000000000 --- a/hotshot_query_service/data_source/struct.FetchingDataSource.html +++ /dev/null @@ -1,355 +0,0 @@ -FetchingDataSource in hotshot_query_service::data_source - Rust
pub struct FetchingDataSource<Types, S, P>where
-    Types: NodeType,{ /* private fields */ }
Expand description

The most basic kind of data source.

-

A data source is constructed modularly by combining a storage implementation -with a Fetcher. The former allows the query service to store the -data it has persistently in an easily accessible storage medium, such as the local file system -or a database. This allows it to answer queries efficiently and to maintain its state across -restarts. The latter allows the query service to fetch data that is missing from its storage -from an external data availability provider, such as the Tiramisu DA network or another instance -of the query service.

-

These two components of a data source are combined in FetchingDataSource, which is the -lowest level kind of data source available. It simply uses the storage implementation to fetch -data when available, and fills in everything else using the fetcher. Various kinds of data -sources can be constructed out of FetchingDataSource by changing the storage and fetcher -implementations used, and more complex data sources can be built on top using data source -combinators.

-

Implementations§

source§

impl<Types, S, P> FetchingDataSource<Types, S, P>where - Types: NodeType, - Payload<Types>: QueryablePayload, - S: NodeDataSource<Types> + UpdateNodeData<Types> + AvailabilityStorage<Types> + VersionedDataSource, - P: Send + Sync,

source

pub async fn new(storage: S, provider: P) -> Result<Self>

Create a data source with local storage and a remote data availability provider.

-
source

pub async fn with_retry_delay( - storage: S, - provider: P, - delay: Option<Duration> -) -> Result<Self>

source§

impl<Types, S, P> FetchingDataSource<Types, S, P>where - Types: NodeType,

source

pub async fn storage(&self) -> StorageReadGuard<'_, Types, S>

Obtain direct, read-only access to the underlying local storage.

-
source

pub async fn storage_mut(&self) -> StorageWriteGuard<'_, Types, S>

Obtain direct, mutable access the underlying local storage.

-
source§

impl<Types: NodeType, P> FetchingDataSource<Types, FileSystemStorage<Types>, P>where - Payload<Types>: QueryablePayload, - P: Send + Sync,

source

pub async fn create(path: &Path, provider: P) -> Result<Self>

Create a new FileSystemDataSource with storage at path.

-

If there is already data at path, it will be archived.

-

The FileSystemDataSource will manage its own persistence synchronization.

-
source

pub async fn open(path: &Path, provider: P) -> Result<Self>

Open an existing FileSystemDataSource from storage at path.

-

If there is no data at path, a new store will be created.

-

The FileSystemDataSource will manage its own persistence synchronization.

-
source

pub async fn create_with_store( - loader: &mut AtomicStoreLoader, - provider: P -) -> Result<Self>

Create a new FileSystemDataSource using a persistent storage loader.

-

If there is existing data corresponding to the FileSystemDataSource data structures, it -will be archived.

-

The FileSystemDataSource will register its persistent data structures with loader. The -caller is responsible for creating an AtomicStore from loader -and managing synchronization of the store.

-
source

pub async fn open_with_store( - loader: &mut AtomicStoreLoader, - provider: P -) -> Result<Self>

Open an existing FileSystemDataSource using a persistent storage loader.

-

If there is no existing data corresponding to the FileSystemDataSource data structures, a -new store will be created.

-

The FileSystemDataSource will register its persistent data structures with loader. The -caller is responsible for creating an AtomicStore from loader -and managing synchronization of the store.

-
source

pub async fn skip_version(&mut self) -> Result<()>

Advance the version of the persistent store without committing changes to persistent state.

-

This function is useful when the AtomicStore synchronizing -storage for this FileSystemDataSource is being managed by the caller. The caller may want -to persist some changes to other modules whose state is managed by the same -AtomicStore. In order to call -AtomicStore::commit_version, the version of -this FileSystemDataSource must be advanced, either by -commit or, if there are no outstanding changes, -skip_version.

-
source§

impl<Types, P: Send + Sync> FetchingDataSource<Types, SqlStorage, P>where - Types: NodeType, - Payload<Types>: QueryablePayload,

source

pub async fn connect(config: Config, provider: P) -> Result<Self, Error>

Connect to a remote database.

-
source§

impl<Types, P> FetchingDataSource<Types, SqlStorage, P>where - Types: NodeType,

source

pub async fn transaction(&mut self) -> QueryResult<Transaction<'_>>

Access the transaction which is accumulating all uncommitted changes to the data source.

-

This can be used to manually group database modifications to custom state atomically with -modifications made through the SqlDataSource.

-

If there is no currently open transaction, a new transaction will be opened. No changes -made through the transaction objeect returned by this method will be persisted until -commit is called.

-

Trait Implementations§

source§

impl<Types, S, P> AvailabilityDataSource<Types> for FetchingDataSource<Types, S, P>where - Types: NodeType, - Payload<Types>: QueryablePayload, - S: AvailabilityStorage<Types> + 'static, - P: AvailabilityProvider<Types>,

§

type LeafRange<R> = Pin<Box<dyn Stream<Item = Fetch<LeafQueryData<Types>>> + Send>> -where - R: RangeBounds<usize> + Send

§

type BlockRange<R> = Pin<Box<dyn Stream<Item = Fetch<BlockQueryData<Types>>> + Send>> -where - R: RangeBounds<usize> + Send

§

type PayloadRange<R> = Pin<Box<dyn Stream<Item = Fetch<PayloadQueryData<Types>>> + Send>> -where - R: RangeBounds<usize> + Send

source§

fn get_leaf<'life0, 'async_trait, ID>( - &'life0 self, - id: ID -) -> Pin<Box<dyn Future<Output = Fetch<LeafQueryData<Types>>> + Send + 'async_trait>>where - ID: Into<LeafId<Types>> + Send + Sync + 'async_trait, - Self: 'async_trait, - 'life0: 'async_trait,

source§

fn get_block<'life0, 'async_trait, ID>( - &'life0 self, - id: ID -) -> Pin<Box<dyn Future<Output = Fetch<BlockQueryData<Types>>> + Send + 'async_trait>>where - ID: Into<BlockId<Types>> + Send + Sync + 'async_trait, - Self: 'async_trait, - 'life0: 'async_trait,

source§

fn get_payload<'life0, 'async_trait, ID>( - &'life0 self, - id: ID -) -> Pin<Box<dyn Future<Output = Fetch<PayloadQueryData<Types>>> + Send + 'async_trait>>where - ID: Into<BlockId<Types>> + Send + Sync + 'async_trait, - Self: 'async_trait, - 'life0: 'async_trait,

source§

fn get_leaf_range<'life0, 'async_trait, R>( - &'life0 self, - range: R -) -> Pin<Box<dyn Future<Output = Self::LeafRange<R>> + Send + 'async_trait>>where - R: RangeBounds<usize> + Send + 'static + 'async_trait, - Self: 'async_trait, - 'life0: 'async_trait,

source§

fn get_block_range<'life0, 'async_trait, R>( - &'life0 self, - range: R -) -> Pin<Box<dyn Future<Output = Self::BlockRange<R>> + Send + 'async_trait>>where - R: RangeBounds<usize> + Send + 'static + 'async_trait, - Self: 'async_trait, - 'life0: 'async_trait,

source§

fn get_payload_range<'life0, 'async_trait, R>( - &'life0 self, - range: R -) -> Pin<Box<dyn Future<Output = Self::PayloadRange<R>> + Send + 'async_trait>>where - R: RangeBounds<usize> + Send + 'static + 'async_trait, - Self: 'async_trait, - 'life0: 'async_trait,

source§

fn get_block_with_transaction<'life0, 'async_trait>( - &'life0 self, - hash: TransactionHash<Types> -) -> Pin<Box<dyn Future<Output = Fetch<(BlockQueryData<Types>, TransactionIndex<Types>)>> + Send + 'async_trait>>where - Self: 'async_trait, - 'life0: 'async_trait,

Returns the block containing a transaction with the given hash and the transaction’s -position in the block.
source§

fn subscribe_blocks<'life0, 'async_trait>( - &'life0 self, - from: usize -) -> Pin<Box<dyn Future<Output = BoxStream<'static, BlockQueryData<Types>>> + Send + 'async_trait>>where - Self: Sync + 'async_trait, - 'life0: 'async_trait,

source§

fn subscribe_payloads<'life0, 'async_trait>( - &'life0 self, - from: usize -) -> Pin<Box<dyn Future<Output = BoxStream<'static, PayloadQueryData<Types>>> + Send + 'async_trait>>where - Self: Sync + 'async_trait, - 'life0: 'async_trait,

source§

fn subscribe_leaves<'life0, 'async_trait>( - &'life0 self, - from: usize -) -> Pin<Box<dyn Future<Output = BoxStream<'static, LeafQueryData<Types>>> + Send + 'async_trait>>where - Self: Sync + 'async_trait, - 'life0: 'async_trait,

source§

impl<Types, S, P> Clone for FetchingDataSource<Types, S, P>where - Types: NodeType,

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<Types, S, P> Debug for FetchingDataSource<Types, S, P>where - Types: NodeType, - S: Debug, - P: Debug,

source§

fn fmt(&self, __f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Types, S, P> NodeDataSource<Types> for FetchingDataSource<Types, S, P>where - Types: NodeType, - S: NodeDataSource<Types> + Send + Sync, - P: Send + Sync,

source§

fn block_height<'life0, 'async_trait>( - &'life0 self -) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>where - Self: 'async_trait, - 'life0: 'async_trait,

source§

fn get_proposals<'life0, 'life1, 'async_trait>( - &'life0 self, - proposer: &'life1 SignatureKey<Types>, - limit: Option<usize> -) -> Pin<Box<dyn Future<Output = QueryResult<Vec<LeafQueryData<Types>>>> + Send + 'async_trait>>where - Self: 'async_trait, - 'life0: 'async_trait, - 'life1: 'async_trait,

source§

fn count_proposals<'life0, 'life1, 'async_trait>( - &'life0 self, - proposer: &'life1 SignatureKey<Types> -) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>where - Self: 'async_trait, - 'life0: 'async_trait, - 'life1: 'async_trait,

source§

impl<Types, S, P> StatusDataSource for FetchingDataSource<Types, S, P>where - Types: NodeType, - S: NodeDataSource<Types> + Send + Sync, - P: Send + Sync,

source§

fn block_height<'life0, 'async_trait>( - &'life0 self -) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>where - Self: 'async_trait, - 'life0: 'async_trait,

source§

fn metrics(&self) -> &PrometheusMetrics

source§

fn consensus_metrics(&self) -> QueryResult<PrometheusMetrics>

source§

fn mempool_info<'life0, 'async_trait>( - &'life0 self -) -> Pin<Box<dyn Future<Output = QueryResult<MempoolQueryData>> + Send + 'async_trait>>where - Self: Sync + 'async_trait, - 'life0: 'async_trait,

source§

fn success_rate<'life0, 'async_trait>( - &'life0 self -) -> Pin<Box<dyn Future<Output = QueryResult<f64>> + Send + 'async_trait>>where - Self: Sync + 'async_trait, - 'life0: 'async_trait,

source§

impl<Types, S, P> UpdateAvailabilityData<Types> for FetchingDataSource<Types, S, P>where - Types: NodeType, - Payload<Types>: QueryablePayload, - S: UpdateAvailabilityData<Types> + Send + Sync, - P: Send + Sync,

§

type Error = <S as UpdateAvailabilityData<Types>>::Error

source§

fn insert_leaf<'life0, 'async_trait>( - &'life0 mut self, - leaf: LeafQueryData<Types> -) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where - Self: 'async_trait, - 'life0: 'async_trait,

source§

fn insert_block<'life0, 'async_trait>( - &'life0 mut self, - block: BlockQueryData<Types> -) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where - Self: 'async_trait, - 'life0: 'async_trait,

source§

impl<Types, S, P> UpdateNodeData<Types> for FetchingDataSource<Types, S, P>where - Types: NodeType, - S: UpdateNodeData<Types> + Send + Sync, - P: Send + Sync,

§

type Error = <S as UpdateNodeData<Types>>::Error

source§

fn insert_leaf<'life0, 'async_trait>( - &'life0 mut self, - leaf: LeafQueryData<Types> -) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where - Self: 'async_trait, - 'life0: 'async_trait,

source§

impl<Types, S, P> VersionedDataSource for FetchingDataSource<Types, S, P>where - Types: NodeType, - S: VersionedDataSource + Send + Sync, - P: Send + Sync,

§

type Error = <S as VersionedDataSource>::Error

source§

fn commit<'life0, 'async_trait>( - &'life0 mut self -) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where - Self: 'async_trait, - 'life0: 'async_trait,

Atomically commit to all outstanding modifications to the data. Read more
source§

fn revert<'life0, 'async_trait>( - &'life0 mut self -) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where - Self: 'async_trait, - 'life0: 'async_trait,

Erase all oustanding modifications to the data. Read more

Auto Trait Implementations§

§

impl<Types, S, P> !RefUnwindSafe for FetchingDataSource<Types, S, P>

§

impl<Types, S, P> Send for FetchingDataSource<Types, S, P>where - P: Send + Sync, - S: Send + Sync,

§

impl<Types, S, P> Sync for FetchingDataSource<Types, S, P>where - P: Send + Sync, - S: Send + Sync,

§

impl<Types, S, P> Unpin for FetchingDataSource<Types, S, P>

§

impl<Types, S, P> !UnwindSafe for FetchingDataSource<Types, S, P>

Blanket Implementations§

source§

impl<T> Any for Twhere - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere - T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere - T: 'a,

§

fn implicit( - self, - class: Class, - constructed: bool, - tag: u32 -) -> TaggedParser<'a, Implicit, Self, E>

source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> Twhere - Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> Downcast for Twhere - T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can -then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be -further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot -generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot -generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for Twhere - T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be -further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> DynClone for Twhere - T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

source§

impl<T> DynClone for Twhere - T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>where - Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>where - Self: Display,

Causes self to use its Display implementation when -Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>where - Self: LowerExp,

Causes self to use its LowerExp implementation when -Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>where - Self: LowerHex,

Causes self to use its LowerHex implementation when -Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>where - Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>where - Self: Pointer,

Causes self to use its Pointer implementation when -Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>where - Self: UpperExp,

Causes self to use its UpperExp implementation when -Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>where - Self: UpperHex,

Causes self to use its UpperHex implementation when -Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>where - &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an -Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an -Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

-

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
§

impl<D> OwoColorize for D

§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where - C: Color,

Set the foreground color generically Read more
§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where - C: Color,

Set the background color generically. Read more
§

fn black<'a>(&'a self) -> FgColorDisplay<'a, Black, Self>

Change the foreground color to black
§

fn on_black<'a>(&'a self) -> BgColorDisplay<'a, Black, Self>

Change the background color to black
§

fn red<'a>(&'a self) -> FgColorDisplay<'a, Red, Self>

Change the foreground color to red
§

fn on_red<'a>(&'a self) -> BgColorDisplay<'a, Red, Self>

Change the background color to red
§

fn green<'a>(&'a self) -> FgColorDisplay<'a, Green, Self>

Change the foreground color to green
§

fn on_green<'a>(&'a self) -> BgColorDisplay<'a, Green, Self>

Change the background color to green
§

fn yellow<'a>(&'a self) -> FgColorDisplay<'a, Yellow, Self>

Change the foreground color to yellow
§

fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>

Change the background color to yellow
§

fn blue<'a>(&'a self) -> FgColorDisplay<'a, Blue, Self>

Change the foreground color to blue
§

fn on_blue<'a>(&'a self) -> BgColorDisplay<'a, Blue, Self>

Change the background color to blue
§

fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>

Change the foreground color to magenta
§

fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>

Change the background color to magenta
§

fn purple<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>

Change the foreground color to purple
§

fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>

Change the background color to purple
§

fn cyan<'a>(&'a self) -> FgColorDisplay<'a, Cyan, Self>

Change the foreground color to cyan
§

fn on_cyan<'a>(&'a self) -> BgColorDisplay<'a, Cyan, Self>

Change the background color to cyan
§

fn white<'a>(&'a self) -> FgColorDisplay<'a, White, Self>

Change the foreground color to white
§

fn on_white<'a>(&'a self) -> BgColorDisplay<'a, White, Self>

Change the background color to white
§

fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>

Change the foreground color to the terminal default
§

fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>

Change the background color to the terminal default
§

fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>

Change the foreground color to bright black
§

fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>

Change the background color to bright black
§

fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>

Change the foreground color to bright red
§

fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>

Change the background color to bright red
§

fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>

Change the foreground color to bright green
§

fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>

Change the background color to bright green
§

fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>

Change the foreground color to bright yellow
§

fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>

Change the background color to bright yellow
§

fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>

Change the foreground color to bright blue
§

fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>

Change the background color to bright blue
§

fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>

Change the foreground color to bright magenta
§

fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>

Change the background color to bright magenta
§

fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>

Change the foreground color to bright purple
§

fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>

Change the background color to bright purple
§

fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>

Change the foreground color to bright cyan
§

fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>

Change the background color to bright cyan
§

fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>

Change the foreground color to bright white
§

fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>

Change the background color to bright white
§

fn bold<'a>(&'a self) -> BoldDisplay<'a, Self>

Make the text bold
§

fn dimmed<'a>(&'a self) -> DimDisplay<'a, Self>

Make the text dim
§

fn italic<'a>(&'a self) -> ItalicDisplay<'a, Self>

Make the text italicized
§

fn underline<'a>(&'a self) -> UnderlineDisplay<'a, Self>

Make the text italicized
Make the text blink
Make the text blink (but fast!)
§

fn reversed<'a>(&'a self) -> ReversedDisplay<'a, Self>

Swap the foreground and background colors
§

fn hidden<'a>(&'a self) -> HiddenDisplay<'a, Self>

Hide the text
§

fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, Self>

Cross out the text
§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where - Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at -compile-time. If the color is constant, use either OwoColorize::fg or -a color-specific method, such as OwoColorize::green, Read more
§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where - Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at -compile-time. If the color is constant, use either OwoColorize::bg or -a color-specific method, such as OwoColorize::on_yellow, Read more
§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( - &self -) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( - &self -) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
§

impl<T> Pipe for Twhere - T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere - Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere - R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere - R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere - Self: Borrow<B>, - B: 'a + ?Sized, - R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( - &'a mut self, - func: impl FnOnce(&'a mut B) -> R -) -> Rwhere - Self: BorrowMut<B>, - B: 'a + ?Sized, - R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe -function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere - Self: AsRef<U>, - U: 'a + ?Sized, - R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere - Self: AsMut<U>, - U: 'a + ?Sized, - R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe -function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> Rwhere - Self: Deref<Target = T>, - T: 'a + ?Sized, - R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( - &'a mut self, - func: impl FnOnce(&'a mut T) -> R -) -> Rwhere - Self: DerefMut<Target = T> + Deref, - T: 'a + ?Sized, - R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe -function.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere - Self: Borrow<B>, - B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere - Self: BorrowMut<B>, - B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere - Self: AsRef<R>, - R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere - Self: AsMut<R>, - R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere - Self: Deref<Target = T>, - T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere - Self: DerefMut<Target = T> + Deref, - T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release -builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere - Self: Borrow<B>, - B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release -builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere - Self: BorrowMut<B>, - B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release -builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere - Self: AsRef<R>, - R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release -builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere - Self: AsMut<R>, - R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release -builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Selfwhere - Self: Deref<Target = T>, - T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release -builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere - Self: DerefMut<Target = T> + Deref, - T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release -builds.
source§

impl<T> ToOwned for Twhere - T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>where - Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<Types, T> UpdateDataSource<Types> for Twhere - Types: NodeType, - T: UpdateAvailabilityData<Types> + UpdateNodeData<Types, Error = <T as UpdateAvailabilityData<Types>>::Error> + UpdateStatusData + Send,

source§

fn update<'life0, 'life1, 'async_trait>( - &'life0 mut self, - event: &'life1 Event<Types> -) -> Pin<Box<dyn Future<Output = Result<(), <T as UpdateAvailabilityData<Types>>::Error>> + Send + 'async_trait>>where - 'life0: 'async_trait, - 'life1: 'async_trait, - T: 'async_trait,

Update query state based on a new consensus event. Read more
source§

impl<T> UpdateStatusData for Twhere - T: StatusDataSource,

source§

fn populate_metrics(&self) -> Box<dyn Metrics>

§

impl<V, T> VZip<V> for Twhere - V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where - S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where - S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a -WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more
§

impl<T> PassType for Twhere - T: Clone + Debug + Sync + Send + 'static,

\ No newline at end of file diff --git a/hotshot_query_service/data_source/trait.VersionedDataSource.html b/hotshot_query_service/data_source/trait.VersionedDataSource.html index 21946f8ff..28911c530 100644 --- a/hotshot_query_service/data_source/trait.VersionedDataSource.html +++ b/hotshot_query_service/data_source/trait.VersionedDataSource.html @@ -39,7 +39,7 @@ changes to the database is considered a fatal error, and this function may panic.

Implementors§

source§

impl VersionedDataSource for SqlStorage

§

type Error = Error

source§

impl<D, U> VersionedDataSource for ExtensibleDataSource<D, U>where D: VersionedDataSource + Send, - U: Send,

source§

impl<Types, S, P> VersionedDataSource for FetchingDataSource<Types, S, P>where + U: Send,

source§

impl<Types, S, P> VersionedDataSource for FetchingDataSource<Types, S, P>where Types: NodeType, S: VersionedDataSource + Send + Sync, P: Send + Sync,

source§

impl<Types: NodeType> VersionedDataSource for FileSystemStorage<Types>where diff --git a/hotshot_query_service/data_source/type.FileSystemDataSource.html b/hotshot_query_service/data_source/type.FileSystemDataSource.html index 261f7c612..722a11623 100644 --- a/hotshot_query_service/data_source/type.FileSystemDataSource.html +++ b/hotshot_query_service/data_source/type.FileSystemDataSource.html @@ -1,7 +1,7 @@ -FileSystemDataSource in hotshot_query_service::data_source - Rust
pub type FileSystemDataSource<Types, P> = FetchingDataSource<Types, FileSystemStorage<Types>, P>;
Expand description

A data source for the APIs provided in this crate, backed by the local file system.

+FileSystemDataSource in hotshot_query_service::data_source - Rust
pub type FileSystemDataSource<Types, P> = FetchingDataSource<Types, FileSystemStorage<Types>, P>;
Expand description

A data source for the APIs provided in this crate, backed by the local file system.

Synchronization and atomicity of persisted data structures are provided via [atomic_store]. The methods commit, -revert, and skip_version of this +revert, and skip_version of this type can be used to control synchronization in the underlying AtomicStore.

Extension and Composition

@@ -28,15 +28,15 @@

Composition

their own persistent state, should the storage of FileSystemDataSource and the other modules be completely independent, or synchronized under the control of a single AtomicStore? FileSystemDataSource supports both patterns: -when you create it with create or open, it will open its own +when you create it with create or open, it will open its own AtomicStore and manage the synchronization of its own storage, independent of any other persistent data it might be composed with. But when you create it with -create_with_store or open_with_store, +create_with_store or open_with_store, you may ask it to register its persistent data structures with an existing [AtomicStoreLoader]. If you register other modules’ persistent data structures with the same loader, you can create one AtomicStore that synchronizes all the persistent data. Note, though, that when you choose to use -create_with_store or open_with_store, +create_with_store or open_with_store, you become responsible for ensuring that calls to AtomicStore::commit_version alternate with calls to commit or @@ -87,15 +87,15 @@

Composition

Ok(app) }
-

Aliased Type§

struct FileSystemDataSource<Types, P> { /* private fields */ }

Implementations§

source§

impl<Types: NodeType, P> FileSystemDataSource<Types, P>where +

Aliased Type§

struct FileSystemDataSource<Types, P> { /* private fields */ }

Implementations§

source§

impl<Types: NodeType, P> FileSystemDataSource<Types, P>where Payload<Types>: QueryablePayload, - P: Send + Sync,

source

pub async fn create(path: &Path, provider: P) -> Result<Self>

Create a new FileSystemDataSource with storage at path.

+ P: AvailabilityProvider<Types>,
source

pub async fn create(path: &Path, provider: P) -> Result<Self>

Create a new FileSystemDataSource with storage at path.

If there is already data at path, it will be archived.

The FileSystemDataSource will manage its own persistence synchronization.

-
source

pub async fn open(path: &Path, provider: P) -> Result<Self>

Open an existing FileSystemDataSource from storage at path.

+
source

pub async fn open(path: &Path, provider: P) -> Result<Self>

Open an existing FileSystemDataSource from storage at path.

If there is no data at path, a new store will be created.

The FileSystemDataSource will manage its own persistence synchronization.

-
source

pub async fn create_with_store( +

source

pub async fn create_with_store( loader: &mut AtomicStoreLoader, provider: P ) -> Result<Self>

Create a new FileSystemDataSource using a persistent storage loader.

@@ -104,7 +104,7 @@

Composition

The FileSystemDataSource will register its persistent data structures with loader. The caller is responsible for creating an AtomicStore from loader and managing synchronization of the store.

-
source

pub async fn open_with_store( +

source

pub async fn open_with_store( loader: &mut AtomicStoreLoader, provider: P ) -> Result<Self>

Open an existing FileSystemDataSource using a persistent storage loader.

@@ -113,7 +113,7 @@

Composition

The FileSystemDataSource will register its persistent data structures with loader. The caller is responsible for creating an AtomicStore from loader and managing synchronization of the store.

-
source

pub async fn skip_version(&mut self) -> Result<()>

Advance the version of the persistent store without committing changes to persistent state.

+
source

pub async fn skip_version(&mut self) -> Result<()>

Advance the version of the persistent store without committing changes to persistent state.

This function is useful when the AtomicStore synchronizing storage for this FileSystemDataSource is being managed by the caller. The caller may want to persist some changes to other modules whose state is managed by the same @@ -121,5 +121,5 @@

Composition

AtomicStore::commit_version, the version of this FileSystemDataSource must be advanced, either by commit or, if there are no outstanding changes, -skip_version.

-
\ No newline at end of file +skip_version.

+ \ No newline at end of file diff --git a/hotshot_query_service/enum.Error.html b/hotshot_query_service/enum.Error.html index f7af0a99e..123ac5427 100644 --- a/hotshot_query_service/enum.Error.html +++ b/hotshot_query_service/enum.Error.html @@ -12,14 +12,14 @@ message: String, status: StatusCode, }, -}

Variants§

§

Availability

Fields

§source: Error
§

Node

Fields

§source: Error
§

Status

Fields

§source: Error
§

Custom

Fields

§message: String
§status: StatusCode

Implementations§

source§

impl Error

source

pub fn internal<M: Display>(message: M) -> Self

Trait Implementations§

source§

impl Clone for Error

source§

fn clone(&self) -> Error

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for Error

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for Error

source§

fn fmt(&self, __snafu_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for Errorwhere +}

Variants§

§

Availability

Fields

§source: Error
§

Node

Fields

§source: Error
§

Status

Fields

§source: Error
§

Custom

Fields

§message: String
§status: StatusCode

Implementations§

source§

impl Error

source

pub fn internal<M: Display>(message: M) -> Self

Trait Implementations§

source§

impl Clone for Error

source§

fn clone(&self) -> Error

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for Error

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for Error

source§

fn fmt(&self, __snafu_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for Errorwhere Self: Debug + Display,

source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl Error for Error

source§

fn catch_all(status: StatusCode, message: String) -> Self

source§

fn status(&self) -> StatusCode

§

fn from_io_error(source: Error) -> Self

§

fn from_config_error(source: ConfigError) -> Self

§

fn from_route_error<E>(source: RouteError<E>) -> Selfwhere E: Display,

§

fn from_request_error(source: RequestError) -> Self

§

fn from_socket_error<E>(source: SocketError<E>) -> Selfwhere E: Display,

§

fn into_tide_error(self) -> Error

§

fn from_server_error(source: Error) -> Self

source§

impl ErrorCompat for Error

source§

fn backtrace(&self) -> Option<&Backtrace>

Returns a Backtrace that may be printed.
§

fn iter_chain(&self) -> ChainCompat<'_>where Self: AsErrorSource,

Returns an iterator for traversing the chain of errors, starting with the current error -and continuing with recursive calls to Error::source. Read more
source§

impl From<(String, StatusCode)> for Error

source§

fn from(original: (String, StatusCode)) -> Error

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(original: Error) -> Error

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(original: Error) -> Error

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(original: Error) -> Error

Converts to this type from the input type.
source§

impl Serialize for Error

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where +and continuing with recursive calls to Error::source. Read more

source§

impl From<(String, StatusCode)> for Error

source§

fn from(original: (String, StatusCode)) -> Error

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(original: Error) -> Error

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(original: Error) -> Error

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(original: Error) -> Error

Converts to this type from the input type.
source§

impl Serialize for Error

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> AsErrorSource for Twhere T: Error + 'static,

§

fn as_error_source(&self) -> &(dyn Error + 'static)

For maximum effectiveness, this needs to be called as a method diff --git a/hotshot_query_service/enum.QueryError.html b/hotshot_query_service/enum.QueryError.html index 5dcb5299c..e0604bf77 100644 --- a/hotshot_query_service/enum.QueryError.html +++ b/hotshot_query_service/enum.QueryError.html @@ -1,4 +1,4 @@ -QueryError in hotshot_query_service - Rust

Implementations§

source§

impl QueryError

source

pub fn status(&self) -> StatusCode

Trait Implementations§

source§

impl Clone for QueryError

source§

fn clone(&self) -> QueryError

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for QueryError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for QueryError

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for QueryError

source§

fn fmt(&self, __snafu_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for QueryErrorwhere - Self: Debug + Display,

source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl ErrorCompat for QueryError

source§

fn backtrace(&self) -> Option<&Backtrace>

Returns a Backtrace that may be printed.
§

fn iter_chain(&self) -> ChainCompat<'_>where +

Implementations§

source§

impl QueryError

source

pub fn status(&self) -> StatusCode

Trait Implementations§

source§

impl Clone for QueryError

source§

fn clone(&self) -> QueryError

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for QueryError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for QueryError

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for QueryError

source§

fn fmt(&self, __snafu_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for QueryErrorwhere + Self: Debug + Display,

source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl ErrorCompat for QueryError

source§

fn backtrace(&self) -> Option<&Backtrace>

Returns a Backtrace that may be printed.
§

fn iter_chain(&self) -> ChainCompat<'_>where Self: AsErrorSource,

Returns an iterator for traversing the chain of errors, starting with the current error -and continuing with recursive calls to Error::source. Read more
source§

impl IntoError<QueryError> for MissingSnafuwhere - QueryError: Error + ErrorCompat,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> QueryError

Combine the information to produce the error
source§

impl IntoError<QueryError> for NotFoundSnafuwhere - QueryError: Error + ErrorCompat,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> QueryError

Combine the information to produce the error
source§

impl<__T0> IntoError<QueryError> for Snafu<__T0>where +and continuing with recursive calls to Error::source. Read more

source§

impl IntoError<QueryError> for MissingSnafuwhere + QueryError: Error + ErrorCompat,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> QueryError

Combine the information to produce the error
source§

impl IntoError<QueryError> for NotFoundSnafuwhere + QueryError: Error + ErrorCompat,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> QueryError

Combine the information to produce the error
source§

impl<__T0> IntoError<QueryError> for Snafu<__T0>where QueryError: Error + ErrorCompat, - __T0: Into<String>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> QueryError

Combine the information to produce the error
source§

impl Serialize for QueryError

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where + __T0: Into<String>,

§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> QueryError

Combine the information to produce the error
source§

impl Serialize for QueryError

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> AsErrorSource for Twhere T: Error + 'static,

§

fn as_error_source(&self) -> &(dyn Error + 'static)

For maximum effectiveness, this needs to be called as a method diff --git a/hotshot_query_service/fetching/provider/struct.AnyProvider.html b/hotshot_query_service/fetching/provider/struct.AnyProvider.html index 19903e419..e20ec51ea 100644 --- a/hotshot_query_service/fetching/provider/struct.AnyProvider.html +++ b/hotshot_query_service/fetching/provider/struct.AnyProvider.html @@ -1,4 +1,4 @@ -AnyProvider in hotshot_query_service::fetching::provider - Rust
pub struct AnyProvider<Types>where
+AnyProvider in hotshot_query_service::fetching::provider - Rust
pub struct AnyProvider<Types>where
     Types: NodeType,{ /* private fields */ }
Expand description

Adaptor combining multiple data availability providers.

This provider adaptor implements the Provider protocol by fetching requested objects from several different underlying providers. If any of the underlying sources @@ -171,5 +171,7 @@

Examples

[WithDispatch] wrapper. Read more
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more
§

impl<T> PassType for Twhere +WithDispatch wrapper. Read more

source§

impl<Types, P> AvailabilityProvider<Types> for Pwhere + Types: NodeType, + P: Provider<Types, LeafRequest> + Provider<Types, PayloadRequest> + Sync + 'static,

§

impl<T> PassType for Twhere T: Clone + Debug + Sync + Send + 'static,

\ No newline at end of file diff --git a/hotshot_query_service/fetching/provider/struct.NoFetching.html b/hotshot_query_service/fetching/provider/struct.NoFetching.html index 52d2c5fbf..3a8fc346c 100644 --- a/hotshot_query_service/fetching/provider/struct.NoFetching.html +++ b/hotshot_query_service/fetching/provider/struct.NoFetching.html @@ -1,4 +1,4 @@ -NoFetching in hotshot_query_service::fetching::provider - Rust
pub struct NoFetching;
Expand description

Trivial Provider where fetching always fails.

+NoFetching in hotshot_query_service::fetching::provider - Rust
pub struct NoFetching;
Expand description

Trivial Provider where fetching always fails.

Useful for examples and tests which should never have need of a fetcher.

Trait Implementations§

source§

impl Clone for NoFetching

source§

fn clone(&self) -> NoFetching

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for NoFetching

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for NoFetching

source§

fn default() -> NoFetching

Returns the “default value” for a type. Read more
source§

impl<Types, T: Send + Request<Types> + 'static> Provider<Types, T> for NoFetching

source§

fn fetch<'life0, 'async_trait>( &'life0 self, @@ -134,5 +134,7 @@ [WithDispatch] wrapper. Read more

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more
§

impl<T> PassType for Twhere +WithDispatch wrapper. Read more

source§

impl<Types, P> AvailabilityProvider<Types> for Pwhere + Types: NodeType, + P: Provider<Types, LeafRequest> + Provider<Types, PayloadRequest> + Sync + 'static,

§

impl<T> PassType for Twhere T: Clone + Debug + Sync + Send + 'static,

\ No newline at end of file diff --git a/hotshot_query_service/fetching/provider/struct.QueryServiceProvider.html b/hotshot_query_service/fetching/provider/struct.QueryServiceProvider.html index 39d1270c6..1fbb4a670 100644 --- a/hotshot_query_service/fetching/provider/struct.QueryServiceProvider.html +++ b/hotshot_query_service/fetching/provider/struct.QueryServiceProvider.html @@ -1,4 +1,4 @@ -QueryServiceProvider in hotshot_query_service::fetching::provider - Rust
pub struct QueryServiceProvider { /* private fields */ }
Expand description

Data availability provider backed by another instance of this query service.

+QueryServiceProvider in hotshot_query_service::fetching::provider - Rust
pub struct QueryServiceProvider { /* private fields */ }
Expand description

Data availability provider backed by another instance of this query service.

This fetcher implements the Provider interface by querying the REST API provided by another instance of this query service to try and retrieve missing objects.

Implementations§

source§

impl QueryServiceProvider

source

pub fn new(url: Url) -> Self

Trait Implementations§

source§

impl Clone for QueryServiceProvider

source§

fn clone(&self) -> QueryServiceProvider

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for QueryServiceProvider

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Types> Provider<Types, LeafRequest> for QueryServiceProviderwhere @@ -142,5 +142,7 @@ [WithDispatch] wrapper. Read more

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -WithDispatch wrapper. Read more
§

impl<T> PassType for Twhere +WithDispatch wrapper. Read more
source§

impl<Types, P> AvailabilityProvider<Types> for Pwhere + Types: NodeType, + P: Provider<Types, LeafRequest> + Provider<Types, PayloadRequest> + Sync + 'static,

§

impl<T> PassType for Twhere T: Clone + Debug + Sync + Send + 'static,

\ No newline at end of file diff --git a/hotshot_query_service/fetching/request/struct.LeafRequest.html b/hotshot_query_service/fetching/request/struct.LeafRequest.html index 8d3d0f8b5..86dc460b1 100644 --- a/hotshot_query_service/fetching/request/struct.LeafRequest.html +++ b/hotshot_query_service/fetching/request/struct.LeafRequest.html @@ -1,16 +1,16 @@ LeafRequest in hotshot_query_service::fetching::request - Rust
pub struct LeafRequest(/* private fields */);
Expand description

A request for a leaf with a given height.

-

Trait Implementations§

source§

impl Clone for LeafRequest

source§

fn clone(&self) -> LeafRequest

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for LeafRequest

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<LeafRequest> for usize

source§

fn from(original: LeafRequest) -> Self

Converts to this type from the input type.
source§

impl From<usize> for LeafRequest

source§

fn from(original: usize) -> LeafRequest

Converts to this type from the input type.
source§

impl Hash for LeafRequest

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where +

Trait Implementations§

source§

impl Clone for LeafRequest

source§

fn clone(&self) -> LeafRequest

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for LeafRequest

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<LeafRequest> for usize

source§

fn from(original: LeafRequest) -> Self

Converts to this type from the input type.
source§

impl From<usize> for LeafRequest

source§

fn from(original: usize) -> LeafRequest

Converts to this type from the input type.
source§

impl Hash for LeafRequest

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for LeafRequest

source§

fn eq(&self, other: &LeafRequest) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<Types> Provider<Types, LeafRequest> for AnyProvider<Types>where - Types: NodeType,

source§

fn fetch<'life0, 'async_trait>( + Types: NodeType,

source§

fn fetch<'life0, 'async_trait>( &'life0 self, req: LeafRequest ) -> Pin<Box<dyn Future<Output = Option<LeafQueryData<Types>>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,

Fetch a resource.
source§

impl<Types> Provider<Types, LeafRequest> for QueryServiceProviderwhere - Types: NodeType,

source§

fn fetch<'life0, 'async_trait>( + Types: NodeType,

source§

fn fetch<'life0, 'async_trait>( &'life0 self, req: LeafRequest ) -> Pin<Box<dyn Future<Output = Option<LeafQueryData<Types>>> + Send + 'async_trait>>where diff --git a/hotshot_query_service/fn.run_standalone_service.html b/hotshot_query_service/fn.run_standalone_service.html index d77c026d3..589555340 100644 --- a/hotshot_query_service/fn.run_standalone_service.html +++ b/hotshot_query_service/fn.run_standalone_service.html @@ -1,4 +1,4 @@ -run_standalone_service in hotshot_query_service - Rust
pub async fn run_standalone_service<Types: NodeType, I: NodeImplementation<Types>, D>(
+run_standalone_service in hotshot_query_service - Rust
pub async fn run_standalone_service<Types: NodeType, I: NodeImplementation<Types>, D>(
     options: Options,
     data_source: D,
     hotshot: SystemContextHandle<Types, I>
diff --git a/hotshot_query_service/index.html b/hotshot_query_service/index.html
index fa1a8a6f9..b4a13f084 100644
--- a/hotshot_query_service/index.html
+++ b/hotshot_query_service/index.html
@@ -1,5 +1,5 @@
 hotshot_query_service - Rust
Expand description

The HotShot Query Service is a minimal, generic query service that can be integrated into any +

  • All Items
  • Expand description

    The HotShot Query Service is a minimal, generic query service that can be integrated into any decentralized application running on the [hotshot] consensus layer. It provides all the features that HotShot itself expects of a query service (such as providing consensus-related data for catchup and synchronization) as well as some application-level features that deal only with diff --git a/hotshot_query_service/macro.instantiate_data_source_tests.html b/hotshot_query_service/macro.instantiate_data_source_tests.html index fb7441055..788a9ac1b 100644 --- a/hotshot_query_service/macro.instantiate_data_source_tests.html +++ b/hotshot_query_service/macro.instantiate_data_source_tests.html @@ -1,3 +1,3 @@ -instantiate_data_source_tests in hotshot_query_service - Rust

    macro_rules! instantiate_data_source_tests {
    +instantiate_data_source_tests in hotshot_query_service - Rust
    macro_rules! instantiate_data_source_tests {
         ($t:ty) => { ... };
     }
    \ No newline at end of file diff --git a/hotshot_query_service/metrics/enum.MetricsError.html b/hotshot_query_service/metrics/enum.MetricsError.html index af42cc458..31a36c6bb 100644 --- a/hotshot_query_service/metrics/enum.MetricsError.html +++ b/hotshot_query_service/metrics/enum.MetricsError.html @@ -9,7 +9,7 @@ Prometheus { source: Error, }, -}

    Variants§

    §

    NoSuchSubgroup

    Fields

    §path: Vec<String>
    §

    NoSuchMetric

    Fields

    §namespace: Vec<String>
    §label: String
    §

    Prometheus

    Fields

    §source: Error

    Trait Implementations§

    source§

    impl Debug for MetricsError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for MetricsError

    source§

    fn fmt(&self, __snafu_display_formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for MetricsErrorwhere +}

    Variants§

    §

    NoSuchSubgroup

    Fields

    §path: Vec<String>
    §

    NoSuchMetric

    Fields

    §namespace: Vec<String>
    §label: String
    §

    Prometheus

    Fields

    §source: Error

    Trait Implementations§

    source§

    impl Debug for MetricsError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for MetricsError

    source§

    fn fmt(&self, __snafu_display_formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for MetricsErrorwhere Self: Debug + Display,

    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl ErrorCompat for MetricsError

    source§

    fn backtrace(&self) -> Option<&Backtrace>

    Returns a Backtrace that may be printed.
    §

    fn iter_chain(&self) -> ChainCompat<'_>where Self: AsErrorSource,

    Returns an iterator for traversing the chain of errors, starting with the current error diff --git a/hotshot_query_service/metrics/struct.PrometheusMetrics.html b/hotshot_query_service/metrics/struct.PrometheusMetrics.html index 77f2bf9b8..0c00ecbdd 100644 --- a/hotshot_query_service/metrics/struct.PrometheusMetrics.html +++ b/hotshot_query_service/metrics/struct.PrometheusMetrics.html @@ -24,7 +24,7 @@ ) -> Result<PrometheusMetrics, MetricsError>where I: IntoIterator, I::Item: AsRef<str>,

    Get a (possibly nested) subgroup of this group by its path.

    -

    Trait Implementations§

    source§

    impl Clone for PrometheusMetrics

    source§

    fn clone(&self) -> PrometheusMetrics

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PrometheusMetrics

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for PrometheusMetrics

    source§

    fn default() -> PrometheusMetrics

    Returns the “default value” for a type. Read more
    source§

    impl Metrics for PrometheusMetrics

    Trait Implementations§

    source§

    impl Clone for PrometheusMetrics

    source§

    fn clone(&self) -> PrometheusMetrics

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PrometheusMetrics

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for PrometheusMetrics

    source§

    fn default() -> PrometheusMetrics

    Returns the “default value” for a type. Read more
    source§

    impl Metrics for PrometheusMetrics

    §

    type Error = MetricsError

    source§

    fn export(&self) -> Result<String, Self::Error>

    source§

    impl Metrics for PrometheusMetrics

    source§

    fn create_counter( &self, label: String, unit_label: Option<String> @@ -36,7 +36,7 @@ &self, label: String, unit_label: Option<String> -) -> Box<dyn Histogram>

    Create a [Histogram] with an optional unit_label. Read more
    source§

    fn create_label(&self, name: String) -> Box<dyn Label>

    Create a [Label].
    source§

    fn subgroup(&self, subgroup_name: String) -> Box<dyn Metrics>

    Create a subgroup with a specified prefix.
    source§

    impl Metrics for PrometheusMetrics

    §

    type Error = MetricsError

    source§

    fn export(&self) -> Result<String, Self::Error>

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +) -> Box<dyn Histogram>

    Create a [Histogram] with an optional unit_label. Read more
    source§

    fn create_label(&self, name: String) -> Box<dyn Label>

    Create a [Label].
    source§

    fn subgroup(&self, subgroup_name: String) -> Box<dyn Metrics>

    Create a subgroup with a specified prefix.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    §

    impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere T: 'a,

    §

    fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

    §

    impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere T: 'a,

    §

    fn implicit( diff --git a/hotshot_query_service/node/enum.Error.html b/hotshot_query_service/node/enum.Error.html index fe6df457e..caba0704a 100644 --- a/hotshot_query_service/node/enum.Error.html +++ b/hotshot_query_service/node/enum.Error.html @@ -14,20 +14,20 @@ message: String, status: StatusCode, }, -}

    Variants§

    §

    Request

    Fields

    §source: RequestError
    §

    Query

    Fields

    §source: QueryError
    §

    QueryProposals

    Fields

    §source: QueryError
    §proposer: String
    §

    InvalidSignatureKey

    §

    Custom

    Fields

    §message: String
    §status: StatusCode

    Implementations§

    source§

    impl Error

    source

    pub fn internal<M: Display>(message: M) -> Self

    source

    pub fn status(&self) -> StatusCode

    Trait Implementations§

    source§

    impl Clone for Error

    source§

    fn clone(&self) -> Error

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for Error

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where - __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Display for Error

    source§

    fn fmt(&self, __snafu_display_formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for Errorwhere +}

    Variants§

    §

    Request

    Fields

    §source: RequestError
    §

    Query

    Fields

    §source: QueryError
    §

    QueryProposals

    Fields

    §source: QueryError
    §proposer: String
    §

    InvalidSignatureKey

    §

    Custom

    Fields

    §message: String
    §status: StatusCode

    Implementations§

    source§

    impl Error

    source

    pub fn internal<M: Display>(message: M) -> Self

    source

    pub fn status(&self) -> StatusCode

    Trait Implementations§

    source§

    impl Clone for Error

    source§

    fn clone(&self) -> Error

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for Error

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Display for Error

    source§

    fn fmt(&self, __snafu_display_formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for Errorwhere Self: Debug + Display,

    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl ErrorCompat for Error

    source§

    fn backtrace(&self) -> Option<&Backtrace>

    Returns a Backtrace that may be printed.
    §

    fn iter_chain(&self) -> ChainCompat<'_>where Self: AsErrorSource,

    Returns an iterator for traversing the chain of errors, starting with the current error -and continuing with recursive calls to Error::source. Read more
    source§

    impl From<(String, StatusCode)> for Error

    source§

    fn from(original: (String, StatusCode)) -> Error

    Converts to this type from the input type.
    source§

    impl From<Error> for Error

    source§

    fn from(original: Error) -> Error

    Converts to this type from the input type.
    source§

    impl From<RequestError> for Error

    source§

    fn from(original: RequestError) -> Error

    Converts to this type from the input type.
    source§

    impl<__T0, __T1> IntoError<Error> for CustomSnafu<__T0, __T1>where +and continuing with recursive calls to Error::source. Read more

    source§

    impl From<(String, StatusCode)> for Error

    source§

    fn from(original: (String, StatusCode)) -> Error

    Converts to this type from the input type.
    source§

    impl From<Error> for Error

    source§

    fn from(original: Error) -> Error

    Converts to this type from the input type.
    source§

    impl From<RequestError> for Error

    source§

    fn from(original: RequestError) -> Error

    Converts to this type from the input type.
    source§

    impl<__T0, __T1> IntoError<Error> for CustomSnafu<__T0, __T1>where Error: Error + ErrorCompat, __T0: Into<String>, - __T1: Into<StatusCode>,

    §

    type Source = NoneError

    The underlying error
    source§

    fn into_error(self, error: Self::Source) -> Error

    Combine the information to produce the error
    source§

    impl IntoError<Error> for InvalidSignatureKeySnafuwhere - Error: Error + ErrorCompat,

    §

    type Source = NoneError

    The underlying error
    source§

    fn into_error(self, error: Self::Source) -> Error

    Combine the information to produce the error
    source§

    impl<__T0> IntoError<Error> for QueryProposalsSnafu<__T0>where + __T1: Into<StatusCode>,

    §

    type Source = NoneError

    The underlying error
    source§

    fn into_error(self, error: Self::Source) -> Error

    Combine the information to produce the error
    source§

    impl IntoError<Error> for InvalidSignatureKeySnafuwhere + Error: Error + ErrorCompat,

    §

    type Source = NoneError

    The underlying error
    source§

    fn into_error(self, error: Self::Source) -> Error

    Combine the information to produce the error
    source§

    impl<__T0> IntoError<Error> for QueryProposalsSnafu<__T0>where Error: Error + ErrorCompat, __T0: Into<String>,

    §

    type Source = QueryError

    The underlying error
    source§

    fn into_error(self, error: Self::Source) -> Error

    Combine the information to produce the error
    source§

    impl IntoError<Error> for QuerySnafuwhere - Error: Error + ErrorCompat,

    §

    type Source = QueryError

    The underlying error
    source§

    fn into_error(self, error: Self::Source) -> Error

    Combine the information to produce the error
    source§

    impl IntoError<Error> for RequestSnafuwhere - Error: Error + ErrorCompat,

    §

    type Source = RequestError

    The underlying error
    source§

    fn into_error(self, error: Self::Source) -> Error

    Combine the information to produce the error
    source§

    impl Serialize for Error

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where + Error: Error + ErrorCompat,

    §

    type Source = QueryError

    The underlying error
    source§

    fn into_error(self, error: Self::Source) -> Error

    Combine the information to produce the error
    source§

    impl IntoError<Error> for RequestSnafuwhere + Error: Error + ErrorCompat,

    §

    type Source = RequestError

    The underlying error
    source§

    fn into_error(self, error: Self::Source) -> Error

    Combine the information to produce the error
    source§

    impl Serialize for Error

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where __S: Serializer,

    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Error

    §

    impl Send for Error

    §

    impl Sync for Error

    §

    impl Unpin for Error

    §

    impl UnwindSafe for Error

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    §

    impl<T> AsErrorSource for Twhere T: Error + 'static,

    §

    fn as_error_source(&self) -> &(dyn Error + 'static)

    For maximum effectiveness, this needs to be called as a method diff --git a/hotshot_query_service/node/trait.NodeDataSource.html b/hotshot_query_service/node/trait.NodeDataSource.html index f7db68968..445dd2087 100644 --- a/hotshot_query_service/node/trait.NodeDataSource.html +++ b/hotshot_query_service/node/trait.NodeDataSource.html @@ -41,7 +41,7 @@ D: NodeDataSource<Types> + Send + Sync, U: Send + Sync, Types: NodeType,
    source§

    impl<Types> NodeDataSource<Types> for SqlStoragewhere - Types: NodeType,

    source§

    impl<Types, S, P> NodeDataSource<Types> for FetchingDataSource<Types, S, P>where + Types: NodeType,

    source§

    impl<Types, S, P> NodeDataSource<Types> for FetchingDataSource<Types, S, P>where Types: NodeType, S: NodeDataSource<Types> + Send + Sync, P: Send + Sync,

    source§

    impl<Types: NodeType> NodeDataSource<Types> for FileSystemStorage<Types>where diff --git a/hotshot_query_service/node/trait.UpdateNodeData.html b/hotshot_query_service/node/trait.UpdateNodeData.html index e8f9bc104..c2b5443c7 100644 --- a/hotshot_query_service/node/trait.UpdateNodeData.html +++ b/hotshot_query_service/node/trait.UpdateNodeData.html @@ -17,7 +17,7 @@ D: UpdateNodeData<Types> + Send + Sync, U: Send + Sync, Types: NodeType,

    §

    type Error = <D as UpdateNodeData<Types>>::Error

    source§

    impl<Types> UpdateNodeData<Types> for SqlStoragewhere - Types: NodeType,

    source§

    impl<Types, S, P> UpdateNodeData<Types> for FetchingDataSource<Types, S, P>where + Types: NodeType,

    source§

    impl<Types, S, P> UpdateNodeData<Types> for FetchingDataSource<Types, S, P>where Types: NodeType, S: UpdateNodeData<Types> + Send + Sync, P: Send + Sync,

    §

    type Error = <S as UpdateNodeData<Types>>::Error

    source§

    impl<Types: NodeType> UpdateNodeData<Types> for FileSystemStorage<Types>where diff --git a/hotshot_query_service/status/enum.Error.html b/hotshot_query_service/status/enum.Error.html index b661f0f78..a547aebed 100644 --- a/hotshot_query_service/status/enum.Error.html +++ b/hotshot_query_service/status/enum.Error.html @@ -5,8 +5,8 @@ Internal { reason: String, }, -}

    Variants§

    §

    Request

    Fields

    §source: RequestError
    §

    Internal

    Fields

    §reason: String

    Implementations§

    source§

    impl Error

    source

    pub fn status(&self) -> StatusCode

    Trait Implementations§

    source§

    impl Clone for Error

    source§

    fn clone(&self) -> Error

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for Error

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where - __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Display for Error

    source§

    fn fmt(&self, __snafu_display_formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for Errorwhere +}

    Variants§

    §

    Request

    Fields

    §source: RequestError
    §

    Internal

    Fields

    §reason: String

    Implementations§

    source§

    impl Error

    source

    pub fn status(&self) -> StatusCode

    Trait Implementations§

    source§

    impl Clone for Error

    source§

    fn clone(&self) -> Error

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for Error

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Display for Error

    source§

    fn fmt(&self, __snafu_display_formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for Errorwhere Self: Debug + Display,

    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl ErrorCompat for Error

    source§

    fn backtrace(&self) -> Option<&Backtrace>

    Returns a Backtrace that may be printed.
    §

    fn iter_chain(&self) -> ChainCompat<'_>where Self: AsErrorSource,

    Returns an iterator for traversing the chain of errors, starting with the current error diff --git a/hotshot_query_service/status/trait.StatusDataSource.html b/hotshot_query_service/status/trait.StatusDataSource.html index 12cc277d2..63fec8ba1 100644 --- a/hotshot_query_service/status/trait.StatusDataSource.html +++ b/hotshot_query_service/status/trait.StatusDataSource.html @@ -33,7 +33,7 @@ Self: Sync + 'async_trait, 'life0: 'async_trait,

    Implementors§

    source§

    impl StatusDataSource for MetricsDataSource

    source§

    impl<D, U> StatusDataSource for ExtensibleDataSource<D, U>where D: StatusDataSource + Send + Sync, - U: Send + Sync,

    source§

    impl<Types, S, P> StatusDataSource for FetchingDataSource<Types, S, P>where + U: Send + Sync,

    source§

    impl<Types, S, P> StatusDataSource for FetchingDataSource<Types, S, P>where Types: NodeType, S: NodeDataSource<Types> + Send + Sync, P: Send + Sync,

    \ No newline at end of file diff --git a/hotshot_query_service/struct.MissingSnafu.html b/hotshot_query_service/struct.MissingSnafu.html index dbda82e31..bd1f8115d 100644 --- a/hotshot_query_service/struct.MissingSnafu.html +++ b/hotshot_query_service/struct.MissingSnafu.html @@ -1,8 +1,8 @@ -MissingSnafu in hotshot_query_service - Rust
    pub struct MissingSnafu;
    Expand description

    SNAFU context selector for the QueryError::Missing variant

    -

    Implementations§

    source§

    impl MissingSnafu

    source

    pub fn build(self) -> QueryError

    Consume the selector and return the associated error

    -
    source

    pub fn fail<__T>(self) -> Result<__T, QueryError>

    Consume the selector and return a Result with the associated error

    -

    Trait Implementations§

    source§

    impl Clone for MissingSnafu

    source§

    fn clone(&self) -> MissingSnafu

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MissingSnafu

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl IntoError<QueryError> for MissingSnafuwhere - QueryError: Error + ErrorCompat,

    §

    type Source = NoneError

    The underlying error
    source§

    fn into_error(self, error: Self::Source) -> QueryError

    Combine the information to produce the error
    source§

    impl Copy for MissingSnafu

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +MissingSnafu in hotshot_query_service - Rust
    pub struct MissingSnafu;
    Expand description

    SNAFU context selector for the QueryError::Missing variant

    +

    Implementations§

    source§

    impl MissingSnafu

    source

    pub fn build(self) -> QueryError

    Consume the selector and return the associated error

    +
    source

    pub fn fail<__T>(self) -> Result<__T, QueryError>

    Consume the selector and return a Result with the associated error

    +

    Trait Implementations§

    source§

    impl Clone for MissingSnafu

    source§

    fn clone(&self) -> MissingSnafu

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MissingSnafu

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl IntoError<QueryError> for MissingSnafuwhere + QueryError: Error + ErrorCompat,

    §

    type Source = NoneError

    The underlying error
    source§

    fn into_error(self, error: Self::Source) -> QueryError

    Combine the information to produce the error
    source§

    impl Copy for MissingSnafu

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    §

    impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere T: 'a,

    §

    fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

    §

    impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere T: 'a,

    §

    fn implicit( diff --git a/hotshot_query_service/struct.NotFoundSnafu.html b/hotshot_query_service/struct.NotFoundSnafu.html index 3cffec215..b4fac5ce2 100644 --- a/hotshot_query_service/struct.NotFoundSnafu.html +++ b/hotshot_query_service/struct.NotFoundSnafu.html @@ -1,8 +1,8 @@ -NotFoundSnafu in hotshot_query_service - Rust
    pub struct NotFoundSnafu;
    Expand description

    SNAFU context selector for the QueryError::NotFound variant

    -

    Implementations§

    source§

    impl NotFoundSnafu

    source

    pub fn build(self) -> QueryError

    Consume the selector and return the associated error

    -
    source

    pub fn fail<__T>(self) -> Result<__T, QueryError>

    Consume the selector and return a Result with the associated error

    -

    Trait Implementations§

    source§

    impl Clone for NotFoundSnafu

    source§

    fn clone(&self) -> NotFoundSnafu

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for NotFoundSnafu

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl IntoError<QueryError> for NotFoundSnafuwhere - QueryError: Error + ErrorCompat,

    §

    type Source = NoneError

    The underlying error
    source§

    fn into_error(self, error: Self::Source) -> QueryError

    Combine the information to produce the error
    source§

    impl Copy for NotFoundSnafu

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +NotFoundSnafu in hotshot_query_service - Rust
    pub struct NotFoundSnafu;
    Expand description

    SNAFU context selector for the QueryError::NotFound variant

    +

    Implementations§

    source§

    impl NotFoundSnafu

    source

    pub fn build(self) -> QueryError

    Consume the selector and return the associated error

    +
    source

    pub fn fail<__T>(self) -> Result<__T, QueryError>

    Consume the selector and return a Result with the associated error

    +

    Trait Implementations§

    source§

    impl Clone for NotFoundSnafu

    source§

    fn clone(&self) -> NotFoundSnafu

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for NotFoundSnafu

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl IntoError<QueryError> for NotFoundSnafuwhere + QueryError: Error + ErrorCompat,

    §

    type Source = NoneError

    The underlying error
    source§

    fn into_error(self, error: Self::Source) -> QueryError

    Combine the information to produce the error
    source§

    impl Copy for NotFoundSnafu

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    §

    impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere T: 'a,

    §

    fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

    §

    impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere T: 'a,

    §

    fn implicit( diff --git a/hotshot_query_service/struct.Options.html b/hotshot_query_service/struct.Options.html index 90a364911..e79a83bae 100644 --- a/hotshot_query_service/struct.Options.html +++ b/hotshot_query_service/struct.Options.html @@ -1,14 +1,14 @@ -Options in hotshot_query_service - Rust
    pub struct Options {
    +Options in hotshot_query_service - Rust
    pub struct Options {
         pub availability: Options,
         pub node: Options,
         pub status: Options,
         pub port: u16,
    -}

    Fields§

    §availability: Options§node: Options§status: Options§port: u16

    Trait Implementations§

    source§

    impl Args for Options

    source§

    fn group_id() -> Option<Id>

    Report the [ArgGroup::id][crate::ArgGroup::id] for this set of arguments
    source§

    fn augment_args<'b>(__clap_app: Command) -> Command

    Append to [Command] so it can instantiate Self. Read more
    source§

    fn augment_args_for_update<'b>(__clap_app: Command) -> Command

    Append to [Command] so it can update self. Read more
    source§

    impl Default for Options

    source§

    fn default() -> Options

    Returns the “default value” for a type. Read more
    source§

    impl FromArgMatches for Options

    source§

    fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn from_arg_matches_mut( +}

    Fields§

    §availability: Options§node: Options§status: Options§port: u16

    Trait Implementations§

    source§

    impl Args for Options

    source§

    fn group_id() -> Option<Id>

    Report the [ArgGroup::id][crate::ArgGroup::id] for this set of arguments
    source§

    fn augment_args<'b>(__clap_app: Command) -> Command

    Append to [Command] so it can instantiate Self. Read more
    source§

    fn augment_args_for_update<'b>(__clap_app: Command) -> Command

    Append to [Command] so it can update self. Read more
    source§

    impl Default for Options

    source§

    fn default() -> Options

    Returns the “default value” for a type. Read more
    source§

    impl FromArgMatches for Options

    source§

    fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn from_arg_matches_mut( __clap_arg_matches: &mut ArgMatches -) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn update_from_arg_matches( +) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn update_from_arg_matches( &mut self, __clap_arg_matches: &ArgMatches -) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    fn update_from_arg_matches_mut( +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    fn update_from_arg_matches_mut( &mut self, __clap_arg_matches: &mut ArgMatches ) -> Result<(), Error>

    Assign values from ArgMatches to self.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere diff --git a/hotshot_query_service/struct.Snafu.html b/hotshot_query_service/struct.Snafu.html index 5d1b2e213..1e27b0923 100644 --- a/hotshot_query_service/struct.Snafu.html +++ b/hotshot_query_service/struct.Snafu.html @@ -1,13 +1,13 @@ -Snafu in hotshot_query_service - Rust
    pub struct Snafu<__T0> {
    +Snafu in hotshot_query_service - Rust
    pub struct Snafu<__T0> {
         pub message: __T0,
     }
    Expand description

    SNAFU context selector for the QueryError::Error variant

    -

    Fields§

    §message: __T0

    Implementations§

    source§

    impl<__T0> Snafu<__T0>

    source

    pub fn build(self) -> QueryErrorwhere +

    Fields§

    §message: __T0

    Implementations§

    source§

    impl<__T0> Snafu<__T0>

    source

    pub fn build(self) -> QueryErrorwhere __T0: Into<String>,

    Consume the selector and return the associated error

    -
    source

    pub fn fail<__T>(self) -> Result<__T, QueryError>where +

    source

    pub fn fail<__T>(self) -> Result<__T, QueryError>where __T0: Into<String>,

    Consume the selector and return a Result with the associated error

    -

    Trait Implementations§

    source§

    impl<__T0: Clone> Clone for Snafu<__T0>

    source§

    fn clone(&self) -> Snafu<__T0>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<__T0: Debug> Debug for Snafu<__T0>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<__T0> IntoError<QueryError> for Snafu<__T0>where +

    Trait Implementations§

    source§

    impl<__T0: Clone> Clone for Snafu<__T0>

    source§

    fn clone(&self) -> Snafu<__T0>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<__T0: Debug> Debug for Snafu<__T0>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<__T0> IntoError<QueryError> for Snafu<__T0>where QueryError: Error + ErrorCompat, - __T0: Into<String>,

    §

    type Source = NoneError

    The underlying error
    source§

    fn into_error(self, error: Self::Source) -> QueryError

    Combine the information to produce the error
    source§

    impl<__T0: Copy> Copy for Snafu<__T0>

    Auto Trait Implementations§

    §

    impl<__T0> RefUnwindSafe for Snafu<__T0>where + __T0: Into<String>,

    §

    type Source = NoneError

    The underlying error
    source§

    fn into_error(self, error: Self::Source) -> QueryError

    Combine the information to produce the error
    source§

    impl<__T0: Copy> Copy for Snafu<__T0>

    Auto Trait Implementations§

    §

    impl<__T0> RefUnwindSafe for Snafu<__T0>where __T0: RefUnwindSafe,

    §

    impl<__T0> Send for Snafu<__T0>where __T0: Send,

    §

    impl<__T0> Sync for Snafu<__T0>where __T0: Sync,

    §

    impl<__T0> Unpin for Snafu<__T0>where diff --git a/hotshot_query_service/type.Header.html b/hotshot_query_service/type.Header.html index c78bf9fb4..d7f735cf0 100644 --- a/hotshot_query_service/type.Header.html +++ b/hotshot_query_service/type.Header.html @@ -1 +1 @@ -Header in hotshot_query_service - Rust

    Type Alias hotshot_query_service::Header

    source ·
    pub type Header<Types> = <Types as NodeType>::BlockHeader;
    \ No newline at end of file +Header in hotshot_query_service - Rust

    Type Alias hotshot_query_service::Header

    source ·
    pub type Header<Types> = <Types as NodeType>::BlockHeader;
    \ No newline at end of file diff --git a/hotshot_query_service/type.Metadata.html b/hotshot_query_service/type.Metadata.html index 59b4ff329..89098836a 100644 --- a/hotshot_query_service/type.Metadata.html +++ b/hotshot_query_service/type.Metadata.html @@ -1 +1 @@ -Metadata in hotshot_query_service - Rust
    pub type Metadata<Types> = <Payload<Types> as BlockPayload>::Metadata;
    \ No newline at end of file +Metadata in hotshot_query_service - Rust
    pub type Metadata<Types> = <Payload<Types> as BlockPayload>::Metadata;
    \ No newline at end of file diff --git a/hotshot_query_service/type.Payload.html b/hotshot_query_service/type.Payload.html index 74016c86b..99301d383 100644 --- a/hotshot_query_service/type.Payload.html +++ b/hotshot_query_service/type.Payload.html @@ -1 +1 @@ -Payload in hotshot_query_service - Rust
    pub type Payload<Types> = <Types as NodeType>::BlockPayload;
    \ No newline at end of file +Payload in hotshot_query_service - Rust
    pub type Payload<Types> = <Types as NodeType>::BlockPayload;
    \ No newline at end of file diff --git a/hotshot_query_service/type.QueryResult.html b/hotshot_query_service/type.QueryResult.html index 54519eba9..8c22deab5 100644 --- a/hotshot_query_service/type.QueryResult.html +++ b/hotshot_query_service/type.QueryResult.html @@ -1,4 +1,4 @@ -QueryResult in hotshot_query_service - Rust
    pub type QueryResult<T> = Result<T, QueryError>;

    Aliased Type§

    enum QueryResult<T> {
    +QueryResult in hotshot_query_service - Rust
    pub type QueryResult<T> = Result<T, QueryError>;

    Aliased Type§

    enum QueryResult<T> {
         Ok(T),
         Err(QueryError),
     }

    Variants§

    §1.0.0

    Ok(T)

    Contains the success value

    diff --git a/hotshot_query_service/type.SignatureKey.html b/hotshot_query_service/type.SignatureKey.html index 8caf3f6d6..5efc50fa9 100644 --- a/hotshot_query_service/type.SignatureKey.html +++ b/hotshot_query_service/type.SignatureKey.html @@ -1 +1 @@ -SignatureKey in hotshot_query_service - Rust
    pub type SignatureKey<Types> = <Types as NodeType>::SignatureKey;
    \ No newline at end of file +SignatureKey in hotshot_query_service - Rust
    pub type SignatureKey<Types> = <Types as NodeType>::SignatureKey;
    \ No newline at end of file diff --git a/hotshot_query_service/type.Transaction.html b/hotshot_query_service/type.Transaction.html index b677232be..e0bdedb86 100644 --- a/hotshot_query_service/type.Transaction.html +++ b/hotshot_query_service/type.Transaction.html @@ -1,2 +1,2 @@ -Transaction in hotshot_query_service - Rust
    pub type Transaction<Types> = <Payload<Types> as BlockPayload>::Transaction;
    Expand description

    Item within a Payload.

    +Transaction in hotshot_query_service - Rust
    pub type Transaction<Types> = <Payload<Types> as BlockPayload>::Transaction;
    Expand description

    Item within a Payload.

    \ No newline at end of file diff --git a/search-index.js b/search-index.js index 699b83af0..70646d65e 100644 --- a/search-index.js +++ b/search-index.js @@ -1,5 +1,5 @@ var searchIndex = JSON.parse('{\ -"hotshot_query_service":{"doc":"The HotShot Query Service is a minimal, generic query …","t":"NNNENGDGNDNNDNDGEGIGDNGLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLAMLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLOLLLLLLLOLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMAAMMMMFLLLLLALLMLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLMLLLLLLLMMMMMMIGEDQNDEQENDNDNDNNQDNDQGEDQNNDNDQNINNDGGGGQDILLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKLLKKKKLLLLLLLLLLLLLLLLLMLLMLLLLLLLLLLLLLLLLKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLMKLLMLLLLLLLLLLLLLLLLLLMLMMMLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMQDDGDCIILLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLAALLLLLLLLLLLLLLLLLKLLLLLLCDDCGCLLOCLICCAKKKKKKKKADLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDIDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLOOLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLCLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLIDICCLLLLLLLLLLLLLLLLLLLAAKKLLLLLLLDDIDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDIQLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDDENNNDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMNDEQNDCIDNNDDNDILLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLFLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMENDDNIILLLLMLLLLLLLLLLKLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLKLKLLLLLLLLLMLLLLLLLLLLLLLLMM","n":["Availability","Custom","Err","Error","Error","Header","Leaf","Metadata","Missing","MissingSnafu","Node","NotFound","NotFoundSnafu","Ok","Options","Payload","QueryError","QueryResult","Resolvable","SignatureKey","Snafu","Status","Transaction","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_error_source","as_error_source","augment_args","augment_args_for_update","availability","availability","backtrace","backtrace","block_header","block_payload","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","build","catch_all","cause","cause","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","commit","commitment","commitment","create_random_transaction","data_source","default","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","description","description","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","drop","drop","eq","equivalent","equivalent","equivalent","equivalent","fail","fail","fail","fetching","fill_block_payload","fill_block_payload_unchecked","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from_arg_matches","from_arg_matches_mut","from_stored_view","genesis","get_block_header","get_block_payload","get_hash","get_height","get_justify_qc","get_parent_commitment","get_payload_commitment","get_proposer_id","get_view_number","group_id","hash","header","header","header","in_current_span","in_current_span","include_migrations","init","init","init","init","init","init","init","instantiate_data_source_tests","internal","into","into","into","into","into","into","into","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_error","into_error","into_error","justify_qc","message","metrics","node","node","parent_commitment","port","proposer_id","run_standalone_service","serialize","serialize","serialize","source","source","status","status","status","status","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_resolve","try_resolve","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches_mut","view_number","vzip","vzip","vzip","vzip","vzip","vzip","vzip","message","source","source","source","status","message","AvailabilityDataSource","BlockHash","BlockId","BlockQueryData","BlockRange","Custom","CustomSnafu","Error","Error","Fetch","FetchBlock","FetchBlockSnafu","FetchLeaf","FetchLeafSnafu","FetchTransaction","FetchTransactionSnafu","Hash","Hash","InclusionProof","InconsistentLeafError","InvalidTransactionIndex","InvalidTransactionIndexSnafu","Iter","LeafHash","LeafId","LeafQueryData","LeafRange","Number","Number","Options","PayloadHash","PayloadQueryData","PayloadRange","Pending","QueryablePayload","Ready","Request","RequestSnafu","Timestamp","TransactionHash","TransactionInclusionProof","TransactionIndex","TransactionIndex","TransactionQueryData","UpdateAvailabilityData","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","api_path","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_error_source","as_error_source","augment_args","augment_args_for_update","backtrace","backtrace","block_hash","block_hash","block_hash","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","build","build","build","by_hash","by_hash","cause","cause","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","compare","compare","context","data","default","define_api","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","description","description","deserialize","deserialize","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","enumerate","enumerate","enumerate","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","extensions","fail","fail","fail","fail","fail","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_arg_matches","from_arg_matches_mut","genesis","genesis","get_block","get_block_range","get_block_with_transaction","get_hash","get_hash","get_leaf","get_leaf_range","get_payload","get_payload_range","group_id","hash","hash","hash","hash","hash","hash","header","header","header","header","header","header","height","height","height","height","height","in_current_span","in_current_span","index","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","insert_block","insert_leaf","internal","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_error","into_error","into_error","into_error","into_error","into_error","into_future","is_empty","is_empty","is_empty","iter","leaf","leaf","len","len","map","message","metadata","new","new","nth","nth","nth_transaction","nth_transaction","nth_transaction_with_proof","nth_transaction_with_proof","partial_cmp","partial_cmp","payload","payload_hash","payload_hash","proof","proof","proposer","qc","qc_leaf","resolve","resource","resource","resource","serialize","serialize","serialize","serialize","serialize","size","size","source","source","status","status","subscribe_blocks","subscribe_blocks","subscribe_leaves","subscribe_leaves","subscribe_payloads","subscribe_payloads","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","transaction","transaction","transaction","transaction","transaction_by_hash","transaction_by_hash","transaction_by_hash","transaction_by_hash_with_proof","transaction_by_hash_with_proof","transaction_with_proof","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_resolve","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches_mut","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","with_context","height","index","message","resource","resource","resource","source","status","Error","ExtensibleDataSource","FetchingDataSource","FileSystemDataSource","MetricsDataSource","SqlDataSource","UpdateDataSource","VersionedDataSource","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","as_any","as_any","as_any","as_any_mut","as_any_mut","as_any_mut","as_bits","as_mut","as_mut_bits","as_ref","block_height","block_height","block_height","block_height","block_height","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","commit","commit","commit","connect","count_proposals","count_proposals","create","create","create_with_store","create_with_store","default","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","encode_hex","encode_hex_upper","fmt","fmt","fmt","from","from","from","get_block","get_block","get_block_range","get_block_range","get_block_with_transaction","get_block_with_transaction","get_leaf","get_leaf","get_leaf_range","get_leaf_range","get_payload","get_payload","get_payload_range","get_payload_range","get_proposals","get_proposals","init","init","init","inner","inner_mut","insert_block","insert_block","insert_leaf","insert_leaf","insert_leaf","insert_leaf","into","into","into","into_any","into_any","into_any","into_any_arc","into_any_arc","into_any_arc","into_any_rc","into_any_rc","into_any_rc","metrics","metrics","metrics","new","new","open","open","open_with_store","open_with_store","populate_metrics","populate_metrics","populate_metrics","revert","revert","revert","skip_version","skip_version","sql","storage","storage","storage_mut","to_owned","to_owned","to_owned","transaction","try_as_bits","try_as_mut_bits","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update","update","update","vzip","vzip","vzip","with_retry_delay","Config","Error","Migration","Query","SqlDataSource","Transaction","client","connect","include_migrations","postgres","transaction","AvailabilityStorage","FileSystemStorage","SqlStorage","fs","get_block","get_block_range","get_block_with_transaction","get_header","get_leaf","get_leaf_range","get_payload","get_payload_range","sql","FileSystemStorage","as_any","as_any_mut","block_height","borrow","borrow_mut","commit","count_proposals","create","create_with_store","deref","deref_mut","drop","fmt","from","get_block","get_block_range","get_block_with_transaction","get_header","get_leaf","get_leaf_range","get_payload","get_payload_range","get_proposals","init","insert_block","insert_leaf","insert_leaf","into","into_any","into_any_arc","into_any_rc","open","open_with_store","revert","skip_version","try_from","try_into","type_id","vzip","Config","Error","Migration","Query","SqlStorage","Transaction","__clone_box","__clone_box","__clone_box","__clone_box","applied_on","as_any","as_any","as_any","as_any","as_any","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_ref","as_ref","backtrace","block_height","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chain","checksum","client","client","client","clone","clone","clone_into","clone_into","cmp","commit","compare","connect","connect","context","count_proposals","database","default","default_migrations","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","downcast","downcast_mut","downcast_ref","drop","drop","drop","drop","drop","drop","drop","eq","equivalent","equivalent","equivalent","equivalent","execute","execute_many","execute_many_with_retries","execute_one","execute_one_with_retries","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_str","get_block","get_block_range","get_block_with_transaction","get_header","get_leaf","get_leaf_range","get_payload","get_payload_range","get_proposals","header","header","host","include_dir","include_migrations","init","init","init","init","init","insert_block","insert_leaf","insert_leaf","into","into","into","into","into","into_any","into_any","into_any","into_any","into_any","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","is","migrations","msg","name","new","no_migrations","partial_cmp","password","port","postgres","prefix","query","query_one","query_one_static","query_opt","query_opt_static","query_static","reset_schema","revert","root_cause","schema","sql","tls","to_owned","to_owned","to_string","to_string","transaction","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","unapplied","upsert","user","version","vzip","vzip","vzip","vzip","vzip","Callback","Fetcher","LocalCallback","Provider","Request","__clone_box","__clone_box","as_any","as_any_mut","borrow","borrow_mut","clone","clone_into","default","deref","deref_mut","drop","fmt","from","init","into","into_any","into_any_arc","into_any_rc","provider","request","run","run","spawn_fetch","to_owned","try_from","try_into","type_id","vzip","with_retry_delay","AnyProvider","NoFetching","Provider","QueryServiceProvider","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","as_any","as_any","as_any","as_any_mut","as_any_mut","as_any_mut","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","default","default","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","fetch","fetch","fetch","fetch","fetch","fetch","fmt","fmt","fmt","from","from","from","init","init","init","into","into","into","into_any","into_any","into_any","into_any_arc","into_any_arc","into_any_arc","into_any_rc","into_any_rc","into_any_rc","new","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","with_block_provider","with_leaf_provider","with_provider","LeafRequest","PayloadRequest","Request","Response","__clone_box","__clone_box","__clone_box","__clone_box","as_any","as_any","as_any_mut","as_any_mut","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","deref","deref","deref_mut","deref_mut","drop","drop","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","from","get_hash","get_hash","hash","hash","init","init","into","into","into_any","into_any","into_any_arc","into_any_arc","into_any_rc","into_any_rc","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Counter","Gauge","Histogram","Label","MetricsError","NoSuchMetric","NoSuchSubgroup","Prometheus","PrometheusMetrics","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","add","add_point","as_any","as_any","as_any","as_any","as_any","as_any","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_error_source","backtrace","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cause","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","create_counter","create_gauge","create_histogram","create_label","default","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","description","drop","drop","drop","drop","drop","drop","export","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","get","get","get","get_counter","get_gauge","get_histogram","get_label","get_subgroup","header","in_current_span","init","init","init","init","init","init","into","into","into","into","into","into","into_any","into_any","into_any","into_any","into_any","into_any","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","mean","sample_count","set","set","source","subgroup","sum","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","update","vzip","vzip","vzip","vzip","vzip","vzip","label","namespace","path","source","Custom","CustomSnafu","Error","Error","InvalidSignatureKey","InvalidSignatureKeySnafu","LeafQueryData","NodeDataSource","Options","Query","QueryProposals","QueryProposalsSnafu","QuerySnafu","Request","RequestSnafu","UpdateNodeData","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","api_path","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_error_source","augment_args","augment_args_for_update","backtrace","block_height","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","cause","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","count_proposals","default","define_api","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","description","deserialize","drop","drop","drop","drop","drop","drop","drop","extensions","fail","fail","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from_arg_matches","from_arg_matches_mut","get_proposals","group_id","header","in_current_span","init","init","init","init","init","init","init","insert_leaf","internal","into","into","into","into","into","into","into","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_error","into_error","into_error","into_error","into_error","message","proposer","serialize","source","status","status","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches_mut","vzip","vzip","vzip","vzip","vzip","vzip","vzip","message","proposer","source","source","source","status","Error","Internal","MempoolQueryData","Options","Request","StatusDataSource","UpdateStatusData","__clone_box","__clone_box","__clone_box","__clone_box","api_path","as_any","as_any","as_any","as_any_mut","as_any_mut","as_any_mut","as_error_source","augment_args","augment_args_for_update","backtrace","block_height","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cause","clone","clone","clone_into","clone_into","cmp","compare","consensus_metrics","consensus_metrics","default","default","define_api","deref","deref","deref","deref_mut","deref_mut","deref_mut","description","deserialize","deserialize","drop","drop","drop","eq","equivalent","equivalent","equivalent","equivalent","extensions","fmt","fmt","fmt","from","from","from","from","from","from_arg_matches","from_arg_matches_mut","get_hash","group_id","hash","header","in_current_span","init","init","init","into","into","into","into_any","into_any","into_any","into_any_arc","into_any_arc","into_any_arc","into_any_rc","into_any_rc","into_any_rc","memory_footprint","mempool_info","mempool_info","metrics","partial_cmp","populate_metrics","serialize","serialize","source","status","success_rate","success_rate","to_owned","to_owned","to_string","transaction_count","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches_mut","vzip","vzip","vzip","reason","source"],"q":[[0,"hotshot_query_service"],[275,"hotshot_query_service::Error"],[280,"hotshot_query_service::QueryError"],[281,"hotshot_query_service::availability"],[877,"hotshot_query_service::availability::Error"],[885,"hotshot_query_service::data_source"],[1036,"hotshot_query_service::data_source::sql"],[1047,"hotshot_query_service::data_source::storage"],[1060,"hotshot_query_service::data_source::storage::fs"],[1100,"hotshot_query_service::data_source::storage::sql"],[1295,"hotshot_query_service::fetching"],[1330,"hotshot_query_service::fetching::provider"],[1415,"hotshot_query_service::fetching::request"],[1480,"hotshot_query_service::metrics"],[1655,"hotshot_query_service::metrics::MetricsError"],[1659,"hotshot_query_service::node"],[1872,"hotshot_query_service::node::Error"],[1878,"hotshot_query_service::status"],[1997,"hotshot_query_service::status::Error"],[1999,"dyn_clone::sealed"],[2000,"dyn_clone::sealed"],[2001,"core::error"],[2002,"clap_builder::builder::command"],[2003,"snafu::backtrace_shim"],[2004,"core::option"],[2005,"alloc::string"],[2006,"core::convert"],[2007,"tide_disco::status"],[2008,"core::clone"],[2009,"hotshot_types::traits::node_implementation"],[2010,"commit"],[2011,"rand_core"],[2012,"core::result"],[2013,"serde::de"],[2014,"hotshot_types::data"],[2015,"core::fmt"],[2016,"core::fmt"],[2017,"clap_builder"],[2018,"hotshot_types::traits::storage"],[2019,"core::hash"],[2020,"core::marker"],[2021,"core::hash"],[2022,"hotshot_types::simple_certificate"],[2023,"hotshot_types::simple_certificate"],[2024,"core::hash"],[2025,"core::fmt"],[2026,"alloc::sync"],[2027,"alloc::rc"],[2028,"hotshot::types::handle"],[2029,"hotshot_types::traits::node_implementation"],[2030,"serde::ser"],[2031,"snafu"],[2032,"snafu"],[2033,"tide_disco::api"],[2034,"core::iter::traits::iterator"],[2035,"core::cmp"],[2036,"core::future::future"],[2037,"core::pin"],[2038,"core::ops::range"],[2039,"hotshot_types::data"],[2040,"hotshot_types::simple_certificate"],[2041,"bitvec::order"],[2042,"std::path"],[2043,"anyhow"],[2044,"atomic_store::atomic_store"],[2045,"core::iter::traits::collect"],[2046,"hotshot_types::traits::metrics"],[2047,"bitvec::ptr::span"],[2048,"hotshot_types::event"],[2049,"core::time"],[2050,"atomic_store::error"],[2051,"time::offset_date_time"],[2052,"std::backtrace"],[2053,"anyhow"],[2054,"tokio_postgres::to_statement"],[2055,"core::iter::traits::collect"],[2056,"refinery_core::runner"],[2057,"refinery_core::error"],[2058,"url"],[2059,"hotshot_types::traits::metrics"]],"d":["","","Contains the error value","","There was an error while trying to fetch the requested …","","This is the consensus-internal analogous concept to a …","","The requested resource exists but is not currently …","SNAFU context selector for the QueryError::Missing variant","","The requested resource does not exist or is not known to …","SNAFU context selector for the QueryError::NotFound variant","Contains the success value","","","","","A reference to a T which can be resolved into a whole T.","","SNAFU context selector for the QueryError::Error variant","","Item within a Payload.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Queries for HotShot chain state.","","","","Block header.","Optional block payload.","","","","","","","","","","","","","","","Consume the selector and return the associated error","Consume the selector and return the associated error","Consume the selector and return the associated error","","","","","","","","","","","","","","","","","Get a commitment to the underlying object.","","","Persistent storage and sources of data consumed by APIs.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Consume the selector and return a Result with the …","Consume the selector and return a Result with the …","Consume the selector and return a Result with the …","Fetching missing data from remote providers.","Fill this leaf with the block payload.","Fill this leaf with the block payload, without checking …","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Create a leaf from information stored about a view.","Create a new leaf from its components.","The block header contained in this leaf.","Optional block payload.","","Height of this leaf in the chain.","The QC linking this leaf to its parent in the chain.","Commitment to this leaf’s parent.","A commitment to the block payload contained in this leaf.","Identity of the network participant who proposed this leaf.","Time when this leaf was created.","","","","","","","","Embed migrations from the given directory into the current …","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","Per spec, justification","","","A node’s view of a HotShot chain","","The hash of the parent Leaf So we can ask if it extends","","the proposer id of the leaf","Run an instance of the HotShot Query service with no …","","","","","","Queries for node-specific state and uncommitted data.","","","","","","","","","","","","","","","","","","","","","","","","","","","Get the underlying object if it is available without …","","","","","","","","","","","CurView from leader when proposing leaf","","","","","","","","","","","","","","An interface for querying a HotShot blockchain.","A block hash is the hash of the block header.","","","","","SNAFU context selector for the Error::Custom variant","","","An in-progress request to fetch some data.","","SNAFU context selector for the Error::FetchBlock variant","","SNAFU context selector for the Error::FetchLeaf variant","","SNAFU context selector for the Error::FetchTransaction …","","","A proof that a certain transaction exists in the block.","","","SNAFU context selector for the …","Enumerate the transactions in this block.","","","","","","","","","","","","A block payload whose contents (e.g. individual …","","","SNAFU context selector for the Error::Request variant","","","","","An index which can be used to efficiently retrieve a …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Consume the selector and return the associated error","Consume the selector and return the associated error","Consume the selector and return the associated error","Consume the selector and return the associated error","Consume the selector and return the associated error","Get the index of the transaction with a given hash, if it …","Get the index of the transaction with a given hash, if it …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Convert this Fetch to a Result with the provided error …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Enumerate the transactions in the block with their indices.","Enumerate the transactions in the block with their indices.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Additional API specification files to merge with …","Consume the selector and return a Result with the …","Consume the selector and return a Result with the …","Consume the selector and return a Result with the …","Consume the selector and return a Result with the …","Consume the selector and return a Result with the …","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","","","","","","","Returns the block containing a transaction with the given …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Whether this block is empty of transactions.","Whether this block is empty of transactions.","","List the transaction indices in the block.","","","The number of transactions in the block.","","Transform the result of this fetch.","","","Collect information about a Leaf.","","Get the index of the nth transaction.","Get the index of the nth transaction.","Get the nth transaction.","Get the nth transaction.","Get the nth transaction, along with an inclusion proof.","Get the nth transaction, along with an inclusion proof.","","","","","","Get an inclusion proof for a transaction with a given …","Get an inclusion proof for a transaction with a given …","","","","Wait for the data to become available, if it is not …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Get a transaction by its block-specific index.","Get a transaction by its block-specific index.","","","Get the transaction with a given hash, if it is in the …","Get the transaction with a given hash, if it is in the …","","Get the transaction with a given hash, if it is in the …","Get the transaction with a given hash, if it is in the …","Get a transaction by its block-specific index, along with …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Get the requested data if it is available immediately.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Convert this Fetch to a Result with the provided error …","","","","","","","","","","Wrapper to add extensibility to an existing data source.","The most basic kind of data source.","A data source for the APIs provided in this crate, backed …","A minimal data source for the status API provided in this …","","An extension trait for types which implement the update …","A data source with an atomic transaction-based …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Atomically commit to all outstanding modifications to the …","","","Connect to a remote database.","","","Create a new FileSystemDataSource with storage at path.","Create a new FileSystemDataSource with storage at path.","Create a new FileSystemDataSource using a persistent …","Create a new FileSystemDataSource using a persistent …","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","","","","","","","","Access the underlying data source.","Mutably access the underlying data source.","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","Create a data source with local storage and a remote data …","Open an existing FileSystemDataSource from storage at path.","Open an existing FileSystemDataSource from storage at path.","Open an existing FileSystemDataSource using a persistent …","Open an existing FileSystemDataSource using a persistent …","","","","Erase all oustanding modifications to the data.","","","Advance the version of the persistent store without …","Advance the version of the persistent store without …","","Persistent storage for data sources.","Obtain direct, read-only access to the underlying local …","Obtain direct, mutable access the underlying local storage.","","","","Access the transaction which is accumulating all …","","","","","","","","","","","","Update query state based on a new consensus event.","","","","","","","","The Error type, a wrapper around a dynamic error type.","Represents a schema migration to be run on the database, …","","A data source for the APIs provided in this crate, backed …","","","Connect to a remote database.","Embed migrations from the given directory into the current …","","Access the transaction which is accumulating all …","Persistent storage for a HotShot blockchain.","","","","","","","","","","","","","Storage for the APIs provided in this crate, backed by a …","","","","","","","","Create a new FileSystemStorage with storage at path.","Create a new FileSystemStorage using a persistent storage …","","","","","Returns the argument unchanged.","","","","","","","","","","","","","","Calls U::from(self).","","","","Open an existing FileSystemStorage from storage at path.","Open an existing FileSystemStorage using a persistent …","","Advance the version of the persistent store without …","","","","","Postgres client config.","The Error type, a wrapper around a dynamic error type.","Represents a schema migration to be run on the database, …","","Storage for the APIs provided in this crate, backed by a …","An atomic SQL transaction.","","","","","Get the timestamp from when the Migration was applied. None…","","","","","","","","","","","","","Get the backtrace for this Error.","","","","","","","","","","","","An iterator of the chain of source errors contained by …","Get the Migration checksum. Checksum is formed from the …","","","","","","","","","","","Connect to the database with this config.","Connect to a remote database.","Wrap the error value with additional context.","","Set the name of the database to connect to.","","The migrations requied to build the default schema for …","","","","","","","","","","","","","Attempt to downcast the error object to a concrete type.","Downcast this error object by mutable reference.","Downcast this error object by reference.","","","","","","","","","","","","","Execute a statement against the underlying database.","Execute a statement that is expected to modify at least …","Execute a statement that is expected to modify at least …","Execute a statement that is expected to modify exactly one …","Execute a statement that is expected to modify exactly one …","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","Set the hostname of the database server.","Embed the contents of a directory in your crate.","Embed migrations from the given directory into the current …","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","Returns true if E is the type held by this error object.","Add custom migrations to run when connecting to the …","Create a new error object from a printable error message.","Get the Migration Name","Create a new error object from any error type.","Skip all migrations when connecting to the database.","","Set a password for connecting to the database.","Set the port on which to connect to the database.","","Get the Prefix","","Query the underlying SQL database, returning exactly one …","Query the underlying SQL database with no parameters, …","Query the underlying SQL database, returning zero or one …","Query the underlying SQL database with no parameters, …","Query the underlying SQL database with no parameters.","Reset the schema on connection.","","The lowest level cause of this error — this error’s …","Set the name of the schema to use for queries.","","Use TLS for an encrypted connection to the database.","","","","","Access the transaction which is accumulating all …","","","","","","","","","","","","","","","","Create an unapplied migration, name and version are parsed …","","Set the DB user to connect as.","Get the Migration version","","","","","","A callback to process the result of a request.","Management of concurrent requests to fetch resources.","A callback to process the result of a request.","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","Asynchronous fetching from external data availability …","Requests for fetching resources.","","","Fetch a resource, if it is not already being fetched.","","","","","","","Adaptor combining multiple data availability providers.","Trivial Provider where fetching always fails.","A provider which is able to satisfy requests for data of …","Data availability provider backed by another instance of …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Fetch a resource.","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","Add a sub-provider which fetches blocks.","Add a sub-provider which fetches leaves.","Add a sub-provider which fetches both blocks and leaves.","A request for a leaf with a given height.","A request for a payload with a given commitment.","A request for a resource.","The type of resource that will be returned as a successful …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","A Counter metric.","A Gauge metric.","A Histogram metric.","A Label metric.","","","","","A Prometheus-based implementation of a Metrics registry.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Get a counter in this sub-group by name.","Get a gauge in this sub-group by name.","Get a histogram in this sub-group by name.","Get a label in this sub-group by name.","Get a (possibly nested) subgroup of this group by its path.","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","SNAFU context selector for the Error::Custom variant","","","","SNAFU context selector for the Error::InvalidSignatureKey …","","","","","","SNAFU context selector for the Error::QueryProposals …","SNAFU context selector for the Error::Query variant","","SNAFU context selector for the Error::Request variant","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Consume the selector and return the associated error","Consume the selector and return the associated error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Additional API specification files to merge with …","Consume the selector and return a Result with the …","Consume the selector and return a Result with the …","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","","","","","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Additional API specification files to merge with …","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[7,7,125,0,10,0,0,0,10,0,7,10,0,125,0,0,0,0,0,0,0,7,0,17,17,7,7,11,11,12,12,13,13,10,10,17,7,11,12,13,10,23,17,7,11,12,13,10,23,7,10,23,23,0,23,7,10,17,17,17,7,11,12,13,10,23,17,7,11,12,13,10,23,11,12,13,7,7,10,17,7,11,12,13,10,17,7,11,12,13,10,17,175,17,17,0,23,17,7,11,12,13,10,23,17,7,11,12,13,10,23,7,10,17,7,10,17,7,11,12,13,10,23,17,17,17,17,17,11,12,13,0,17,17,17,17,7,7,11,12,13,10,10,17,7,7,7,7,7,11,12,13,10,23,23,23,17,17,17,17,17,17,17,17,17,17,17,23,17,17,7,10,7,10,0,17,7,11,12,13,10,23,0,7,17,7,11,12,13,10,23,17,7,11,12,13,10,23,17,7,11,12,13,10,23,17,7,11,12,13,10,23,11,12,13,17,13,0,0,23,17,23,17,0,17,7,10,7,10,0,7,10,23,17,7,11,12,13,10,17,7,10,17,7,11,12,13,10,23,17,7,11,12,13,10,23,175,17,17,7,11,12,13,10,23,23,23,17,17,7,11,12,13,10,23,176,177,178,179,176,180,0,0,0,0,56,34,0,0,120,0,34,0,34,0,34,0,75,76,181,0,34,0,181,0,0,0,56,75,76,0,76,0,56,80,0,80,34,0,0,0,0,0,181,0,0,75,75,76,76,66,66,65,65,77,77,68,68,69,69,78,78,70,70,71,71,72,72,73,73,74,74,34,34,84,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,34,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,34,65,34,84,84,65,34,66,68,69,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,34,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,34,70,71,72,73,74,181,181,65,34,75,76,66,65,77,68,69,78,70,71,72,73,74,34,75,76,66,65,77,68,69,78,70,71,72,73,74,34,75,76,75,76,80,68,84,0,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,34,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,34,65,34,66,77,68,69,34,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,34,181,181,77,75,76,66,77,68,69,75,75,75,75,76,76,76,76,66,66,66,66,77,77,77,77,68,68,68,68,69,69,69,69,84,70,71,72,73,74,75,75,76,76,66,65,65,77,68,69,78,70,71,72,73,74,34,34,80,75,75,75,76,76,76,66,65,77,68,68,69,84,78,70,71,72,73,74,34,34,34,84,84,66,77,56,56,56,75,76,56,56,56,56,84,75,76,66,77,68,69,75,76,66,65,77,34,66,77,68,69,73,65,34,73,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,34,120,120,34,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,34,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,34,75,76,66,65,77,68,69,84,78,70,71,72,73,74,34,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,34,78,70,71,72,73,74,80,181,181,77,181,66,65,181,77,80,74,77,66,77,181,181,181,181,181,181,75,76,77,66,77,181,181,66,66,65,80,70,71,72,66,77,68,69,34,77,68,65,34,34,74,56,56,56,56,56,56,75,76,66,65,77,68,69,78,70,71,72,73,74,34,75,76,65,34,181,181,77,69,181,181,77,181,181,181,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,34,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,34,80,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,34,84,84,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,34,80,182,182,183,184,185,186,187,183,60,0,0,0,0,0,0,0,106,106,107,107,108,108,106,107,108,106,107,108,106,106,106,106,106,106,107,107,108,106,107,108,106,107,108,106,107,108,106,107,108,60,106,107,107,106,107,113,107,113,107,108,106,107,108,106,107,108,106,107,108,106,106,106,107,108,106,107,108,106,107,106,107,106,107,106,107,106,107,106,107,106,107,106,107,106,107,108,106,106,106,107,106,106,107,107,106,107,108,106,107,108,106,107,108,106,107,108,106,107,108,106,107,113,107,113,107,106,107,108,60,106,107,113,107,0,0,107,107,106,107,108,107,106,106,106,107,108,106,107,108,106,107,108,59,106,107,106,107,108,107,0,0,0,0,0,0,129,129,0,0,129,0,0,0,0,119,119,119,119,119,119,119,119,0,0,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,0,0,0,0,0,0,131,131,109,109,131,111,131,124,109,110,111,131,124,109,110,111,111,111,110,111,131,124,109,110,111,131,124,109,110,111,131,188,124,110,131,109,131,109,131,110,131,109,110,111,110,109,109,0,111,111,131,124,109,110,111,111,131,124,109,110,111,111,111,111,111,131,124,109,110,110,131,131,131,131,131,124,124,124,124,124,111,111,131,131,109,110,111,111,111,131,124,109,109,110,109,110,110,110,110,110,110,110,110,110,111,131,109,0,0,111,131,124,109,110,110,110,110,111,131,124,109,110,111,131,124,109,110,111,131,124,109,110,111,131,124,109,110,111,109,111,131,111,109,131,109,109,0,131,188,188,188,188,188,188,109,110,111,109,131,109,131,109,111,131,110,111,131,124,109,110,111,131,124,109,110,111,131,124,109,110,131,124,109,131,111,131,124,109,110,0,0,0,0,0,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,0,0,189,147,145,145,145,145,145,145,145,0,0,0,0,149,149,150,150,151,151,149,150,151,149,150,151,149,150,151,149,150,151,149,150,151,149,150,151,149,151,149,150,151,149,150,151,149,150,151,148,149,149,150,150,151,149,150,151,149,150,151,149,150,151,149,150,151,149,150,151,149,150,151,149,150,151,150,149,150,151,149,150,151,149,150,151,149,150,151,149,150,151,149,149,149,0,0,0,146,153,153,152,152,153,152,153,152,153,152,153,152,153,152,153,152,153,152,153,152,153,152,153,152,153,153,153,153,152,152,152,152,153,152,153,152,152,153,152,153,152,153,152,153,152,153,152,153,152,153,152,153,152,153,152,153,152,153,152,153,152,0,0,0,0,0,158,158,158,0,122,122,155,155,159,159,156,156,160,160,155,156,158,122,155,159,156,160,158,122,155,159,156,160,158,158,158,122,155,159,156,160,158,122,155,159,156,160,158,122,155,159,156,160,122,155,159,156,160,122,122,122,122,122,158,122,155,159,156,160,158,122,155,159,156,160,158,158,122,155,159,156,160,122,158,158,122,155,159,156,160,158,158,122,155,159,156,160,155,159,160,122,122,122,122,122,158,158,158,122,155,159,156,160,158,122,155,159,156,160,158,122,155,159,156,160,158,122,155,159,156,160,158,122,155,159,156,160,156,156,159,160,158,122,156,122,155,159,156,160,158,158,122,155,159,156,160,158,122,155,159,156,160,158,122,155,159,156,160,159,158,122,155,159,156,160,190,190,191,192,35,0,0,121,35,0,0,0,0,35,35,0,0,35,0,0,169,169,170,170,171,171,167,167,168,168,35,35,172,172,169,170,171,167,168,35,172,169,170,171,167,168,35,35,172,172,35,57,172,169,170,171,167,168,35,172,169,170,171,167,168,35,167,168,35,169,170,171,167,168,35,169,170,171,167,168,35,57,172,0,172,169,170,171,167,168,35,172,169,170,171,167,168,35,35,35,172,169,170,171,167,168,35,172,167,168,169,170,171,167,168,35,35,172,169,170,171,167,168,35,35,35,172,172,57,172,35,35,172,169,170,171,167,168,35,121,35,172,169,170,171,167,168,35,172,169,170,171,167,168,35,172,169,170,171,167,168,35,172,169,170,171,167,168,35,169,170,171,167,168,168,171,35,35,35,168,169,170,171,167,168,35,35,172,169,170,171,167,168,35,172,169,170,171,167,168,35,172,169,170,171,167,168,35,172,172,172,169,170,171,167,168,35,193,194,195,196,194,193,0,36,0,0,36,0,0,173,173,36,36,174,173,174,36,173,174,36,36,174,174,36,58,173,174,36,173,174,36,36,173,36,173,36,173,173,58,58,173,174,0,173,174,36,173,174,36,36,173,36,173,174,36,173,173,173,173,173,174,173,36,36,173,174,36,36,36,174,174,173,174,173,36,36,173,174,36,173,174,36,173,174,36,173,174,36,173,174,36,173,58,58,58,173,197,173,36,36,36,58,58,173,36,36,173,173,174,36,173,174,36,173,174,36,174,174,173,174,36,198,199],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,5,[]],[-1,5,[]],[6,6],[6,6],0,0,[7,[[9,[8]]]],[10,[[9,[8]]]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[11,10],[12,10],[[[13,[-1]]],10,[[15,[14]]]],[[16,14],7],[7,[[9,[5]]]],[10,[[9,[5]]]],[[[17,[-1]]],[[17,[-1]]],[18,19]],[7,7],[11,11],[12,12],[[[13,[-1]]],[[13,[-1]]],18],[10,10],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[17,[-1]]],[[20,[[17,[-1]]]]],19],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[[[17,[-1]],21,22],[],19],0,[[],23],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[7,25],[10,25],[-1,[[26,[[17,[-2]]]]],27,19],[-1,[[26,[7]]],27],[-1,[[26,[10]]],27],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[[[17,[-1]],[17,[-1]]],28,19],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[11,[[26,[-1,10]]],[]],[12,[[26,[-1,10]]],[]],[[[13,[-1]]],[[26,[-2,10]]],[[15,[14]]],[]],0,[[[17,[-1]],24],[[26,[2,29]]],19],[[[17,[-1]]],2,19],[[[17,[-1]],30],[[26,[2,31]]],[32,19]],[[[17,[-1]],30],[[26,[2,31]]],19],[[7,30],33],[[7,30],33],[[11,30],33],[[12,30],33],[[[13,[-1]],30],33,32],[[10,30],33],[[10,30],33],[-1,-1,[]],[-1,-1,[]],[[[2,[14,16]]],7],[34,7],[35,7],[36,7],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[37,[[26,[23,38]]]],[37,[[26,[23,38]]]],[[[39,[-1]]],[[17,[-1]]],19],[[],[[17,[-1]]],19],[[[17,[-1]]],[],19],[[[17,[-1]]],9,19],[[-1,-2],22,[40,41],42],[[[17,[-1]]],22,19],[[[17,[-1]]],[[45,[-1,[43,[-1]],44]]],19],[[[17,[-1]]],[[20,[[17,[-1]]]]],19],[[[17,[-1]]],[],19],[[[17,[-1]]],[],19],[[[17,[-1]]],[],19],[[],[[9,[46]]]],[[[17,[-1]],-2],2,19,47],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[-1,[],[]],[-1,[],[]],0,[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],0,[-1,7,49],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[11,10],[12,10],[[[13,[-1]]],10,[[15,[14]]]],0,0,0,0,0,0,0,0,[[23,-2,[55,[-1,-3]]],[[26,[2,7]]],19,[[56,[-1]],[57,[-1]],58,[59,[-1]],60,50,51],[[61,[-1]]]],[[[17,[-1]],-2],26,[19,62],63],[[7,-1],26,63],[[10,-1],26,63],[7,[[9,[5]]]],[10,[[9,[5]]]],0,[7,16],[10,16],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2,-1]]],[],[]],[-1,[[26,[-2,-2]]],[],[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[[23,37],[[26,[2,38]]]],[[23,37],[[26,[2,38]]]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[[-1,3],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],0,[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,5,[]],[-1,5,[]],[6,6],[6,6],[[[65,[-1]]],[[9,[8]]],19],[34,[[9,[8]]]],[[[66,[-1]]],[[67,[-1]]],19],[[[68,[-1]]],[[67,[-1]]],19],[[[69,[-1]]],[[67,[-1]]],19],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[70,[-1]]],34,[[15,[14]]]],[[[71,[-1]]],34,[[15,[14]]]],[[[72,[-1]]],34,[[15,[14]]]],[[[73,[-1,-2]]],34,[[15,[22]]],[[15,[22]]]],[[[74,[-1,-2]]],34,[[15,[14]]],[[15,[16]]]],[[-1,20],9,[]],[[-1,20],9,[]],[[[65,[-1]]],[[9,[5]]],19],[34,[[9,[5]]]],[[[75,[-1]]],[[75,[-1]]],19],[[[76,[-1]]],[[76,[-1]]],19],[[[66,[-1]]],[[66,[-1]]],[18,19]],[[[65,[-1]]],[[65,[-1]]],[18,19]],[[[77,[-1]]],[[77,[-1]]],[18,19]],[[[68,[-1]]],[[68,[-1]]],[18,19]],[[[69,[-1]]],[[69,[-1]]],[18,19]],[78,78],[[[70,[-1]]],[[70,[-1]]],18],[[[71,[-1]]],[[71,[-1]]],18],[[[72,[-1]]],[[72,[-1]]],18],[[[73,[-1,-2]]],[[73,[-1,-2]]],18,18],[[[74,[-1,-2]]],[[74,[-1,-2]]],18,18],[34,34],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[75,[-1]],[75,[-1]]],79,19],[[[76,[-1]],[76,[-1]]],79,19],[[-1,-2],79,[],[]],[[-1,-2],79,[],[]],[[[80,[-1]],-3],[[26,[-1,-2]]],[],[5,81],[[82,[-2]]]],[[[68,[-1]]],[[83,[-1]]],19],[[],84],[84,[[26,[[85,[-1,34]],86]]],[50,51,87]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[[[65,[-1]]],25,19],[34,25],[-1,[[26,[[66,[-2]]]]],27,19],[-1,[[26,[[77,[-2]]]]],27,19],[-1,[[26,[[68,[-2]]]]],27,19],[-1,[[26,[[69,[-2]]]]],27,19],[-1,[[26,[34]]],27],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[-1,[[52,[88]]],[]],[-1,[[52,[88]]],[]],[[[77,[-1]]],[[0,[88]]],19],[[[75,[-1]],[75,[-1]]],28,19],[[[76,[-1]],[76,[-1]]],28,19],[[[66,[-1]],[66,[-1]]],28,[89,19]],[[[77,[-1]],[77,[-1]]],28,[89,19]],[[[68,[-1]],[68,[-1]]],28,[89,19]],[[[69,[-1]],[69,[-1]]],28,[89,19]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],0,[[[70,[-1]]],[[26,[-2,34]]],[[15,[14]]],[]],[[[71,[-1]]],[[26,[-2,34]]],[[15,[14]]],[]],[[[72,[-1]]],[[26,[-2,34]]],[[15,[14]]],[]],[[[73,[-1,-2]]],[[26,[-3,34]]],[[15,[22]]],[[15,[22]]],[]],[[[74,[-1,-2]]],[[26,[-3,34]]],[[15,[14]]],[[15,[16]]],[]],[[[75,[-1]],30],33,19],[[[75,[-1]],30],33,19],[[[76,[-1]],30],33,19],[[[76,[-1]],30],33,19],[[[66,[-1]],30],33,[32,19]],[[[65,[-1]],30],33,[32,19]],[[[65,[-1]],30],33,19],[[[77,[-1]],30],33,[32,19]],[[[68,[-1]],30],33,[32,19]],[[[69,[-1]],30],33,[32,19]],[[78,30],33],[[[70,[-1]],30],33,32],[[[71,[-1]],30],33,32],[[[72,[-1]],30],33,32],[[[73,[-1,-2]],30],33,32,32],[[[74,[-1,-2]],30],33,32,32],[[34,30],33],[[34,30],33],[-1,-1,[]],[[[90,[-1]]],[[75,[-1]]],19],[24,[[75,[-1]]],19],[-1,-1,[]],[[[67,[-1]]],[[76,[-1]]],19],[24,[[76,[-1]]],19],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[77,[-1]]],[[68,[-1]]],19],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[91,34],[[[2,[14,16]]],34],[-1,-1,[]],[37,[[26,[84,38]]]],[37,[[26,[84,38]]]],[[],[[66,[-1]]],19],[[],[[77,[-1]]],19],[[-1,-3],[[93,[[52,[92]]]]],[],[],[[15,[[76,[-2]]]],50,51]],[[-1,-2],[[93,[[52,[92]]]]],[],[[94,[24]],50]],[[-1,[95,[-2]]],[[93,[[52,[92]]]]],[],[]],[[-1,-2],22,[40,41],42],[[-1,-2],22,[40,41],42],[[-1,-3],[[93,[[52,[92]]]]],[],[],[[15,[[75,[-2]]]],50,51]],[[-1,-2],[[93,[[52,[92]]]]],[],[[94,[24]],50]],[[-1,-3],[[93,[[52,[92]]]]],[],[],[[15,[[76,[-2]]]],50,51]],[[-1,-2],[[93,[[52,[92]]]]],[],[[94,[24]],50]],[[],[[9,[46]]]],[[[75,[-1]],-2],2,19,47],[[[76,[-1]],-2],2,19,47],[[[66,[-1]]],[[90,[-1]]],19],[[[77,[-1]]],[[67,[-1]]],19],[[[68,[-1]]],96,19],[[[69,[-1]]],[[95,[-1]]],19],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[[[66,[-1]]],[[97,[-1]]],19],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[[[77,[-1]]],[[97,[-1]]],19],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[[[66,[-1]]],22,19],[[[77,[-1]]],22,19],[[[68,[-1]]],22,19],[[[69,[-1]]],22,19],0,[-1,[],[]],[-1,[],[]],0,[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[-1,[77,[-2]]],[[93,[[52,[92]]]]],[],[]],[[-1,[66,[-2]]],[[93,[[52,[92]]]]],[],[]],[-1,34,49],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[78,34],[[[70,[-1]]],34,[[15,[14]]]],[[[71,[-1]]],34,[[15,[14]]]],[[[72,[-1]]],34,[[15,[14]]]],[[[73,[-1,-2]]],34,[[15,[22]]],[[15,[22]]]],[[[74,[-1,-2]]],34,[[15,[14]]],[[15,[16]]]],[[[80,[-1]]],[],50],[-1,28,[]],[-1,28,[]],[[[77,[-1]]],28,19],[-1,[],[]],[[[66,[-1]]],[[17,[-1]]],19],0,[-1,24,[]],[[[77,[-1]]],24,19],[[[80,[-1]],-2],[[80,[-3]]],[],[50,98],[]],0,[[[77,[-1]]],[[99,[-1]]],19],[[[17,[-1]],[100,[-1]]],[[26,[[66,[-1]],[65,[-1]]]]],19],[[[97,[-1]],[83,[-1]]],[[77,[-1]]],19],[[-1,24],9,[]],[[-1,24],9,[]],[[-1,24],9,[]],[[-1,24],9,[]],[[-1,24],[[9,[2]]],[]],[[-1,24],[[9,[2]]],[]],[[[75,[-1]],[75,[-1]]],[[9,[79]]],19],[[[76,[-1]],[76,[-1]]],[[9,[79]]],19],[[[77,[-1]]],[[83,[-1]]],19],[[[66,[-1]]],96,19],[[[77,[-1]]],96,19],[-1,9,[]],[-1,9,[]],[[[66,[-1]]],[[101,[-1]]],19],[[[66,[-1]]],[[100,[-1]]],19],0,[[[80,[-1]]],-1,50],0,0,0,[[[66,[-1]],-2],26,19,63],[[[77,[-1]],-2],26,19,63],[[[68,[-1]],-2],26,19,63],[[[69,[-1]],-2],26,19,63],[[34,-1],26,63],[[[77,[-1]]],22,19],[[[68,[-1]]],22,19],[[[65,[-1]]],[[9,[5]]],19],[34,[[9,[5]]]],[34,16],0,[[-1,24],[[93,[[52,[92]]]]],51],[[-1,24],[[93,[[52,[92]]]]],51],[[-1,24],[[93,[[52,[92]]]]],51],[[-1,24],[[93,[[52,[92]]]]],51],[[-1,24],[[93,[[52,[92]]]]],51],[[-1,24],[[93,[[52,[92]]]]],51],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,9,[]],[-1,9,[]],[[[77,[-1]],[102,[-1]]],[[9,[[69,[-1]]]]],19],[[[69,[-1]]],[[103,[-1]]],19],[[-1,20],9,[]],[[-1,20],9,[]],[[[77,[-1]],[20,[[103,[-1]]]]],[[9,[[102,[-1]]]]],19],[[-1,20],[[9,[2]]],[]],[[-1,20],[[9,[2]]],[]],[-1,[[9,[2]]],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[[[80,[-1]]],[[26,[-1,[80,[-1]]]]],[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[[84,37],[[26,[2,38]]]],[[84,37],[[26,[2,38]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[80,[-1]],-2],[[26,[-1,-3]]],[],98,[5,81]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,[[104,[-2,-3]]],[],[],105],[[[106,[-1,-2]]],-2,[],[]],[-1,[[104,[-2,-3]]],[],[],105],[[[106,[-1,-2]]],-2,[],[]],[[[106,[-2,-3]]],[[93,[[52,[92]]]]],19,[[57,[-1]],50,51],[50,51]],[[[106,[-1,-2]]],[[93,[[52,[92]]]]],[58,50,51],[50,51]],[[[107,[-1,-2,-3]]],[[93,[[52,[92]]]]],19,[[57,[-1]],50,51],[50,51]],[[[107,[-1,-2,-3]]],[[93,[[52,[92]]]]],19,[[57,[-1]],50,51],[50,51]],[108,[[93,[[52,[92]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[106,[-1,-2]]],[[106,[-1,-2]]],18,18],[[[107,[-1,-2,-3]]],[[107,[-1,-2,-3]]],19,[],[]],[108,108],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[-1,[[93,[[52,[92]]]]],[]],[[[106,[-1,-2]]],[[93,[[52,[92]]]]],[60,50],50],[[[107,[-1,-2,-3]]],[[93,[[52,[92]]]]],19,[60,50,51],[50,51]],[[109,-1],[[26,[[107,[-2,110,-1]],111]]],[50,51],19],[[[106,[-2,-3]],[101,[-1]]],[[93,[[52,[92]]]]],19,[[57,[-1]],50,51],[50,51]],[[[107,[-1,-2,-3]],[101,[-1]]],[[93,[[52,[92]]]]],19,[[57,[-1]],50,51],[50,51]],[[112,-1],[[114,[[113,[-2,-1]]]]],[50,51],19],[[112,-1],[[114,[[107,[-2,[115,[-2]],-1]]]]],[50,51],19],[[116,-1],[[114,[[113,[-2,-1]]]]],[50,51],19],[[116,-1],[[114,[[107,[-2,[115,[-2]],-1]]]]],[50,51],19],[[],108],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,2],[24,2],[24,2],[-1,-2,[],[[118,[117]]]],[-1,-2,[],[[118,[117]]]],[[[106,[-1,-2]],30],33,32,32],[[[107,[-1,-2,-3]],30],33,19,32,32],[[108,30],33],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[106,[-2,-3]],-4],[[93,[[52,[92]]]]],19,[[56,[-1]],50,51],[50,51],[[15,[[76,[-1]]]],50,51]],[[[107,[-1,-2,-3]],-4],[[93,[[52,[92]]]]],19,[[119,[-1]]],[[0,[-1]]],[[15,[[76,[-1]]]],50,51]],[[[106,[-2,-3]],-4],[[93,[[52,[92]]]]],19,[[56,[-1]],50,51],[50,51],[[94,[24]],50]],[[[107,[-1,-2,-3]],-4],[[93,[[52,[92]]]]],19,[[119,[-1]]],[[0,[-1]]],[[94,[24]],50]],[[[106,[-2,-3]],[95,[-1]]],[[93,[[52,[92]]]]],19,[[56,[-1]],50,51],[50,51]],[[[107,[-1,-2,-3]],[95,[-1]]],[[93,[[52,[92]]]]],19,[[119,[-1]]],[[0,[-1]]]],[[[106,[-2,-3]],-4],[[93,[[52,[92]]]]],19,[[56,[-1]],50,51],[50,51],[[15,[[75,[-1]]]],50,51]],[[[107,[-1,-2,-3]],-4],[[93,[[52,[92]]]]],19,[[119,[-1]]],[[0,[-1]]],[[15,[[75,[-1]]]],50,51]],[[[106,[-2,-3]],-4],[[93,[[52,[92]]]]],19,[[56,[-1]],50,51],[50,51],[[94,[24]],50]],[[[107,[-1,-2,-3]],-4],[[93,[[52,[92]]]]],19,[[119,[-1]]],[[0,[-1]]],[[94,[24]],50]],[[[106,[-2,-3]],-4],[[93,[[52,[92]]]]],19,[[56,[-1]],50,51],[50,51],[[15,[[76,[-1]]]],50,51]],[[[107,[-1,-2,-3]],-4],[[93,[[52,[92]]]]],19,[[119,[-1]]],[[0,[-1]]],[[15,[[76,[-1]]]],50,51]],[[[106,[-2,-3]],-4],[[93,[[52,[92]]]]],19,[[56,[-1]],50,51],[50,51],[[94,[24]],50]],[[[107,[-1,-2,-3]],-4],[[93,[[52,[92]]]]],19,[[119,[-1]]],[[0,[-1]]],[[94,[24]],50]],[[[106,[-2,-3]],[101,[-1]],[9,[24]]],[[93,[[52,[92]]]]],19,[[57,[-1]],50,51],[50,51]],[[[107,[-1,-2,-3]],[101,[-1]],[9,[24]]],[[93,[[52,[92]]]]],19,[[57,[-1]],50,51],[50,51]],[[],24],[[],24],[[],24],[[[106,[-1,-2]]],-1,[],[]],[[[106,[-1,-2]]],-1,[],[]],[[[106,[-2,-3]],[77,[-1]]],[[93,[[52,[92]]]]],19,[[120,[-1]],50,51],[50,51]],[[[107,[-1,-2,-3]],[77,[-1]]],[[93,[[52,[92]]]]],19,[[120,[-1]],50,51],[50,51]],[[[106,[-2,-3]],[66,[-1]]],[[93,[[52,[92]]]]],19,[[121,[-1]],50,51],[50,51]],[[[106,[-2,-3]],[66,[-1]]],[[93,[[52,[92]]]]],19,[[120,[-1]],50,51],[50,51]],[[[107,[-1,-2,-3]],[66,[-1]]],[[93,[[52,[92]]]]],19,[[120,[-1]],50,51],[50,51]],[[[107,[-1,-2,-3]],[66,[-1]]],[[93,[[52,[92]]]]],19,[[121,[-1]],50,51],[50,51]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[106,[-1,-2]]],122,[58,50,51],[50,51]],[[[107,[-1,-2,-3]]],122,19,[[57,[-1]],50,51],[50,51]],[108,122],[[-1,-2],[[106,[-1,-2]]],[],[]],[[-2,-3],[[114,[[107,[-1,-2,-3]]]]],19,[[57,[-1]],[121,[-1]],[119,[-1]],60],[50,51]],[[112,-1],[[114,[[113,[-2,-1]]]]],[50,51],19],[[112,-1],[[114,[[107,[-2,[115,[-2]],-1]]]]],[50,51],19],[[116,-1],[[114,[[113,[-2,-1]]]]],[50,51],19],[[116,-1],[[114,[[107,[-2,[115,[-2]],-1]]]]],[50,51],19],[-1,[[52,[123]]],[]],[-1,[[52,[123]]],[]],[-1,[[52,[123]]],[]],[-1,[[93,[[52,[92]]]]],[]],[[[106,[-1,-2]]],[[93,[[52,[92]]]]],[60,50],50],[[[107,[-1,-2,-3]]],[[93,[[52,[92]]]]],19,[60,50,51],[50,51]],[[[113,[-1,-2]]],[[114,[2]]],19,[50,51]],[[[107,[-1,[115,[-1]],-2]]],[[114,[2]]],19,[50,51]],0,0,[[[107,[-1,-2,-3]]],[[0,[-1,-2]]],19,[],[]],[[[107,[-1,-2,-3]]],[[0,[-1,-2]]],19,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[107,[-1,110,-2]]],[[125,[124]]],19,[]],[-1,[[26,[[104,[-2,-3]],[126,[-2]]]]],[],[],105],[-1,[[26,[[104,[-2,-3]],[126,[-2]]]]],[],[],105],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[[-1,[127,[-2]]],[[93,[[52,[92]]]]],[],[]],[[-1,[127,[-2]]],[[93,[[52,[92]]]]],[],[]],[[-1,[127,[-2]]],[[93,[[52,[92]]]]],[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-2,-3,[9,[128]]],[[114,[[107,[-1,-2,-3]]]]],19,[[57,[-1]],[121,[-1]],[119,[-1]],60],[50,51]],0,0,0,0,0,0,[[[129,[-1,-2]]],[[93,[[52,[92]]]]],19,[50,51]],[[109,-1],[[26,[[129,[-2,-1]],111]]],[50,51],19],0,0,[[[129,[-1,-2]]],[[125,[124]]],19,[]],0,0,0,0,[[-1,[76,[-2]]],[[93,[[52,[92]]]]],[],[]],[[-1,-2],[[93,[[52,[92]]]]],[],[[94,[24]],50]],[[-1,[95,[-2]]],[[93,[[52,[92]]]]],[],[]],[[-1,[76,[-2]]],[[93,[[52,[92]]]]],[],[]],[[-1,[75,[-2]]],[[93,[[52,[92]]]]],[],[]],[[-1,-2],[[93,[[52,[92]]]]],[],[[94,[24]],50]],[[-1,[76,[-2]]],[[93,[[52,[92]]]]],[],[]],[[-1,-2],[[93,[[52,[92]]]]],[],[[94,[24]],50]],0,0,[-1,4,[]],[-1,4,[]],[[[115,[-1]]],[[93,[[52,[92]]]]],19],[-1,-2,[],[]],[-1,-2,[],[]],[[[115,[-1]]],[[93,[[52,[92]]]]],19],[[[115,[-1]],[101,[-1]]],[[93,[[52,[92]]]]],19],[112,[[26,[[115,[-1]],130]]],19],[116,[[26,[[115,[-1]],130]]],19],[24,-1,[]],[24,-1,[]],[24,2],[[[115,[-1]],30],33,19],[-1,-1,[]],[[[115,[-1]],[76,[-1]]],[[93,[[52,[92]]]]],19],[[[115,[-1]],-2],[[93,[[52,[92]]]]],19,[[94,[24]],50]],[[[115,[-1]],[95,[-1]]],[[93,[[52,[92]]]]],19],[[[115,[-1]],[76,[-1]]],[[93,[[52,[92]]]]],19],[[[115,[-1]],[75,[-1]]],[[93,[[52,[92]]]]],19],[[[115,[-1]],-2],[[93,[[52,[92]]]]],19,[[94,[24]],50]],[[[115,[-1]],[76,[-1]]],[[93,[[52,[92]]]]],19],[[[115,[-1]],-2],[[93,[[52,[92]]]]],19,[[94,[24]],50]],[[[115,[-1]],[101,[-1]],[9,[24]]],[[93,[[52,[92]]]]],19],[[],24],[[[115,[-1]],[77,[-1]]],[[93,[[52,[92]]]]],19],[[[115,[-1]],[66,[-1]]],[[93,[[52,[92]]]]],19],[[[115,[-1]],[66,[-1]]],[[93,[[52,[92]]]]],19],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[112,[[26,[[115,[-1]],130]]],19],[116,[[26,[[115,[-1]],130]]],19],[[[115,[-1]]],[[93,[[52,[92]]]]],19],[[[115,[-1]]],[[26,[2,130]]],19],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,64,[]],[-1,-2,[],[]],0,0,0,0,0,0,[[-1,3],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[131,[[9,[132]]]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[111,5],[111,5],[111,133],[110,[[93,[[52,[92]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[111,134],[131,22],[-1,[[93,[[52,[92]]]]],[]],[124,[[93,[[52,[92]]]]]],[110,[[93,[[52,[92]]]]]],[131,131],[109,109],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[131,131],79],[110,[[93,[[52,[92]]]]]],[[-1,-2],79,[],[]],[[109,-1],[[26,[[129,[-2,-1]],111]]],[50,51],19],[109,[[26,[110,111]]]],[[111,-1],111,[49,50,51]],[[110,[101,[-1]]],[[93,[[52,[92]]]]],19],[[109,25],109],[[],109],[[],[[135,[131]]]],[111],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[111],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[111,[[26,[-1,111]]],[49,32,50,51]],[111,[[9,[-1]]],[49,32,50,51]],[111,[[9,[-1]]],[49,32,50,51]],[24,2],[111,2],[24,2],[24,2],[24,2],[24,2],[110,2],[[131,131],28],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[124,-1,-2],[[125,[22]]],[41,136],137],[[124,-1,-2],[[125,[22]]],[41,136],137],[[124,-1,-2],[[125,[22]]],[41,136],[137,18]],[[124,-1,-2],[[125,[2]]],[41,136],137],[[124,-1,-2],[[125,[2]]],[41,136],[137,18]],[[111,30],[[26,[2,31]]]],[[111,30],[[26,[2,31]]]],[[131,30],[[26,[2,31]]]],[[131,30],[[26,[2,31]]]],[[109,30],33],[[110,30],33],[-1,111,[5,50,51]],[-1,-1,[]],[138,-1,[]],[-1,-1,[]],[-1,-1,[]],[139,109],[-1,-1,[]],[-1,-1,[]],[25,[[26,[109]]]],[[110,[76,[-1]]],[[93,[[52,[92]]]]],19],[[110,-1],[[93,[[52,[92]]]]],[[94,[24]],50]],[[110,[95,[-1]]],[[93,[[52,[92]]]]],19],[[110,[76,[-1]]],[[93,[[52,[92]]]]],19],[[110,[75,[-1]]],[[93,[[52,[92]]]]],19],[[110,-1],[[93,[[52,[92]]]]],[[94,[24]],50]],[[110,[76,[-1]]],[[93,[[52,[92]]]]],19],[[110,-1],[[93,[[52,[92]]]]],[[94,[24]],50]],[[110,[101,[-1]],[9,[24]]],[[93,[[52,[92]]]]],19],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[[109,-1],109,[[15,[14]]]],0,0,[[],24],[[],24],[[],24],[[],24],[[],24],[[110,[77,[-1]]],[[93,[[52,[92]]]]],19],[[110,[66,[-1]]],[[93,[[52,[92]]]]],19],[[110,[66,[-1]]],[[93,[[52,[92]]]]],19],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[111,28],[[109,-1],109,137],[-1,111,[49,32,50,51]],[131,25],[-1,111,[5,50,51]],[109,109],[[131,131],[[9,[79]]]],[[109,25],109],[[109,140],109],0,[131,141],[[-1,-2,-3],[[93,[[52,[92]]]]],51,[41,136,51],[137,50]],[[-1,-2,-3],[[93,[[52,[92]]]]],51,[41,136,51],[137,50]],[[-1,-2],[[93,[[52,[92]]]]],51,[41,136,51]],[[-1,-2,-3],[[93,[[52,[92]]]]],51,[41,136,51],[137,50]],[[-1,-2],[[93,[[52,[92]]]]],51,[41,136,51]],[[-1,-2],[[93,[[52,[92]]]]],51,[41,136,51]],[109,109],[110,[[93,[[52,[92]]]]]],[111,5],[[109,-1],109,[[15,[14]]]],[131,[[9,[25]]]],[109,109],[-1,-2,[],[]],[-1,-2,[],[]],[-1,14,[]],[-1,14,[]],[110,[[125,[124]]]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[[25,25],[[26,[131,142]]]],[[124,25,[143,[25]],-1,-2],[[125,[2]]],137,137],[[109,25],109],[131,144],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,[[-1,3],2,[]],[[-1,1],2,[]],[-1,4,[]],[-1,4,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[145,[-1,-2]]],[[145,[-1,-2]]],[],[]],[[-1,-2],2,[],[]],[[],[[145,[-1,-2]]],[],[]],[24,-1,[]],[24,-1,[]],[24,2],[[[145,[-1,-2]],30],33,[],[]],[-1,-1,[]],[[],24],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],0,0,[[-1,-2],2,[],[]],[[-1,-2],[[0,[92,50]]],[],[]],[[[145,[-2,-3]],-2,-4,-5],2,[],[[146,[-1]]],147,[[148,[-1,-2]]],[137,50]],[-1,-2,[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,64,[]],[-1,-2,[],[]],[[[145,[-1,-2]],128],[[145,[-1,-2]]],[],[]],0,0,0,0,[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[149,[-1]]],[[149,[-1]]],19],[150,150],[151,151],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[],[[149,[-1]]],19],[[],151],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,2],[24,2],[24,2],[[-1,-2],[[93,[[52,[92]]]]],[],[]],[[[149,[-1]],152],[[93,[[52,[92]]]]],19],[[[149,[-1]],153],[[93,[[52,[92]]]]],19],[[150,153],[[93,[[52,[92]]]]]],[[150,152],[[93,[[52,[92]]]]]],[[151,-2],[[93,[[52,[92]]]]],[],[50,[146,[-1]]]],[[[149,[-1]],30],33,19],[[150,30],33],[[151,30],33],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],24],[[],24],[[],24],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[154,150],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[149,[-1]],-2],[[149,[-1]]],19,[[148,[-1,153]],32]],[[[149,[-1]],-2],[[149,[-1]]],19,[[148,[-1,152]],32]],[[[149,[-1]],-2],[[149,[-1]]],19,[[148,[-1,153]],[148,[-1,152]],32]],0,0,0,0,[[-1,3],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[153,153],[152,152],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,2],[24,2],[[153,153],28],[[152,152],28],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[153,30],33],[[152,30],33],[-1,-1,[]],[-1,-1,[]],[24,152],[[-1,-2],22,[40,41],42],[[-1,-2],22,[40,41],42],[[153,-1],2,47],[[152,-1],2,47],[[],24],[[],24],[-1,-2,[],[]],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,64,[]],[-1,64,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[155,24],2],[[156,157],2],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,5,[]],[158,[[9,[8]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[158,[[9,[5]]]],[122,122],[155,155],[159,159],[156,156],[160,160],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[122,14,[9,[14]]],[[52,[161]]]],[[122,14,[9,[14]]],[[52,[162]]]],[[122,14,[9,[14]]],[[52,[163]]]],[[122,14],[[52,[164]]]],[[],122],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[158,25],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[122,[[26,[14]]]],[[158,30],33],[[158,30],33],[[122,30],33],[[155,30],33],[[159,30],33],[[156,30],33],[[160,30],33],[-1,-1,[]],[165,158],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[155,24],[159,24],[160,14],[[122,25],[[26,[155,158]]]],[[122,25],[[26,[159,158]]]],[[122,25],[[26,[156,158]]]],[[122,25],[[26,[160,158]]]],[[122,-1],[[26,[122,158]]],137],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[-1,[],[]],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[156,157],[156,24],[[159,24],2],[[160,14],2],[158,[[9,[5]]]],[[122,14],[[52,[123]]]],[156,157],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,14,[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[[159,166],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,3],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],0,[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,5,[]],[6,6],[6,6],[35,[[9,[8]]]],[-1,[[93,[[52,[92]]]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[167,35],[[[168,[-1,-2]]],35,[[15,[14]]],[[15,[16]]]],[35,[[9,[5]]]],[169,169],[170,170],[[[171,[-1]]],[[171,[-1]]],18],[167,167],[[[168,[-1,-2]]],[[168,[-1,-2]]],18,18],[35,35],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,[101,[-2]]],[[93,[[52,[92]]]]],[],[]],[[],172],[172,[[26,[[85,[-1,35]],86]]],[50,51,87]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[35,25],[-1,[[26,[35]]],27],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],0,[167,[[26,[-1,35]]],[]],[[[168,[-1,-2]]],[[26,[-3,35]]],[[15,[14]]],[[15,[16]]],[]],[[169,30],33],[[170,30],33],[[[171,[-1]],30],33,32],[[167,30],33],[[[168,[-1,-2]],30],33,32,32],[[35,30],33],[[35,30],33],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[91,35],[[[2,[14,16]]],35],[-1,-1,[]],[37,[[26,[172,38]]]],[37,[[26,[172,38]]]],[[-1,[101,[-2]],[9,[24]]],[[93,[[52,[92]]]]],[],[]],[[],[[9,[46]]]],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[-1,[],[]],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[-1,[66,[-2]]],[[93,[[52,[92]]]]],[],[]],[-1,35,49],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[169,35],[170,35],[[[171,[-1]]],35,[[15,[14]]]],[167,35],[[[168,[-1,-2]]],35,[[15,[14]]],[[15,[16]]]],0,0,[[35,-1],26,63],[35,[[9,[5]]]],[35,16],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,14,[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[[172,37],[[26,[2,38]]]],[[172,37],[[26,[2,38]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[[-1,3],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],0,[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,5,[]],[6,6],[6,6],[36,[[9,[8]]]],[-1,[[93,[[52,[92]]]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[36,[[9,[5]]]],[173,173],[36,36],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[173,173],79],[[-1,-2],79,[],[]],[-1,[[125,[122]]],[]],[-1,[[125,[122]]],[]],[[],173],[[],174],[174,[[26,[[85,[-1,36]],86]]],[50,51,87]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[36,25],[-1,[[26,[173]]],27],[-1,[[26,[36]]],27],[24,2],[24,2],[24,2],[[173,173],28],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],0,[[173,30],33],[[36,30],33],[[36,30],33],[-1,-1,[]],[-1,-1,[]],[14,36],[-1,-1,[]],[91,36],[37,[[26,[174,38]]]],[37,[[26,[174,38]]]],[[-1,-2],22,[40,41],42],[[],[[9,[46]]]],[[173,-1],2,47],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[-1,[],[]],[[],24],[[],24],[[],24],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],0,[-1,[[93,[[52,[92]]]]],51],[-1,[[93,[[52,[92]]]]],51],[-1,122,[]],[[173,173],[[9,[79]]]],[-1,[[52,[123]]],[]],[[173,-1],26,63],[[36,-1],26,63],[36,[[9,[5]]]],[36,16],[-1,[[93,[[52,[92]]]]],51],[-1,[[93,[[52,[92]]]]],51],[-1,-2,[],[]],[-1,-2,[],[]],[-1,14,[]],0,[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[[174,37],[[26,[2,38]]]],[[174,37],[[26,[2,38]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0],"c":[],"p":[[3,"Private",1999],[15,"tuple"],[3,"Private",1999],[8,"Any",2000],[8,"Error",2001],[3,"Command",2002],[4,"Error",0],[3,"Backtrace",2003],[4,"Option",2004],[4,"QueryError",0],[3,"NotFoundSnafu",0],[3,"MissingSnafu",0],[3,"Snafu",0],[3,"String",2005],[8,"Into",2006],[4,"StatusCode",2007],[3,"Leaf",0],[8,"Clone",2008],[8,"NodeType",2009],[3,"Commitment",2010],[8,"RngCore",2011],[15,"u64"],[3,"Options",0],[15,"usize"],[15,"str"],[4,"Result",2012],[8,"Deserializer",2013],[15,"bool"],[4,"BlockError",2014],[3,"Formatter",2015],[3,"Error",2015],[8,"Debug",2015],[6,"Result",2015],[4,"Error",281],[4,"Error",1659],[4,"Error",1878],[3,"ArgMatches",2016],[6,"Error",2017],[3,"StoredView",2018],[8,"Hash",2019],[8,"Sized",2020],[8,"BuildHasher",2019],[3,"QuorumData",2021],[3,"SuccessThreshold",2022],[3,"SimpleCertificate",2022],[3,"Id",2023],[8,"Hasher",2019],[3,"IndentedSection",2024],[8,"Display",2015],[8,"Send",2020],[8,"Sync",2020],[3,"Box",2025],[3,"Arc",2026],[3,"Rc",2027],[3,"SystemContextHandle",2028],[8,"AvailabilityDataSource",281],[8,"NodeDataSource",1659],[8,"StatusDataSource",1878],[8,"UpdateDataSource",885],[8,"VersionedDataSource",885],[8,"NodeImplementation",2009],[8,"Serialize",2029],[8,"Serializer",2029],[3,"TypeId",2000],[3,"InconsistentLeafError",281],[3,"LeafQueryData",281],[6,"BlockHash",281],[3,"PayloadQueryData",281],[3,"TransactionQueryData",281],[3,"FetchLeafSnafu",281],[3,"FetchBlockSnafu",281],[3,"FetchTransactionSnafu",281],[3,"InvalidTransactionIndexSnafu",281],[3,"CustomSnafu",281],[4,"LeafId",281],[4,"BlockId",281],[3,"BlockQueryData",281],[3,"RequestSnafu",281],[4,"Ordering",2030],[4,"Fetch",281],[8,"ErrorCompat",2031],[8,"IntoError",2031],[6,"Payload",0],[3,"Options",281],[3,"Api",2032],[4,"ApiError",2032],[8,"ReadState",2033],[8,"Iterator",2034],[8,"PartialEq",2030],[6,"LeafHash",281],[4,"RequestError",2035],[8,"Future",2036],[3,"Pin",2037],[8,"RangeBounds",2038],[6,"TransactionHash",281],[6,"VidCommitment",2014],[6,"Header",0],[8,"FnOnce",2039],[6,"Metadata",0],[6,"QuorumCertificate",2022],[6,"SignatureKey",0],[6,"TransactionIndex",281],[6,"Transaction",0],[3,"BitSlice",2040],[8,"BitOrder",2041],[3,"ExtensibleDataSource",885],[3,"FetchingDataSource",885],[3,"MetricsDataSource",885],[3,"Config",1100],[3,"SqlStorage",1100],[3,"Error",1100],[3,"Path",2042],[6,"FileSystemDataSource",885],[6,"Result",2043],[3,"FileSystemStorage",1060],[3,"AtomicStoreLoader",2044],[15,"char"],[8,"FromIterator",2045],[8,"AvailabilityStorage",1047],[8,"UpdateAvailabilityData",281],[8,"UpdateNodeData",1659],[3,"PrometheusMetrics",1480],[8,"Metrics",2046],[3,"Transaction",1100],[6,"QueryResult",0],[4,"BitSpanError",2047],[3,"Event",2048],[3,"Duration",2049],[6,"SqlDataSource",1036],[4,"PersistenceError",2050],[3,"Migration",1100],[3,"OffsetDateTime",2051],[3,"Backtrace",2052],[3,"Chain",2043],[3,"Vec",2053],[8,"ToStatement",2054],[8,"IntoIterator",2045],[15,"never"],[3,"Config",2055],[15,"u16"],[4,"Type",2056],[3,"Error",2057],[15,"array"],[15,"u32"],[3,"Fetcher",1295],[8,"Request",1415],[8,"Callback",1295],[8,"Provider",1330],[3,"AnyProvider",1330],[3,"QueryServiceProvider",1330],[3,"NoFetching",1330],[3,"LeafRequest",1415],[3,"PayloadRequest",1415],[3,"Url",2058],[3,"Counter",1480],[3,"Histogram",1480],[15,"f64"],[4,"MetricsError",1480],[3,"Gauge",1480],[3,"Label",1480],[8,"Counter",2046],[8,"Gauge",2046],[8,"Histogram",2046],[8,"Label",2046],[4,"Error",2059],[15,"i64"],[3,"InvalidSignatureKeySnafu",1659],[3,"CustomSnafu",1659],[3,"RequestSnafu",1659],[3,"QuerySnafu",1659],[3,"QueryProposalsSnafu",1659],[3,"Options",1659],[3,"MempoolQueryData",1878],[3,"Options",1878],[8,"Resolvable",0],[13,"Custom",275],[13,"Availability",275],[13,"Node",275],[13,"Status",275],[13,"Error",280],[8,"QueryablePayload",281],[13,"InvalidTransactionIndex",877],[13,"Custom",877],[13,"FetchLeaf",877],[13,"FetchBlock",877],[13,"FetchTransaction",877],[13,"Request",877],[8,"Query",1100],[8,"LocalCallback",1295],[13,"NoSuchMetric",1655],[13,"NoSuchSubgroup",1655],[13,"Prometheus",1655],[13,"Custom",1872],[13,"QueryProposals",1872],[13,"Request",1872],[13,"Query",1872],[8,"UpdateStatusData",1878],[13,"Internal",1997],[13,"Request",1997]],"b":[[134,"impl-Debug-for-Leaf%3CTYPES%3E"],[135,"impl-Display-for-Leaf%3CTYPES%3E"],[136,"impl-Debug-for-Error"],[137,"impl-Display-for-Error"],[141,"impl-Display-for-QueryError"],[142,"impl-Debug-for-QueryError"],[145,"impl-From%3C(String,+StatusCode)%3E-for-Error"],[146,"impl-From%3CError%3E-for-Error"],[147,"impl-From%3CError%3E-for-Error"],[148,"impl-From%3CError%3E-for-Error"],[567,"impl-Debug-for-LeafId%3CTypes%3E"],[568,"impl-Display-for-LeafId%3CTypes%3E"],[569,"impl-Display-for-BlockId%3CTypes%3E"],[570,"impl-Debug-for-BlockId%3CTypes%3E"],[572,"impl-Debug-for-InconsistentLeafError%3CTypes%3E"],[573,"impl-Display-for-InconsistentLeafError%3CTypes%3E"],[583,"impl-Debug-for-Error"],[584,"impl-Display-for-Error"],[586,"impl-From%3CCommitment%3CLeaf%3CTypes%3E%3E%3E-for-LeafId%3CTypes%3E"],[587,"impl-From%3Cusize%3E-for-LeafId%3CTypes%3E"],[589,"impl-From%3CCommitment%3C%3CTypes+as+NodeType%3E::BlockHeader%3E%3E-for-BlockId%3CTypes%3E"],[590,"impl-From%3Cusize%3E-for-BlockId%3CTypes%3E"],[605,"impl-From%3CRequestError%3E-for-Error"],[606,"impl-From%3C(String,+StatusCode)%3E-for-Error"],[909,"impl-NodeDataSource%3CTypes%3E-for-ExtensibleDataSource%3CD,+U%3E"],[910,"impl-StatusDataSource-for-ExtensibleDataSource%3CD,+U%3E"],[911,"impl-StatusDataSource-for-FetchingDataSource%3CTypes,+S,+P%3E"],[912,"impl-NodeDataSource%3CTypes%3E-for-FetchingDataSource%3CTypes,+S,+P%3E"],[977,"impl-UpdateNodeData%3CTypes%3E-for-ExtensibleDataSource%3CD,+U%3E"],[978,"impl-UpdateAvailabilityData%3CTypes%3E-for-ExtensibleDataSource%3CD,+U%3E"],[979,"impl-UpdateAvailabilityData%3CTypes%3E-for-FetchingDataSource%3CTypes,+S,+P%3E"],[980,"impl-UpdateNodeData%3CTypes%3E-for-FetchingDataSource%3CTypes,+S,+P%3E"],[1086,"impl-UpdateNodeData%3CTypes%3E-for-FileSystemStorage%3CTypes%3E"],[1087,"impl-UpdateAvailabilityData%3CTypes%3E-for-FileSystemStorage%3CTypes%3E"],[1121,"impl-AsRef%3Cdyn+Error%3E-for-Error"],[1122,"impl-AsRef%3Cdyn+Error+%2B+Send+%2B+Sync%3E-for-Error"],[1186,"impl-Debug-for-Error"],[1187,"impl-Display-for-Error"],[1188,"impl-Display-for-Migration"],[1189,"impl-Debug-for-Migration"],[1221,"impl-UpdateAvailabilityData%3CTypes%3E-for-SqlStorage"],[1222,"impl-UpdateNodeData%3CTypes%3E-for-SqlStorage"],[1370,"impl-Provider%3CTypes,+LeafRequest%3E-for-AnyProvider%3CTypes%3E"],[1371,"impl-Provider%3CTypes,+PayloadRequest%3E-for-AnyProvider%3CTypes%3E"],[1372,"impl-Provider%3CTypes,+PayloadRequest%3E-for-QueryServiceProvider"],[1373,"impl-Provider%3CTypes,+LeafRequest%3E-for-QueryServiceProvider"],[1563,"impl-Debug-for-MetricsError"],[1564,"impl-Display-for-MetricsError"],[1770,"impl-Display-for-Error"],[1771,"impl-Debug-for-Error"],[1778,"impl-From%3CRequestError%3E-for-Error"],[1779,"impl-From%3C(String,+StatusCode)%3E-for-Error"],[1938,"impl-Debug-for-Error"],[1939,"impl-Display-for-Error"],[1942,"impl-From%3CString%3E-for-Error"],[1944,"impl-From%3CRequestError%3E-for-Error"]]}\ +"hotshot_query_service":{"doc":"The HotShot Query Service is a minimal, generic query …","t":"NNNENGDGNDNNDNDGEGIGDNGLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLAMLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLOLLLLLLLOLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMAAMMMMFLLLLLALLMLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLMLLLLLLLMMMMMMIGEDQNDEQENDNDNDNNQDNDQGEDQNNDNDQNINNDGGGGQDILLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKLLKKKKLLLLLLLLLLLLLLLLLMLLMLLLLLLLLLLLLLLLLKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLMKLLMLLLLLLLLLLLLLLLLLLMLMMMLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMCQDCGDCIILLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLAALLLLLLLLLLKLLLIEDDNDDNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLGCDDCGCLLOCLICCAKKKKKKKKADLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDIDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLOOLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLCLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLIDICCLLLLLLLLLLLLLLLLLLLAAKKLLLLLLLDDIDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDIQLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDDENNNDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMNDEQNDCIDNNDDNDILLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLFLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMENDDNIILLLLMLLLLLLLLLLKLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLKLKLLLLLLLLLMLLLLLLLLLLLLLLMM","n":["Availability","Custom","Err","Error","Error","Header","Leaf","Metadata","Missing","MissingSnafu","Node","NotFound","NotFoundSnafu","Ok","Options","Payload","QueryError","QueryResult","Resolvable","SignatureKey","Snafu","Status","Transaction","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_error_source","as_error_source","augment_args","augment_args_for_update","availability","availability","backtrace","backtrace","block_header","block_payload","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","build","catch_all","cause","cause","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","commit","commitment","commitment","create_random_transaction","data_source","default","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","description","description","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","drop","drop","eq","equivalent","equivalent","equivalent","equivalent","fail","fail","fail","fetching","fill_block_payload","fill_block_payload_unchecked","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from_arg_matches","from_arg_matches_mut","from_stored_view","genesis","get_block_header","get_block_payload","get_hash","get_height","get_justify_qc","get_parent_commitment","get_payload_commitment","get_proposer_id","get_view_number","group_id","hash","header","header","header","in_current_span","in_current_span","include_migrations","init","init","init","init","init","init","init","instantiate_data_source_tests","internal","into","into","into","into","into","into","into","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_error","into_error","into_error","justify_qc","message","metrics","node","node","parent_commitment","port","proposer_id","run_standalone_service","serialize","serialize","serialize","source","source","status","status","status","status","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_resolve","try_resolve","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches_mut","view_number","vzip","vzip","vzip","vzip","vzip","vzip","vzip","message","source","source","source","status","message","AvailabilityDataSource","BlockHash","BlockId","BlockQueryData","BlockRange","Custom","CustomSnafu","Error","Error","Fetch","FetchBlock","FetchBlockSnafu","FetchLeaf","FetchLeafSnafu","FetchTransaction","FetchTransactionSnafu","Hash","Hash","InclusionProof","InconsistentLeafError","InvalidTransactionIndex","InvalidTransactionIndexSnafu","Iter","LeafHash","LeafId","LeafQueryData","LeafRange","Number","Number","Options","PayloadHash","PayloadQueryData","PayloadRange","Pending","QueryablePayload","Ready","Request","RequestSnafu","Timestamp","TransactionHash","TransactionInclusionProof","TransactionIndex","TransactionIndex","TransactionQueryData","UpdateAvailabilityData","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","api_path","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_error_source","as_error_source","augment_args","augment_args_for_update","backtrace","backtrace","block_hash","block_hash","block_hash","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","build","build","build","by_hash","by_hash","cause","cause","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","compare","compare","context","data","default","define_api","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","description","description","deserialize","deserialize","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","enumerate","enumerate","enumerate","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","extensions","fail","fail","fail","fail","fail","fetch_timeout","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_arg_matches","from_arg_matches_mut","genesis","genesis","get_block","get_block_range","get_block_with_transaction","get_hash","get_hash","get_leaf","get_leaf_range","get_payload","get_payload_range","group_id","hash","hash","hash","hash","hash","hash","header","header","header","header","header","header","height","height","height","height","height","in_current_span","in_current_span","index","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","insert_block","insert_leaf","internal","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_error","into_error","into_error","into_error","into_error","into_error","into_future","is_empty","is_empty","is_empty","iter","leaf","leaf","len","len","map","message","metadata","new","new","nth","nth","nth_transaction","nth_transaction","nth_transaction_with_proof","nth_transaction_with_proof","partial_cmp","partial_cmp","payload","payload_hash","payload_hash","proof","proof","proposer","qc","qc_leaf","resolve","resource","resource","resource","serialize","serialize","serialize","serialize","serialize","size","size","source","source","status","status","subscribe_blocks","subscribe_blocks","subscribe_leaves","subscribe_leaves","subscribe_payloads","subscribe_payloads","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","transaction","transaction","transaction","transaction","transaction_by_hash","transaction_by_hash","transaction_by_hash","transaction_by_hash_with_proof","transaction_by_hash_with_proof","transaction_with_proof","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_resolve","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches_mut","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","with_context","with_timeout","height","index","message","resource","resource","resource","source","status","AvailabilityProvider","Error","ExtensibleDataSource","FetchingDataSource","FileSystemDataSource","MetricsDataSource","SqlDataSource","UpdateDataSource","VersionedDataSource","__clone_box","__clone_box","__clone_box","__clone_box","as_any","as_any","as_any_mut","as_any_mut","as_bits","as_mut","as_mut_bits","as_ref","block_height","block_height","block_height","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","commit","commit","count_proposals","create","create_with_store","default","deref","deref","deref_mut","deref_mut","drop","drop","encode_hex","encode_hex_upper","fetching","fmt","fmt","from","from","get_block","get_block_range","get_block_with_transaction","get_leaf","get_leaf_range","get_payload","get_payload_range","get_proposals","init","init","inner","inner_mut","insert_block","insert_leaf","insert_leaf","into","into","into_any","into_any","into_any_arc","into_any_arc","into_any_rc","into_any_rc","metrics","metrics","new","open","open_with_store","populate_metrics","populate_metrics","revert","revert","skip_version","sql","storage","to_owned","to_owned","try_as_bits","try_as_mut_bits","try_from","try_from","try_into","try_into","type_id","type_id","update","update","vzip","vzip","AvailabilityProvider","BlockRequest","Builder","FetchingDataSource","Id","StorageReadGuard","StorageWriteGuard","WithTransaction","__clone_box","__clone_box","__clone_box","__clone_box","as_any","as_any","as_any","as_any","as_any","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","block_height","block_height","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","builder","clone","clone","clone_into","clone_into","cmp","commit","compare","connect","count_proposals","create","create_with_store","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","disable_proactive_fetching","drop","drop","drop","drop","drop","eq","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","get_block","get_block_range","get_block_with_transaction","get_hash","get_leaf","get_leaf_range","get_payload","get_payload_range","get_proposals","hash","header","init","init","init","init","init","insert_block","insert_leaf","insert_leaf","into","into","into","into","into","into_any","into_any","into_any","into_any","into_any","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","metrics","new","open","open_with_store","partial_cmp","populate_metrics","revert","skip_version","storage","storage_mut","to_owned","to_owned","to_string","transaction","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","update","vzip","vzip","vzip","vzip","vzip","with_major_scan_interval","with_minor_scan_interval","with_proactive_range_chunk_size","with_range_chunk_size","with_retry_delay","Builder","Config","Error","Migration","Query","SqlDataSource","Transaction","client","connect","include_migrations","postgres","transaction","AvailabilityStorage","FileSystemStorage","SqlStorage","fs","get_block","get_block_range","get_block_with_transaction","get_header","get_leaf","get_leaf_range","get_payload","get_payload_range","sql","FileSystemStorage","as_any","as_any_mut","block_height","borrow","borrow_mut","commit","count_proposals","create","create_with_store","deref","deref_mut","drop","fmt","from","get_block","get_block_range","get_block_with_transaction","get_header","get_leaf","get_leaf_range","get_payload","get_payload_range","get_proposals","init","insert_block","insert_leaf","insert_leaf","into","into_any","into_any_arc","into_any_rc","open","open_with_store","revert","skip_version","try_from","try_into","type_id","vzip","Config","Error","Migration","Query","SqlStorage","Transaction","__clone_box","__clone_box","__clone_box","__clone_box","applied_on","as_any","as_any","as_any","as_any","as_any","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_ref","as_ref","backtrace","block_height","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","builder","chain","checksum","client","client","client","clone","clone","clone_into","clone_into","cmp","commit","compare","connect","connect","context","count_proposals","database","default","default_migrations","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","downcast","downcast_mut","downcast_ref","drop","drop","drop","drop","drop","drop","drop","eq","equivalent","equivalent","equivalent","equivalent","execute","execute_many","execute_many_with_retries","execute_one","execute_one_with_retries","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_str","get_block","get_block_range","get_block_with_transaction","get_header","get_leaf","get_leaf_range","get_payload","get_payload_range","get_proposals","header","header","host","include_dir","include_migrations","init","init","init","init","init","insert_block","insert_leaf","insert_leaf","into","into","into","into","into","into_any","into_any","into_any","into_any","into_any","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","is","migrations","msg","name","new","no_migrations","partial_cmp","password","port","postgres","prefix","query","query_one","query_one_static","query_opt","query_opt_static","query_static","reset_schema","revert","root_cause","schema","sql","tls","to_owned","to_owned","to_string","to_string","transaction","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","unapplied","upsert","user","version","vzip","vzip","vzip","vzip","vzip","Callback","Fetcher","LocalCallback","Provider","Request","__clone_box","__clone_box","as_any","as_any_mut","borrow","borrow_mut","clone","clone_into","default","deref","deref_mut","drop","fmt","from","init","into","into_any","into_any_arc","into_any_rc","provider","request","run","run","spawn_fetch","to_owned","try_from","try_into","type_id","vzip","with_retry_delay","AnyProvider","NoFetching","Provider","QueryServiceProvider","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","as_any","as_any","as_any","as_any_mut","as_any_mut","as_any_mut","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","default","default","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","fetch","fetch","fetch","fetch","fetch","fetch","fmt","fmt","fmt","from","from","from","init","init","init","into","into","into","into_any","into_any","into_any","into_any_arc","into_any_arc","into_any_arc","into_any_rc","into_any_rc","into_any_rc","new","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","with_block_provider","with_leaf_provider","with_provider","LeafRequest","PayloadRequest","Request","Response","__clone_box","__clone_box","__clone_box","__clone_box","as_any","as_any","as_any_mut","as_any_mut","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","deref","deref","deref_mut","deref_mut","drop","drop","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","from","get_hash","get_hash","hash","hash","init","init","into","into","into_any","into_any","into_any_arc","into_any_arc","into_any_rc","into_any_rc","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Counter","Gauge","Histogram","Label","MetricsError","NoSuchMetric","NoSuchSubgroup","Prometheus","PrometheusMetrics","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","add","add_point","as_any","as_any","as_any","as_any","as_any","as_any","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_error_source","backtrace","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cause","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","create_counter","create_gauge","create_histogram","create_label","default","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","description","drop","drop","drop","drop","drop","drop","export","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","get","get","get","get_counter","get_gauge","get_histogram","get_label","get_subgroup","header","in_current_span","init","init","init","init","init","init","into","into","into","into","into","into","into_any","into_any","into_any","into_any","into_any","into_any","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","mean","sample_count","set","set","source","subgroup","sum","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","update","vzip","vzip","vzip","vzip","vzip","vzip","label","namespace","path","source","Custom","CustomSnafu","Error","Error","InvalidSignatureKey","InvalidSignatureKeySnafu","LeafQueryData","NodeDataSource","Options","Query","QueryProposals","QueryProposalsSnafu","QuerySnafu","Request","RequestSnafu","UpdateNodeData","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","api_path","as_any","as_any","as_any","as_any","as_any","as_any","as_any","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_any_mut","as_error_source","augment_args","augment_args_for_update","backtrace","block_height","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","cause","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","count_proposals","default","define_api","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","description","deserialize","drop","drop","drop","drop","drop","drop","drop","extensions","fail","fail","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from_arg_matches","from_arg_matches_mut","get_proposals","group_id","header","in_current_span","init","init","init","init","init","init","init","insert_leaf","internal","into","into","into","into","into","into","into","into_any","into_any","into_any","into_any","into_any","into_any","into_any","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_arc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_any_rc","into_error","into_error","into_error","into_error","into_error","message","proposer","serialize","source","status","status","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches_mut","vzip","vzip","vzip","vzip","vzip","vzip","vzip","message","proposer","source","source","source","status","Error","Internal","MempoolQueryData","Options","Request","StatusDataSource","UpdateStatusData","__clone_box","__clone_box","__clone_box","__clone_box","api_path","as_any","as_any","as_any","as_any_mut","as_any_mut","as_any_mut","as_error_source","augment_args","augment_args_for_update","backtrace","block_height","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cause","clone","clone","clone_into","clone_into","cmp","compare","consensus_metrics","consensus_metrics","default","default","define_api","deref","deref","deref","deref_mut","deref_mut","deref_mut","description","deserialize","deserialize","drop","drop","drop","eq","equivalent","equivalent","equivalent","equivalent","extensions","fmt","fmt","fmt","from","from","from","from","from","from_arg_matches","from_arg_matches_mut","get_hash","group_id","hash","header","in_current_span","init","init","init","into","into","into","into_any","into_any","into_any","into_any_arc","into_any_arc","into_any_arc","into_any_rc","into_any_rc","into_any_rc","memory_footprint","mempool_info","mempool_info","metrics","partial_cmp","populate_metrics","serialize","serialize","source","status","success_rate","success_rate","to_owned","to_owned","to_string","transaction_count","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches_mut","vzip","vzip","vzip","reason","source"],"q":[[0,"hotshot_query_service"],[275,"hotshot_query_service::Error"],[280,"hotshot_query_service::QueryError"],[281,"hotshot_query_service::availability"],[879,"hotshot_query_service::availability::Error"],[887,"hotshot_query_service::data_source"],[987,"hotshot_query_service::data_source::fetching"],[1150,"hotshot_query_service::data_source::sql"],[1162,"hotshot_query_service::data_source::storage"],[1175,"hotshot_query_service::data_source::storage::fs"],[1215,"hotshot_query_service::data_source::storage::sql"],[1411,"hotshot_query_service::fetching"],[1446,"hotshot_query_service::fetching::provider"],[1531,"hotshot_query_service::fetching::request"],[1596,"hotshot_query_service::metrics"],[1771,"hotshot_query_service::metrics::MetricsError"],[1775,"hotshot_query_service::node"],[1988,"hotshot_query_service::node::Error"],[1994,"hotshot_query_service::status"],[2113,"hotshot_query_service::status::Error"],[2115,"dyn_clone::sealed"],[2116,"dyn_clone::sealed"],[2117,"core::error"],[2118,"clap_builder::builder::command"],[2119,"snafu::backtrace_shim"],[2120,"core::option"],[2121,"alloc::string"],[2122,"core::convert"],[2123,"tide_disco::status"],[2124,"core::clone"],[2125,"hotshot_types::traits::node_implementation"],[2126,"commit"],[2127,"rand_core"],[2128,"core::result"],[2129,"serde::de"],[2130,"hotshot_types::data"],[2131,"core::fmt"],[2132,"core::fmt"],[2133,"clap_builder"],[2134,"hotshot_types::traits::storage"],[2135,"core::hash"],[2136,"core::marker"],[2137,"core::hash"],[2138,"hotshot_types::simple_certificate"],[2139,"hotshot_types::simple_certificate"],[2140,"core::hash"],[2141,"core::fmt"],[2142,"alloc::sync"],[2143,"alloc::rc"],[2144,"hotshot::types::handle"],[2145,"hotshot_types::traits::node_implementation"],[2146,"serde::ser"],[2147,"snafu"],[2148,"snafu"],[2149,"tide_disco::api"],[2150,"core::iter::traits::iterator"],[2151,"core::cmp"],[2152,"core::future::future"],[2153,"core::pin"],[2154,"core::ops::range"],[2155,"hotshot_types::data"],[2156,"hotshot_types::simple_certificate"],[2157,"bitvec::slice"],[2158,"bitvec::order"],[2159,"std::path"],[2160,"anyhow"],[2161,"atomic_store::atomic_store"],[2162,"core::iter::traits::collect"],[2163,"hotshot_types::traits::metrics"],[2164,"bitvec::ptr::span"],[2165,"hotshot_types::event"],[2166,"async_lock::rwlock"],[2167,"async_lock::rwlock"],[2168,"time::offset_date_time"],[2169,"std::backtrace"],[2170,"anyhow"],[2171,"tokio_postgres::to_statement"],[2172,"core::iter::traits::collect"],[2173,"refinery_core::runner"],[2174,"refinery_core::error"],[2175,"url"],[2176,"hotshot_types::traits::metrics"]],"d":["","","Contains the error value","","There was an error while trying to fetch the requested …","","This is the consensus-internal analogous concept to a …","","The requested resource exists but is not currently …","SNAFU context selector for the QueryError::Missing variant","","The requested resource does not exist or is not known to …","SNAFU context selector for the QueryError::NotFound variant","Contains the success value","","","","","A reference to a T which can be resolved into a whole T.","","SNAFU context selector for the QueryError::Error variant","","Item within a Payload.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Queries for HotShot chain state.","","","","Block header.","Optional block payload.","","","","","","","","","","","","","","","Consume the selector and return the associated error","Consume the selector and return the associated error","Consume the selector and return the associated error","","","","","","","","","","","","","","","","","Get a commitment to the underlying object.","","","Persistent storage and sources of data consumed by APIs.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Consume the selector and return a Result with the …","Consume the selector and return a Result with the …","Consume the selector and return a Result with the …","Fetching missing data from remote providers.","Fill this leaf with the block payload.","Fill this leaf with the block payload, without checking …","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Create a leaf from information stored about a view.","Create a new leaf from its components.","The block header contained in this leaf.","Optional block payload.","","Height of this leaf in the chain.","The QC linking this leaf to its parent in the chain.","Commitment to this leaf’s parent.","A commitment to the block payload contained in this leaf.","Identity of the network participant who proposed this leaf.","Time when this leaf was created.","","","","","","","","Embed migrations from the given directory into the current …","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","Per spec, justification","","","A node’s view of a HotShot chain","","The hash of the parent Leaf So we can ask if it extends","","the proposer id of the leaf","Run an instance of the HotShot Query service with no …","","","","","","Queries for node-specific state and uncommitted data.","","","","","","","","","","","","","","","","","","","","","","","","","","","Get the underlying object if it is available without …","","","","","","","","","","","CurView from leader when proposing leaf","","","","","","","","","","","","","","An interface for querying a HotShot blockchain.","A block hash is the hash of the block header.","","","","","SNAFU context selector for the Error::Custom variant","","","An in-progress request to fetch some data.","","SNAFU context selector for the Error::FetchBlock variant","","SNAFU context selector for the Error::FetchLeaf variant","","SNAFU context selector for the Error::FetchTransaction …","","","A proof that a certain transaction exists in the block.","","","SNAFU context selector for the …","Enumerate the transactions in this block.","","","","","","","","","","","","A block payload whose contents (e.g. individual …","","","SNAFU context selector for the Error::Request variant","","","","","An index which can be used to efficiently retrieve a …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Consume the selector and return the associated error","Consume the selector and return the associated error","Consume the selector and return the associated error","Consume the selector and return the associated error","Consume the selector and return the associated error","Get the index of the transaction with a given hash, if it …","Get the index of the transaction with a given hash, if it …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Convert this Fetch to a Result with the provided error …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Enumerate the transactions in the block with their indices.","Enumerate the transactions in the block with their indices.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Additional API specification files to merge with …","Consume the selector and return a Result with the …","Consume the selector and return a Result with the …","Consume the selector and return a Result with the …","Consume the selector and return a Result with the …","Consume the selector and return a Result with the …","Timeout for failing requests due to missing data.","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","","","","","","","Returns the block containing a transaction with the given …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Whether this block is empty of transactions.","Whether this block is empty of transactions.","","List the transaction indices in the block.","","","The number of transactions in the block.","","Transform the result of this fetch.","","","Collect information about a Leaf.","","Get the index of the nth transaction.","Get the index of the nth transaction.","Get the nth transaction.","Get the nth transaction.","Get the nth transaction, along with an inclusion proof.","Get the nth transaction, along with an inclusion proof.","","","","","","Get an inclusion proof for a transaction with a given …","Get an inclusion proof for a transaction with a given …","","","","Wait for the data to become available, if it is not …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Get a transaction by its block-specific index.","Get a transaction by its block-specific index.","","","Get the transaction with a given hash, if it is in the …","Get the transaction with a given hash, if it is in the …","","Get the transaction with a given hash, if it is in the …","Get the transaction with a given hash, if it is in the …","Get a transaction by its block-specific index, along with …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Get the requested data if it is available immediately.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Convert this Fetch to a Result with the provided error …","Wait for the requested data to become available, but only …","","","","","","","","","","","Wrapper to add extensibility to an existing data source.","","A data source for the APIs provided in this crate, backed …","A minimal data source for the status API provided in this …","","An extension trait for types which implement the update …","A data source with an atomic transaction-based …","","","","","","","","","","","","","","","","","","","","","","","","Atomically commit to all outstanding modifications to the …","","","Create a new FileSystemDataSource with storage at path.","Create a new FileSystemDataSource using a persistent …","","","","","","","","","","Asynchronous retrieval of missing data.","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","Access the underlying data source.","Mutably access the underlying data source.","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","Open an existing FileSystemDataSource from storage at path.","Open an existing FileSystemDataSource using a persistent …","","","Erase all oustanding modifications to the data.","","Advance the version of the persistent store without …","","Persistent storage for data sources.","","","","","","","","","","","Update query state based on a new consensus event.","","","","A provider which can be used as a fetcher by the …","A request to fetch a block.","Builder for FetchingDataSource with configuration.","The most basic kind of data source.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Build a FetchingDataSource with these options.","Build a FetchingDataSource with the given storage and …","","","","","","","","Connect to a remote database.","","Create a new FileSystemDataSource with storage at path.","Create a new FileSystemDataSource using a persistent …","","","","","","","","","","","","","","Run without proactive fetching.","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","","","","","","","","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","Construct a new builder with the given storage and fetcher …","Open an existing FileSystemDataSource from storage at path.","Open an existing FileSystemDataSource using a persistent …","","","","Advance the version of the persistent store without …","Obtain direct, read-only access to the underlying local …","Obtain direct, mutable access the underlying local storage.","","","","Access the transaction which is accumulating all …","","","","","","","","","","","","","","","","","","","","","","Set the interval (denominated in minor scans) between …","Set the time interval between minor proactive fetching …","Set the number of items to process at a time when scanning …","Set the number of items to process at a time when loading …","Set the maximum delay between retries of fetches.","","","The Error type, a wrapper around a dynamic error type.","Represents a schema migration to be run on the database, …","","A data source for the APIs provided in this crate, backed …","","","Connect to a remote database.","Embed migrations from the given directory into the current …","","Access the transaction which is accumulating all …","Persistent storage for a HotShot blockchain.","","","","","","","","","","","","","Storage for the APIs provided in this crate, backed by a …","","","","","","","","Create a new FileSystemStorage with storage at path.","Create a new FileSystemStorage using a persistent storage …","","","","","Returns the argument unchanged.","","","","","","","","","","","","","","Calls U::from(self).","","","","Open an existing FileSystemStorage from storage at path.","Open an existing FileSystemStorage using a persistent …","","Advance the version of the persistent store without …","","","","","Postgres client config.","The Error type, a wrapper around a dynamic error type.","Represents a schema migration to be run on the database, …","","Storage for the APIs provided in this crate, backed by a …","An atomic SQL transaction.","","","","","Get the timestamp from when the Migration was applied. None…","","","","","","","","","","","","","Get the backtrace for this Error.","","","","","","","","","","","","Connect to the database, setting options on the underlying …","An iterator of the chain of source errors contained by …","Get the Migration checksum. Checksum is formed from the …","","","","","","","","","","","Connect to the database with this config.","Connect to a remote database.","Wrap the error value with additional context.","","Set the name of the database to connect to.","","The migrations requied to build the default schema for …","","","","","","","","","","","","","Attempt to downcast the error object to a concrete type.","Downcast this error object by mutable reference.","Downcast this error object by reference.","","","","","","","","","","","","","Execute a statement against the underlying database.","Execute a statement that is expected to modify at least …","Execute a statement that is expected to modify at least …","Execute a statement that is expected to modify exactly one …","Execute a statement that is expected to modify exactly one …","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","","","","","","","","","Set the hostname of the database server.","Embed the contents of a directory in your crate.","Embed migrations from the given directory into the current …","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","Returns true if E is the type held by this error object.","Add custom migrations to run when connecting to the …","Create a new error object from a printable error message.","Get the Migration Name","Create a new error object from any error type.","Skip all migrations when connecting to the database.","","Set a password for connecting to the database.","Set the port on which to connect to the database.","","Get the Prefix","","Query the underlying SQL database, returning exactly one …","Query the underlying SQL database with no parameters, …","Query the underlying SQL database, returning zero or one …","Query the underlying SQL database with no parameters, …","Query the underlying SQL database with no parameters.","Reset the schema on connection.","","The lowest level cause of this error — this error’s …","Set the name of the schema to use for queries.","","Use TLS for an encrypted connection to the database.","","","","","Access the transaction which is accumulating all …","","","","","","","","","","","","","","","","Create an unapplied migration, name and version are parsed …","","Set the DB user to connect as.","Get the Migration version","","","","","","A callback to process the result of a request.","Management of concurrent requests to fetch resources.","A callback to process the result of a request.","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","Asynchronous fetching from external data availability …","Requests for fetching resources.","","","Fetch a resource, if it is not already being fetched.","","","","","","","Adaptor combining multiple data availability providers.","Trivial Provider where fetching always fails.","A provider which is able to satisfy requests for data of …","Data availability provider backed by another instance of …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Fetch a resource.","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","Add a sub-provider which fetches blocks.","Add a sub-provider which fetches leaves.","Add a sub-provider which fetches both blocks and leaves.","A request for a leaf with a given height.","A request for a payload with a given commitment.","A request for a resource.","The type of resource that will be returned as a successful …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","A Counter metric.","A Gauge metric.","A Histogram metric.","A Label metric.","","","","","A Prometheus-based implementation of a Metrics registry.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Get a counter in this sub-group by name.","Get a gauge in this sub-group by name.","Get a histogram in this sub-group by name.","Get a label in this sub-group by name.","Get a (possibly nested) subgroup of this group by its path.","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","SNAFU context selector for the Error::Custom variant","","","","SNAFU context selector for the Error::InvalidSignatureKey …","","","","","","SNAFU context selector for the Error::QueryProposals …","SNAFU context selector for the Error::Query variant","","SNAFU context selector for the Error::Request variant","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Consume the selector and return the associated error","Consume the selector and return the associated error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Additional API specification files to merge with …","Consume the selector and return a Result with the …","Consume the selector and return a Result with the …","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Additional API specification files to merge with …","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[7,7,136,0,10,0,0,0,10,0,7,10,0,136,0,0,0,0,0,0,0,7,0,17,17,7,7,11,11,12,12,13,13,10,10,17,7,11,12,13,10,23,17,7,11,12,13,10,23,7,10,23,23,0,23,7,10,17,17,17,7,11,12,13,10,23,17,7,11,12,13,10,23,11,12,13,7,7,10,17,7,11,12,13,10,17,7,11,12,13,10,17,183,17,17,0,23,17,7,11,12,13,10,23,17,7,11,12,13,10,23,7,10,17,7,10,17,7,11,12,13,10,23,17,17,17,17,17,11,12,13,0,17,17,17,17,7,7,11,12,13,10,10,17,7,7,7,7,7,11,12,13,10,23,23,23,17,17,17,17,17,17,17,17,17,17,17,23,17,17,7,10,7,10,0,17,7,11,12,13,10,23,0,7,17,7,11,12,13,10,23,17,7,11,12,13,10,23,17,7,11,12,13,10,23,17,7,11,12,13,10,23,11,12,13,17,13,0,0,23,17,23,17,0,17,7,10,7,10,0,7,10,23,17,7,11,12,13,10,17,7,10,17,7,11,12,13,10,23,17,7,11,12,13,10,23,183,17,17,7,11,12,13,10,23,23,23,17,17,7,11,12,13,10,23,184,185,186,187,184,188,0,0,0,0,56,36,0,0,116,0,36,0,36,0,36,0,75,76,189,0,36,0,189,0,0,0,56,75,76,0,76,0,56,80,0,80,36,0,0,0,0,0,189,0,0,75,75,76,76,66,66,65,65,77,77,68,68,69,69,78,78,70,70,71,71,72,72,73,73,74,74,36,36,84,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,36,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,36,65,36,84,84,65,36,66,68,69,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,36,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,36,70,71,72,73,74,189,189,65,36,75,76,66,65,77,68,69,78,70,71,72,73,74,36,75,76,66,65,77,68,69,78,70,71,72,73,74,36,75,76,75,76,80,68,84,0,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,36,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,36,65,36,66,77,68,69,36,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,36,189,189,77,75,76,66,77,68,69,75,75,75,75,76,76,76,76,66,66,66,66,77,77,77,77,68,68,68,68,69,69,69,69,84,70,71,72,73,74,84,75,75,76,76,66,65,65,77,68,69,78,70,71,72,73,74,36,36,80,75,75,75,76,76,76,66,65,77,68,68,69,84,78,70,71,72,73,74,36,36,36,84,84,66,77,56,56,56,75,76,56,56,56,56,84,75,76,66,77,68,69,75,76,66,65,77,36,66,77,68,69,73,65,36,73,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,36,116,116,36,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,36,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,36,75,76,66,65,77,68,69,84,78,70,71,72,73,74,36,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,36,78,70,71,72,73,74,80,189,189,77,189,66,65,189,77,80,74,77,66,77,189,189,189,189,189,189,75,76,77,66,77,189,189,66,66,65,80,70,71,72,66,77,68,69,36,77,68,65,36,36,74,56,56,56,56,56,56,75,76,66,65,77,68,69,78,70,71,72,73,74,36,75,76,65,36,189,189,77,69,189,189,77,189,189,189,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,36,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,36,80,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,36,84,84,80,75,76,66,65,77,68,69,84,78,70,71,72,73,74,36,80,80,190,190,191,192,193,194,195,191,0,60,0,0,0,0,0,0,0,107,107,108,108,107,108,107,108,107,107,107,107,107,107,108,107,108,107,108,107,108,107,108,60,107,107,110,110,108,107,108,107,108,107,108,107,107,0,107,108,107,108,107,107,107,107,107,107,107,107,107,108,107,107,107,107,107,107,108,107,108,107,108,107,108,107,108,107,110,110,107,108,60,107,110,0,0,107,108,107,107,107,108,107,108,107,108,59,107,107,108,0,0,0,0,125,0,0,125,122,122,125,125,123,122,130,131,125,123,122,130,131,125,122,122,123,122,130,131,125,123,122,130,131,125,123,122,122,125,122,125,125,122,125,122,122,122,122,123,122,130,130,131,131,125,123,122,130,131,131,125,123,123,122,130,131,125,125,125,125,125,125,122,125,125,123,122,130,130,131,131,125,125,125,125,122,122,122,125,122,122,122,122,122,125,125,123,122,130,131,125,122,122,122,123,122,130,131,125,123,122,130,131,125,123,122,130,131,125,123,122,130,131,125,122,123,122,122,125,122,122,122,122,122,122,125,125,122,123,122,130,131,125,123,122,130,131,125,123,122,130,131,125,122,123,122,130,131,125,123,123,123,123,123,0,0,0,0,0,0,0,137,137,0,0,137,0,0,0,0,124,124,124,124,124,124,124,124,0,0,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,0,0,0,0,0,0,139,139,126,126,139,128,139,135,126,134,128,139,135,126,134,128,128,128,134,128,139,135,126,134,128,139,135,126,134,126,128,139,196,135,134,139,126,139,126,139,134,139,126,134,128,134,126,126,0,128,128,139,135,126,134,128,128,139,135,126,134,128,128,128,128,128,139,135,126,134,134,139,139,139,139,139,135,135,135,135,135,128,128,139,139,126,134,128,128,128,139,135,126,126,134,126,134,134,134,134,134,134,134,134,134,128,139,126,0,0,128,139,135,126,134,134,134,134,128,139,135,126,134,128,139,135,126,134,128,139,135,126,134,128,139,135,126,134,128,126,128,139,128,126,139,126,126,0,139,196,196,196,196,196,196,126,134,128,126,139,126,139,126,128,139,134,128,139,135,126,134,128,139,135,126,134,128,139,135,126,134,139,135,126,139,128,139,135,126,134,0,0,0,0,0,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,0,0,197,155,153,153,153,153,153,153,153,0,0,0,0,157,157,158,158,159,159,157,158,159,157,158,159,157,158,159,157,158,159,157,158,159,157,158,159,157,159,157,158,159,157,158,159,157,158,159,156,157,157,158,158,159,157,158,159,157,158,159,157,158,159,157,158,159,157,158,159,157,158,159,157,158,159,158,157,158,159,157,158,159,157,158,159,157,158,159,157,158,159,157,157,157,0,0,0,154,160,160,161,161,160,161,160,161,160,161,160,161,160,161,160,161,160,161,160,161,160,161,160,161,160,160,160,160,161,161,161,161,160,161,160,161,161,160,161,160,161,160,161,160,161,160,161,160,161,160,161,160,161,160,161,160,161,160,161,160,161,0,0,0,0,0,166,166,166,0,118,118,163,163,167,167,164,164,168,168,163,164,166,118,163,167,164,168,166,118,163,167,164,168,166,166,166,118,163,167,164,168,166,118,163,167,164,168,166,118,163,167,164,168,118,163,167,164,168,118,118,118,118,118,166,118,163,167,164,168,166,118,163,167,164,168,166,166,118,163,167,164,168,118,166,166,118,163,167,164,168,166,166,118,163,167,164,168,163,167,168,118,118,118,118,118,166,166,166,118,163,167,164,168,166,118,163,167,164,168,166,118,163,167,164,168,166,118,163,167,164,168,166,118,163,167,164,168,164,164,167,168,166,118,164,118,163,167,164,168,166,166,118,163,167,164,168,166,118,163,167,164,168,166,118,163,167,164,168,167,166,118,163,167,164,168,198,198,199,200,34,0,0,117,34,0,0,0,0,34,34,0,0,34,0,0,177,177,178,178,179,179,175,175,176,176,34,34,180,180,177,178,179,175,176,34,180,177,178,179,175,176,34,34,180,180,34,57,180,177,178,179,175,176,34,180,177,178,179,175,176,34,175,176,34,177,178,179,175,176,34,177,178,179,175,176,34,57,180,0,180,177,178,179,175,176,34,180,177,178,179,175,176,34,34,34,180,177,178,179,175,176,34,180,175,176,177,178,179,175,176,34,34,180,177,178,179,175,176,34,34,34,180,180,57,180,34,34,180,177,178,179,175,176,34,117,34,180,177,178,179,175,176,34,180,177,178,179,175,176,34,180,177,178,179,175,176,34,180,177,178,179,175,176,34,177,178,179,175,176,176,179,34,34,34,176,177,178,179,175,176,34,34,180,177,178,179,175,176,34,180,177,178,179,175,176,34,180,177,178,179,175,176,34,180,180,180,177,178,179,175,176,34,201,202,203,204,202,201,0,35,0,0,35,0,0,181,181,35,35,182,181,182,35,181,182,35,35,182,182,35,58,181,182,35,181,182,35,35,181,35,181,35,181,181,58,58,181,182,0,181,182,35,181,182,35,35,181,35,181,182,35,181,181,181,181,181,182,181,35,35,181,182,35,35,35,182,182,181,182,181,35,35,181,182,35,181,182,35,181,182,35,181,182,35,181,182,35,181,58,58,58,181,205,181,35,35,35,58,58,181,35,35,181,181,182,35,181,182,35,181,182,35,182,182,181,182,35,206,207],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[[-1,3],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,5,[]],[-1,5,[]],[6,6],[6,6],0,0,[7,[[9,[8]]]],[10,[[9,[8]]]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[11,10],[12,10],[[[13,[-1]]],10,[[15,[14]]]],[[16,14],7],[7,[[9,[5]]]],[10,[[9,[5]]]],[[[17,[-1]]],[[17,[-1]]],[18,19]],[7,7],[11,11],[12,12],[[[13,[-1]]],[[13,[-1]]],18],[10,10],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[17,[-1]]],[[20,[[17,[-1]]]]],19],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[[[17,[-1]],21,22],[],19],0,[[],23],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[7,25],[10,25],[-1,[[26,[[17,[-2]]]]],27,19],[-1,[[26,[7]]],27],[-1,[[26,[10]]],27],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[[[17,[-1]],[17,[-1]]],28,19],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[11,[[26,[-1,10]]],[]],[12,[[26,[-1,10]]],[]],[[[13,[-1]]],[[26,[-2,10]]],[[15,[14]]],[]],0,[[[17,[-1]],24],[[26,[2,29]]],19],[[[17,[-1]]],2,19],[[[17,[-1]],30],[[26,[2,31]]],[32,19]],[[[17,[-1]],30],[[26,[2,31]]],19],[[7,30],33],[[7,30],33],[[11,30],33],[[12,30],33],[[[13,[-1]],30],33,32],[[10,30],33],[[10,30],33],[-1,-1,[]],[-1,-1,[]],[[[2,[14,16]]],7],[34,7],[35,7],[36,7],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[37,[[26,[23,38]]]],[37,[[26,[23,38]]]],[[[39,[-1]]],[[17,[-1]]],19],[[],[[17,[-1]]],19],[[[17,[-1]]],[],19],[[[17,[-1]]],9,19],[[-1,-2],22,[40,41],42],[[[17,[-1]]],22,19],[[[17,[-1]]],[[45,[-1,[43,[-1]],44]]],19],[[[17,[-1]]],[[20,[[17,[-1]]]]],19],[[[17,[-1]]],[],19],[[[17,[-1]]],[],19],[[[17,[-1]]],[],19],[[],[[9,[46]]]],[[[17,[-1]],-2],2,19,47],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[-1,[],[]],[-1,[],[]],0,[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],0,[-1,7,49],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[11,10],[12,10],[[[13,[-1]]],10,[[15,[14]]]],0,0,0,0,0,0,0,0,[[23,-2,[55,[-1,-3]]],[[26,[2,7]]],19,[[56,[-1]],[57,[-1]],58,[59,[-1]],60,50,51],[[61,[-1]]]],[[[17,[-1]],-2],26,[19,62],63],[[7,-1],26,63],[[10,-1],26,63],[7,[[9,[5]]]],[10,[[9,[5]]]],0,[7,16],[10,16],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2,-1]]],[],[]],[-1,[[26,[-2,-2]]],[],[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[[23,37],[[26,[2,38]]]],[[23,37],[[26,[2,38]]]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,3],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],0,[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,5,[]],[-1,5,[]],[6,6],[6,6],[[[65,[-1]]],[[9,[8]]],19],[36,[[9,[8]]]],[[[66,[-1]]],[[67,[-1]]],19],[[[68,[-1]]],[[67,[-1]]],19],[[[69,[-1]]],[[67,[-1]]],19],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[70,[-1]]],36,[[15,[14]]]],[[[71,[-1]]],36,[[15,[14]]]],[[[72,[-1]]],36,[[15,[14]]]],[[[73,[-1,-2]]],36,[[15,[22]]],[[15,[22]]]],[[[74,[-1,-2]]],36,[[15,[14]]],[[15,[16]]]],[[-1,20],9,[]],[[-1,20],9,[]],[[[65,[-1]]],[[9,[5]]],19],[36,[[9,[5]]]],[[[75,[-1]]],[[75,[-1]]],19],[[[76,[-1]]],[[76,[-1]]],19],[[[66,[-1]]],[[66,[-1]]],[18,19]],[[[65,[-1]]],[[65,[-1]]],[18,19]],[[[77,[-1]]],[[77,[-1]]],[18,19]],[[[68,[-1]]],[[68,[-1]]],[18,19]],[[[69,[-1]]],[[69,[-1]]],[18,19]],[78,78],[[[70,[-1]]],[[70,[-1]]],18],[[[71,[-1]]],[[71,[-1]]],18],[[[72,[-1]]],[[72,[-1]]],18],[[[73,[-1,-2]]],[[73,[-1,-2]]],18,18],[[[74,[-1,-2]]],[[74,[-1,-2]]],18,18],[36,36],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[75,[-1]],[75,[-1]]],79,19],[[[76,[-1]],[76,[-1]]],79,19],[[-1,-2],79,[],[]],[[-1,-2],79,[],[]],[[[80,[-1]],-3],[[26,[-1,-2]]],[],[5,81],[[82,[-2]]]],[[[68,[-1]]],[[83,[-1]]],19],[[],84],[84,[[26,[[85,[-1,36]],86]]],[50,51,87]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[[[65,[-1]]],25,19],[36,25],[-1,[[26,[[66,[-2]]]]],27,19],[-1,[[26,[[77,[-2]]]]],27,19],[-1,[[26,[[68,[-2]]]]],27,19],[-1,[[26,[[69,[-2]]]]],27,19],[-1,[[26,[36]]],27],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[-1,[[52,[88]]],[]],[-1,[[52,[88]]],[]],[[[77,[-1]]],[[0,[88]]],19],[[[75,[-1]],[75,[-1]]],28,19],[[[76,[-1]],[76,[-1]]],28,19],[[[66,[-1]],[66,[-1]]],28,[89,19]],[[[77,[-1]],[77,[-1]]],28,[89,19]],[[[68,[-1]],[68,[-1]]],28,[89,19]],[[[69,[-1]],[69,[-1]]],28,[89,19]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],0,[[[70,[-1]]],[[26,[-2,36]]],[[15,[14]]],[]],[[[71,[-1]]],[[26,[-2,36]]],[[15,[14]]],[]],[[[72,[-1]]],[[26,[-2,36]]],[[15,[14]]],[]],[[[73,[-1,-2]]],[[26,[-3,36]]],[[15,[22]]],[[15,[22]]],[]],[[[74,[-1,-2]]],[[26,[-3,36]]],[[15,[14]]],[[15,[16]]],[]],0,[[[75,[-1]],30],33,19],[[[75,[-1]],30],33,19],[[[76,[-1]],30],33,19],[[[76,[-1]],30],33,19],[[[66,[-1]],30],33,[32,19]],[[[65,[-1]],30],33,19],[[[65,[-1]],30],33,[32,19]],[[[77,[-1]],30],33,[32,19]],[[[68,[-1]],30],33,[32,19]],[[[69,[-1]],30],33,[32,19]],[[78,30],33],[[[70,[-1]],30],33,32],[[[71,[-1]],30],33,32],[[[72,[-1]],30],33,32],[[[73,[-1,-2]],30],33,32,32],[[[74,[-1,-2]],30],33,32,32],[[36,30],33],[[36,30],33],[-1,-1,[]],[24,[[75,[-1]]],19],[-1,-1,[]],[[[90,[-1]]],[[75,[-1]]],19],[[[67,[-1]]],[[76,[-1]]],19],[24,[[76,[-1]]],19],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[77,[-1]]],[[68,[-1]]],19],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[91,36],[[[2,[14,16]]],36],[-1,-1,[]],[37,[[26,[84,38]]]],[37,[[26,[84,38]]]],[[],[[66,[-1]]],19],[[],[[77,[-1]]],19],[[-1,-3],[[93,[[52,[92]]]]],[],[],[[15,[[76,[-2]]]],50,51]],[[-1,-2],[[93,[[52,[92]]]]],[],[[94,[24]],50]],[[-1,[95,[-2]]],[[93,[[52,[92]]]]],[],[]],[[-1,-2],22,[40,41],42],[[-1,-2],22,[40,41],42],[[-1,-3],[[93,[[52,[92]]]]],[],[],[[15,[[75,[-2]]]],50,51]],[[-1,-2],[[93,[[52,[92]]]]],[],[[94,[24]],50]],[[-1,-3],[[93,[[52,[92]]]]],[],[],[[15,[[76,[-2]]]],50,51]],[[-1,-2],[[93,[[52,[92]]]]],[],[[94,[24]],50]],[[],[[9,[46]]]],[[[75,[-1]],-2],2,19,47],[[[76,[-1]],-2],2,19,47],[[[66,[-1]]],[[90,[-1]]],19],[[[77,[-1]]],[[67,[-1]]],19],[[[68,[-1]]],96,19],[[[69,[-1]]],[[95,[-1]]],19],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[[[66,[-1]]],[[97,[-1]]],19],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[[[77,[-1]]],[[97,[-1]]],19],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[[[66,[-1]]],22,19],[[[77,[-1]]],22,19],[[[68,[-1]]],22,19],[[[69,[-1]]],22,19],0,[-1,[],[]],[-1,[],[]],0,[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[-1,[77,[-2]]],[[93,[[52,[92]]]]],[],[]],[[-1,[66,[-2]]],[[93,[[52,[92]]]]],[],[]],[-1,36,49],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[78,36],[[[70,[-1]]],36,[[15,[14]]]],[[[71,[-1]]],36,[[15,[14]]]],[[[72,[-1]]],36,[[15,[14]]]],[[[73,[-1,-2]]],36,[[15,[22]]],[[15,[22]]]],[[[74,[-1,-2]]],36,[[15,[14]]],[[15,[16]]]],[[[80,[-1]]],[],50],[-1,28,[]],[-1,28,[]],[[[77,[-1]]],28,19],[-1,[],[]],[[[66,[-1]]],[[17,[-1]]],19],0,[-1,24,[]],[[[77,[-1]]],24,19],[[[80,[-1]],-2],[[80,[-3]]],[],[50,98],[]],0,[[[77,[-1]]],[[99,[-1]]],19],[[[17,[-1]],[100,[-1]]],[[26,[[66,[-1]],[65,[-1]]]]],19],[[[97,[-1]],[83,[-1]]],[[77,[-1]]],19],[[-1,24],9,[]],[[-1,24],9,[]],[[-1,24],9,[]],[[-1,24],9,[]],[[-1,24],[[9,[2]]],[]],[[-1,24],[[9,[2]]],[]],[[[75,[-1]],[75,[-1]]],[[9,[79]]],19],[[[76,[-1]],[76,[-1]]],[[9,[79]]],19],[[[77,[-1]]],[[83,[-1]]],19],[[[66,[-1]]],96,19],[[[77,[-1]]],96,19],[-1,9,[]],[-1,9,[]],[[[66,[-1]]],[[101,[-1]]],19],[[[66,[-1]]],[[100,[-1]]],19],0,[[[80,[-1]]],-1,50],0,0,0,[[[66,[-1]],-2],26,19,63],[[[77,[-1]],-2],26,19,63],[[[68,[-1]],-2],26,19,63],[[[69,[-1]],-2],26,19,63],[[36,-1],26,63],[[[77,[-1]]],22,19],[[[68,[-1]]],22,19],[[[65,[-1]]],[[9,[5]]],19],[36,[[9,[5]]]],[36,16],0,[[-1,24],[[93,[[52,[92]]]]],51],[[-1,24],[[93,[[52,[92]]]]],51],[[-1,24],[[93,[[52,[92]]]]],51],[[-1,24],[[93,[[52,[92]]]]],51],[[-1,24],[[93,[[52,[92]]]]],51],[[-1,24],[[93,[[52,[92]]]]],51],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,9,[]],[-1,9,[]],[[[77,[-1]],[102,[-1]]],[[9,[[69,[-1]]]]],19],[[[69,[-1]]],[[103,[-1]]],19],[[-1,20],9,[]],[[-1,20],9,[]],[[[77,[-1]],[20,[[103,[-1]]]]],[[9,[[102,[-1]]]]],19],[[-1,20],[[9,[2]]],[]],[[-1,20],[[9,[2]]],[]],[-1,[[9,[2]]],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[[[80,[-1]]],[[26,[-1,[80,[-1]]]]],[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[[84,37],[[26,[2,38]]]],[[84,37],[[26,[2,38]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[80,[-1]],-2],[[26,[-1,-3]]],[],98,[5,81]],[[[80,[-1]],104],[[9,[-1]]],50],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[[-1,3],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,[[105,[-2,-3]]],[],[],106],[[[107,[-1,-2]]],-2,[],[]],[-1,[[105,[-2,-3]]],[],[],106],[[[107,[-1,-2]]],-2,[],[]],[[[107,[-1,-2]]],[[93,[[52,[92]]]]],[58,50,51],[50,51]],[[[107,[-2,-3]]],[[93,[[52,[92]]]]],19,[[57,[-1]],50,51],[50,51]],[108,[[93,[[52,[92]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[107,[-1,-2]]],[[107,[-1,-2]]],18,18],[108,108],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[-1,[[93,[[52,[92]]]]],[]],[[[107,[-1,-2]]],[[93,[[52,[92]]]]],[60,50],50],[[[107,[-2,-3]],[101,[-1]]],[[93,[[52,[92]]]]],19,[[57,[-1]],50,51],[50,51]],[[109,-2],[[111,[[110,[-1,-2]]]]],19,[[112,[-1]]]],[[113,-2],[[111,[[110,[-1,-2]]]]],19,[[112,[-1]]]],[[],108],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,2],[24,2],[-1,-2,[],[[115,[114]]]],[-1,-2,[],[[115,[114]]]],0,[[[107,[-1,-2]],30],33,32,32],[[108,30],33],[-1,-1,[]],[-1,-1,[]],[[[107,[-2,-3]],-4],[[93,[[52,[92]]]]],19,[[56,[-1]],50,51],[50,51],[[15,[[76,[-1]]]],50,51]],[[[107,[-2,-3]],-4],[[93,[[52,[92]]]]],19,[[56,[-1]],50,51],[50,51],[[94,[24]],50]],[[[107,[-2,-3]],[95,[-1]]],[[93,[[52,[92]]]]],19,[[56,[-1]],50,51],[50,51]],[[[107,[-2,-3]],-4],[[93,[[52,[92]]]]],19,[[56,[-1]],50,51],[50,51],[[15,[[75,[-1]]]],50,51]],[[[107,[-2,-3]],-4],[[93,[[52,[92]]]]],19,[[56,[-1]],50,51],[50,51],[[94,[24]],50]],[[[107,[-2,-3]],-4],[[93,[[52,[92]]]]],19,[[56,[-1]],50,51],[50,51],[[15,[[76,[-1]]]],50,51]],[[[107,[-2,-3]],-4],[[93,[[52,[92]]]]],19,[[56,[-1]],50,51],[50,51],[[94,[24]],50]],[[[107,[-2,-3]],[101,[-1]],[9,[24]]],[[93,[[52,[92]]]]],19,[[57,[-1]],50,51],[50,51]],[[],24],[[],24],[[[107,[-1,-2]]],-1,[],[]],[[[107,[-1,-2]]],-1,[],[]],[[[107,[-2,-3]],[77,[-1]]],[[93,[[52,[92]]]]],19,[[116,[-1]],50,51],[50,51]],[[[107,[-2,-3]],[66,[-1]]],[[93,[[52,[92]]]]],19,[[117,[-1]],50,51],[50,51]],[[[107,[-2,-3]],[66,[-1]]],[[93,[[52,[92]]]]],19,[[116,[-1]],50,51],[50,51]],[-1,-2,[],[]],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[107,[-1,-2]]],118,[58,50,51],[50,51]],[108,118],[[-1,-2],[[107,[-1,-2]]],[],[]],[[109,-2],[[111,[[110,[-1,-2]]]]],19,[[112,[-1]]]],[[113,-2],[[111,[[110,[-1,-2]]]]],19,[[112,[-1]]]],[-1,[[52,[119]]],[]],[-1,[[52,[119]]],[]],[-1,[[93,[[52,[92]]]]],[]],[[[107,[-1,-2]]],[[93,[[52,[92]]]]],[60,50],50],[[[110,[-1,-2]]],[[111,[2]]],19,[[112,[-1]]]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[26,[[105,[-2,-3]],[120,[-2]]]]],[],[],106],[-1,[[26,[[105,[-2,-3]],[120,[-2]]]]],[],[],106],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,64,[]],[-1,64,[]],[[-1,[121,[-2]]],[[93,[[52,[92]]]]],[],[]],[[-1,[121,[-2]]],[[93,[[52,[92]]]]],[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[[[122,[-1,-2,-3]]],[[93,[[52,[92]]]]],19,[[57,[-1]],50,51],[50,51]],[[[122,[-1,-2,-3]]],[[93,[[52,[92]]]]],19,[[57,[-1]],50,51],[50,51]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[123,[-1,-2,-3]]],[[111,[[122,[-1,-2,-3]]]]],19,[[57,[-1]],[117,[-1]],[124,[-1]],60],[[112,[-1]]]],[[-2,-3],[[123,[-1,-2,-3]]],19,[[57,[-1]],[117,[-1]],[124,[-1]],60],[[112,[-1]]]],[[[122,[-1,-2,-3]]],[[122,[-1,-2,-3]]],19,[],[]],[[[125,[-1]]],[[125,[-1]]],19],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[125,[-1]],[125,[-1]]],79,19],[[[122,[-1,-2,-3]]],[[93,[[52,[92]]]]],19,[60,50,51],[50,51]],[[-1,-2],79,[],[]],[[126,-2],[[26,[[127,[-1,-2]],128]]],19,[[112,[-1]]]],[[[122,[-1,-2,-3]],[101,[-1]]],[[93,[[52,[92]]]]],19,[[57,[-1]],50,51],[50,51]],[[109,-2],[[111,[[122,[-1,[129,[-1]],-2]]]]],19,[[112,[-1]]]],[[113,-2],[[111,[[122,[-1,[129,[-1]],-2]]]]],19,[[112,[-1]]]],[24,-1,[]],[24,-1,[]],[[[130,[-1,-2]]],[],19,[]],[24,-1,[]],[24,-1,[]],[[[131,[-1,-2]]],[],19,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[[[131,[-1,-2]]],[],19,[]],[24,-1,[]],[24,-1,[]],[[[123,[-1,-2,-3]]],[[123,[-1,-2,-3]]],[],[],[]],[24,2],[24,2],[24,2],[24,2],[24,2],[[[125,[-1]],[125,[-1]]],28,19],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[[122,[-1,-2,-3]],30],33,19,32,32],[[[125,[-1]],30],33,19],[[[125,[-1]],30],33,19],[-1,-1,[]],[-1,-1,[]],[[[132,[[0,[-1,-2]]]]],[[130,[-1,-2]]],19,[]],[-1,-1,[]],[-1,-1,[]],[[[133,[[0,[-1,-2]]]]],[[131,[-1,-2]]],19,[]],[-1,-1,[]],[[[95,[-1]]],[[125,[-1]]],19],[[[76,[-1]]],[[125,[-1]]],19],[24,[[125,[-1]]],19],[[[122,[-1,-2,-3]],-4],[[93,[[52,[92]]]]],19,[[124,[-1]]],[[112,[-1]]],[[15,[[76,[-1]]]],50,51]],[[[122,[-1,-2,-3]],-4],[[93,[[52,[92]]]]],19,[[124,[-1]]],[[112,[-1]]],[[94,[24]],50]],[[[122,[-1,-2,-3]],[95,[-1]]],[[93,[[52,[92]]]]],19,[[124,[-1]]],[[112,[-1]]]],[[-1,-2],22,[40,41],42],[[[122,[-1,-2,-3]],-4],[[93,[[52,[92]]]]],19,[[124,[-1]]],[[112,[-1]]],[[15,[[75,[-1]]]],50,51]],[[[122,[-1,-2,-3]],-4],[[93,[[52,[92]]]]],19,[[124,[-1]]],[[112,[-1]]],[[94,[24]],50]],[[[122,[-1,-2,-3]],-4],[[93,[[52,[92]]]]],19,[[124,[-1]]],[[112,[-1]]],[[15,[[76,[-1]]]],50,51]],[[[122,[-1,-2,-3]],-4],[[93,[[52,[92]]]]],19,[[124,[-1]]],[[112,[-1]]],[[94,[24]],50]],[[[122,[-1,-2,-3]],[101,[-1]],[9,[24]]],[[93,[[52,[92]]]]],19,[[57,[-1]],50,51],[50,51]],[[[125,[-1]],-2],2,19,47],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[[],24],[[],24],[[],24],[[],24],[[],24],[[[122,[-1,-2,-3]],[77,[-1]]],[[93,[[52,[92]]]]],19,[[116,[-1]],50,51],[50,51]],[[[122,[-1,-2,-3]],[66,[-1]]],[[93,[[52,[92]]]]],19,[[116,[-1]],50,51],[50,51]],[[[122,[-1,-2,-3]],[66,[-1]]],[[93,[[52,[92]]]]],19,[[117,[-1]],50,51],[50,51]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[122,[-1,-2,-3]]],118,19,[[57,[-1]],50,51],[50,51]],[[-1,-2],[[123,[-3,-1,-2]]],[],[],[]],[[109,-2],[[111,[[122,[-1,[129,[-1]],-2]]]]],19,[[112,[-1]]]],[[113,-2],[[111,[[122,[-1,[129,[-1]],-2]]]]],19,[[112,[-1]]]],[[[125,[-1]],[125,[-1]]],[[9,[79]]],19],[-1,[[52,[119]]],[]],[[[122,[-1,-2,-3]]],[[93,[[52,[92]]]]],19,[60,50,51],[50,51]],[[[122,[-1,[129,[-1]],-2]]],[[111,[2]]],19,[[112,[-1]]]],[[[122,[-1,-2,-3]]],[[130,[-1,-2]]],19,[],[]],[[[122,[-1,-2,-3]]],[[131,[-1,-2]]],19,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,14,[]],[[[122,[-1,134,-2]]],[[136,[135]]],19,[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[[-1,[121,[-2]]],[[93,[[52,[92]]]]],[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[123,[-1,-2,-3]],24],[[123,[-1,-2,-3]]],[],[],[]],[[[123,[-1,-2,-3]],104],[[123,[-1,-2,-3]]],[],[],[]],[[[123,[-1,-2,-3]],24],[[123,[-1,-2,-3]]],[],[],[]],[[[123,[-1,-2,-3]],24],[[123,[-1,-2,-3]]],[],[],[]],[[[123,[-1,-2,-3]],104],[[123,[-1,-2,-3]]],[],[],[]],0,0,0,0,0,0,0,[[[137,[-1,-2]]],[[93,[[52,[92]]]]],19,[50,51]],[[126,-2],[[26,[[127,[-1,-2]],128]]],19,[[112,[-1]]]],0,0,[[[137,[-1,-2]]],[[136,[135]]],19,[]],0,0,0,0,[[-1,[76,[-2]]],[[93,[[52,[92]]]]],[],[]],[[-1,-2],[[93,[[52,[92]]]]],[],[[94,[24]],50]],[[-1,[95,[-2]]],[[93,[[52,[92]]]]],[],[]],[[-1,[76,[-2]]],[[93,[[52,[92]]]]],[],[]],[[-1,[75,[-2]]],[[93,[[52,[92]]]]],[],[]],[[-1,-2],[[93,[[52,[92]]]]],[],[[94,[24]],50]],[[-1,[76,[-2]]],[[93,[[52,[92]]]]],[],[]],[[-1,-2],[[93,[[52,[92]]]]],[],[[94,[24]],50]],0,0,[-1,4,[]],[-1,4,[]],[[[129,[-1]]],[[93,[[52,[92]]]]],19],[-1,-2,[],[]],[-1,-2,[],[]],[[[129,[-1]]],[[93,[[52,[92]]]]],19],[[[129,[-1]],[101,[-1]]],[[93,[[52,[92]]]]],19],[109,[[26,[[129,[-1]],138]]],19],[113,[[26,[[129,[-1]],138]]],19],[24,-1,[]],[24,-1,[]],[24,2],[[[129,[-1]],30],33,19],[-1,-1,[]],[[[129,[-1]],[76,[-1]]],[[93,[[52,[92]]]]],19],[[[129,[-1]],-2],[[93,[[52,[92]]]]],19,[[94,[24]],50]],[[[129,[-1]],[95,[-1]]],[[93,[[52,[92]]]]],19],[[[129,[-1]],[76,[-1]]],[[93,[[52,[92]]]]],19],[[[129,[-1]],[75,[-1]]],[[93,[[52,[92]]]]],19],[[[129,[-1]],-2],[[93,[[52,[92]]]]],19,[[94,[24]],50]],[[[129,[-1]],[76,[-1]]],[[93,[[52,[92]]]]],19],[[[129,[-1]],-2],[[93,[[52,[92]]]]],19,[[94,[24]],50]],[[[129,[-1]],[101,[-1]],[9,[24]]],[[93,[[52,[92]]]]],19],[[],24],[[[129,[-1]],[77,[-1]]],[[93,[[52,[92]]]]],19],[[[129,[-1]],[66,[-1]]],[[93,[[52,[92]]]]],19],[[[129,[-1]],[66,[-1]]],[[93,[[52,[92]]]]],19],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[109,[[26,[[129,[-1]],138]]],19],[113,[[26,[[129,[-1]],138]]],19],[[[129,[-1]]],[[93,[[52,[92]]]]],19],[[[129,[-1]]],[[26,[2,138]]],19],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,64,[]],[-1,-2,[],[]],0,0,0,0,0,0,[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[139,[[9,[140]]]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[128,5],[128,5],[128,141],[134,[[93,[[52,[92]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[126,-2],[[26,[[127,[-1,-2]],128]]],19,[[112,[-1]]]],[128,142],[139,22],[-1,[[93,[[52,[92]]]]],[]],[135,[[93,[[52,[92]]]]]],[134,[[93,[[52,[92]]]]]],[139,139],[126,126],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[139,139],79],[134,[[93,[[52,[92]]]]]],[[-1,-2],79,[],[]],[[126,-2],[[26,[[137,[-1,-2]],128]]],19,[[112,[-1]]]],[126,[[26,[134,128]]]],[[128,-1],128,[49,50,51]],[[134,[101,[-1]]],[[93,[[52,[92]]]]],19],[[126,25],126],[[],126],[[],[[143,[139]]]],[128],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[128],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[128,[[26,[-1,128]]],[49,32,50,51]],[128,[[9,[-1]]],[49,32,50,51]],[128,[[9,[-1]]],[49,32,50,51]],[128,2],[24,2],[24,2],[24,2],[24,2],[24,2],[134,2],[[139,139],28],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[135,-1,-2],[[136,[22]]],[41,144],145],[[135,-1,-2],[[136,[22]]],[41,144],145],[[135,-1,-2],[[136,[22]]],[41,144],[145,18]],[[135,-1,-2],[[136,[2]]],[41,144],145],[[135,-1,-2],[[136,[2]]],[41,144],[145,18]],[[128,30],[[26,[2,31]]]],[[128,30],[[26,[2,31]]]],[[139,30],[[26,[2,31]]]],[[139,30],[[26,[2,31]]]],[[126,30],33],[[134,30],33],[-1,128,[5,50,51]],[-1,-1,[]],[146,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[147,126],[-1,-1,[]],[25,[[26,[126]]]],[[134,[76,[-1]]],[[93,[[52,[92]]]]],19],[[134,-1],[[93,[[52,[92]]]]],[[94,[24]],50]],[[134,[95,[-1]]],[[93,[[52,[92]]]]],19],[[134,[76,[-1]]],[[93,[[52,[92]]]]],19],[[134,[75,[-1]]],[[93,[[52,[92]]]]],19],[[134,-1],[[93,[[52,[92]]]]],[[94,[24]],50]],[[134,[76,[-1]]],[[93,[[52,[92]]]]],19],[[134,-1],[[93,[[52,[92]]]]],[[94,[24]],50]],[[134,[101,[-1]],[9,[24]]],[[93,[[52,[92]]]]],19],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[[126,-1],126,[[15,[14]]]],0,0,[[],24],[[],24],[[],24],[[],24],[[],24],[[134,[77,[-1]]],[[93,[[52,[92]]]]],19],[[134,[66,[-1]]],[[93,[[52,[92]]]]],19],[[134,[66,[-1]]],[[93,[[52,[92]]]]],19],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[128,28],[[126,-1],126,145],[-1,128,[49,32,50,51]],[139,25],[-1,128,[5,50,51]],[126,126],[[139,139],[[9,[79]]]],[[126,25],126],[[126,148],126],0,[139,149],[[-1,-2,-3],[[93,[[52,[92]]]]],51,[41,144,51],[145,50]],[[-1,-2,-3],[[93,[[52,[92]]]]],51,[41,144,51],[145,50]],[[-1,-2],[[93,[[52,[92]]]]],51,[41,144,51]],[[-1,-2,-3],[[93,[[52,[92]]]]],51,[41,144,51],[145,50]],[[-1,-2],[[93,[[52,[92]]]]],51,[41,144,51]],[[-1,-2],[[93,[[52,[92]]]]],51,[41,144,51]],[126,126],[134,[[93,[[52,[92]]]]]],[128,5],[[126,-1],126,[[15,[14]]]],[139,[[9,[25]]]],[126,126],[-1,-2,[],[]],[-1,-2,[],[]],[-1,14,[]],[-1,14,[]],[134,[[136,[135]]]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[[25,25],[[26,[139,150]]]],[[135,25,[151,[25]],-1,-2],[[136,[2]]],145,145],[[126,25],126],[139,152],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,[[-1,1],2,[]],[[-1,3],2,[]],[-1,4,[]],[-1,4,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[153,[-1,-2]]],[[153,[-1,-2]]],[],[]],[[-1,-2],2,[],[]],[[],[[153,[-1,-2]]],[],[]],[24,-1,[]],[24,-1,[]],[24,2],[[[153,[-1,-2]],30],33,[],[]],[-1,-1,[]],[[],24],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],0,0,[[-1,-2],2,[],[]],[[-1,-2],[[0,[92,50]]],[],[]],[[[153,[-2,-3]],-2,-4,-5],2,[],[[154,[-1]]],155,[[156,[-1,-2]]],[145,50]],[-1,-2,[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,64,[]],[-1,-2,[],[]],[[[153,[-1,-2]],104],[[153,[-1,-2]]],[],[]],0,0,0,0,[[-1,3],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[157,[-1]]],[[157,[-1]]],19],[158,158],[159,159],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[],[[157,[-1]]],19],[[],159],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,2],[24,2],[24,2],[[-1,-2],[[93,[[52,[92]]]]],[],[]],[[[157,[-1]],160],[[93,[[52,[92]]]]],19],[[[157,[-1]],161],[[93,[[52,[92]]]]],19],[[158,160],[[93,[[52,[92]]]]]],[[158,161],[[93,[[52,[92]]]]]],[[159,-2],[[93,[[52,[92]]]]],[],[50,[154,[-1]]]],[[[157,[-1]],30],33,19],[[158,30],33],[[159,30],33],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],24],[[],24],[[],24],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[162,158],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[157,[-1]],-2],[[157,[-1]]],19,[[156,[-1,160]],32]],[[[157,[-1]],-2],[[157,[-1]]],19,[[156,[-1,161]],32]],[[[157,[-1]],-2],[[157,[-1]]],19,[[156,[-1,160]],[156,[-1,161]],32]],0,0,0,0,[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[160,160],[161,161],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,2],[24,2],[[160,160],28],[[161,161],28],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[160,30],33],[[161,30],33],[-1,-1,[]],[-1,-1,[]],[24,161],[[-1,-2],22,[40,41],42],[[-1,-2],22,[40,41],42],[[160,-1],2,47],[[161,-1],2,47],[[],24],[[],24],[-1,-2,[],[]],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,64,[]],[-1,64,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[163,24],2],[[164,165],2],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,5,[]],[166,[[9,[8]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[166,[[9,[5]]]],[118,118],[163,163],[167,167],[164,164],[168,168],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[118,14,[9,[14]]],[[52,[169]]]],[[118,14,[9,[14]]],[[52,[170]]]],[[118,14,[9,[14]]],[[52,[171]]]],[[118,14],[[52,[172]]]],[[],118],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[166,25],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[118,[[26,[14]]]],[[166,30],33],[[166,30],33],[[118,30],33],[[163,30],33],[[167,30],33],[[164,30],33],[[168,30],33],[173,166],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[163,24],[167,24],[168,14],[[118,25],[[26,[163,166]]]],[[118,25],[[26,[167,166]]]],[[118,25],[[26,[164,166]]]],[[118,25],[[26,[168,166]]]],[[118,-1],[[26,[118,166]]],145],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[-1,[],[]],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[164,165],[164,24],[[167,24],2],[[168,14],2],[166,[[9,[5]]]],[[118,14],[[52,[119]]]],[164,165],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,14,[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[[167,174],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],0,[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,5,[]],[6,6],[6,6],[34,[[9,[8]]]],[-1,[[93,[[52,[92]]]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[175,34],[[[176,[-1,-2]]],34,[[15,[14]]],[[15,[16]]]],[34,[[9,[5]]]],[177,177],[178,178],[[[179,[-1]]],[[179,[-1]]],18],[175,175],[[[176,[-1,-2]]],[[176,[-1,-2]]],18,18],[34,34],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,[101,[-2]]],[[93,[[52,[92]]]]],[],[]],[[],180],[180,[[26,[[85,[-1,34]],86]]],[50,51,87]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[34,25],[-1,[[26,[34]]],27],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],[24,2],0,[175,[[26,[-1,34]]],[]],[[[176,[-1,-2]]],[[26,[-3,34]]],[[15,[14]]],[[15,[16]]],[]],[[177,30],33],[[178,30],33],[[[179,[-1]],30],33,32],[[175,30],33],[[[176,[-1,-2]],30],33,32,32],[[34,30],33],[[34,30],33],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[2,[14,16]]],34],[-1,-1,[]],[91,34],[37,[[26,[180,38]]]],[37,[[26,[180,38]]]],[[-1,[101,[-2]],[9,[24]]],[[93,[[52,[92]]]]],[],[]],[[],[[9,[46]]]],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[-1,[],[]],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[-1,[66,[-2]]],[[93,[[52,[92]]]]],[],[]],[-1,34,49],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[177,34],[178,34],[[[179,[-1]]],34,[[15,[14]]]],[175,34],[[[176,[-1,-2]]],34,[[15,[14]]],[[15,[16]]]],0,0,[[34,-1],26,63],[34,[[9,[5]]]],[34,16],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,14,[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[[180,37],[[26,[2,38]]]],[[180,37],[[26,[2,38]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,3],2,[]],[[-1,1],2,[]],[[-1,3],2,[]],[[-1,1],2,[]],0,[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,4,[]],[-1,5,[]],[6,6],[6,6],[35,[[9,[8]]]],[-1,[[93,[[52,[92]]]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[35,[[9,[5]]]],[181,181],[35,35],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[181,181],79],[[-1,-2],79,[],[]],[-1,[[136,[118]]],[]],[-1,[[136,[118]]],[]],[[],181],[[],182],[182,[[26,[[85,[-1,35]],86]]],[50,51,87]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[24,-1,[]],[35,25],[-1,[[26,[181]]],27],[-1,[[26,[35]]],27],[24,2],[24,2],[24,2],[[181,181],28],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],[[-1,-2],28,[],[]],0,[[181,30],33],[[35,30],33],[[35,30],33],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[91,35],[14,35],[37,[[26,[182,38]]]],[37,[[26,[182,38]]]],[[-1,-2],22,[40,41],42],[[],[[9,[46]]]],[[181,-1],2,47],[[-1,-2],[[48,[-2,-3]]],[],[49,50,51],[]],[-1,[],[]],[[],24],[[],24],[[],24],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[52,[-1]]],[[52,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[53,[-1]]],[[53,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],[[[54,[-1]]],[[54,[4]]],[]],0,[-1,[[93,[[52,[92]]]]],51],[-1,[[93,[[52,[92]]]]],51],[-1,118,[]],[[181,181],[[9,[79]]]],[-1,[[52,[119]]],[]],[[181,-1],26,63],[[35,-1],26,63],[35,[[9,[5]]]],[35,16],[-1,[[93,[[52,[92]]]]],51],[-1,[[93,[[52,[92]]]]],51],[-1,-2,[],[]],[-1,-2,[],[]],[-1,14,[]],0,[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,64,[]],[-1,64,[]],[-1,64,[]],[[182,37],[[26,[2,38]]]],[[182,37],[[26,[2,38]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0],"c":[],"p":[[3,"Private",2115],[15,"tuple"],[3,"Private",2115],[8,"Any",2116],[8,"Error",2117],[3,"Command",2118],[4,"Error",0],[3,"Backtrace",2119],[4,"Option",2120],[4,"QueryError",0],[3,"NotFoundSnafu",0],[3,"MissingSnafu",0],[3,"Snafu",0],[3,"String",2121],[8,"Into",2122],[4,"StatusCode",2123],[3,"Leaf",0],[8,"Clone",2124],[8,"NodeType",2125],[3,"Commitment",2126],[8,"RngCore",2127],[15,"u64"],[3,"Options",0],[15,"usize"],[15,"str"],[4,"Result",2128],[8,"Deserializer",2129],[15,"bool"],[4,"BlockError",2130],[3,"Formatter",2131],[3,"Error",2131],[8,"Debug",2131],[6,"Result",2131],[4,"Error",1775],[4,"Error",1994],[4,"Error",281],[3,"ArgMatches",2132],[6,"Error",2133],[3,"StoredView",2134],[8,"Hash",2135],[8,"Sized",2136],[8,"BuildHasher",2135],[3,"QuorumData",2137],[3,"SuccessThreshold",2138],[3,"SimpleCertificate",2138],[3,"Id",2139],[8,"Hasher",2135],[3,"IndentedSection",2140],[8,"Display",2131],[8,"Send",2136],[8,"Sync",2136],[3,"Box",2141],[3,"Arc",2142],[3,"Rc",2143],[3,"SystemContextHandle",2144],[8,"AvailabilityDataSource",281],[8,"NodeDataSource",1775],[8,"StatusDataSource",1994],[8,"UpdateDataSource",887],[8,"VersionedDataSource",887],[8,"NodeImplementation",2125],[8,"Serialize",2145],[8,"Serializer",2145],[3,"TypeId",2116],[3,"InconsistentLeafError",281],[3,"LeafQueryData",281],[6,"BlockHash",281],[3,"PayloadQueryData",281],[3,"TransactionQueryData",281],[3,"FetchLeafSnafu",281],[3,"FetchBlockSnafu",281],[3,"FetchTransactionSnafu",281],[3,"InvalidTransactionIndexSnafu",281],[3,"CustomSnafu",281],[4,"LeafId",281],[4,"BlockId",281],[3,"BlockQueryData",281],[3,"RequestSnafu",281],[4,"Ordering",2146],[4,"Fetch",281],[8,"ErrorCompat",2147],[8,"IntoError",2147],[6,"Payload",0],[3,"Options",281],[3,"Api",2148],[4,"ApiError",2148],[8,"ReadState",2149],[8,"Iterator",2150],[8,"PartialEq",2146],[6,"LeafHash",281],[4,"RequestError",2151],[8,"Future",2152],[3,"Pin",2153],[8,"RangeBounds",2154],[6,"TransactionHash",281],[6,"VidCommitment",2130],[6,"Header",0],[8,"FnOnce",2155],[6,"Metadata",0],[6,"QuorumCertificate",2138],[6,"SignatureKey",0],[6,"TransactionIndex",281],[6,"Transaction",0],[3,"Duration",2156],[3,"BitSlice",2157],[8,"BitOrder",2158],[3,"ExtensibleDataSource",887],[3,"MetricsDataSource",887],[3,"Path",2159],[6,"FileSystemDataSource",887],[6,"Result",2160],[8,"AvailabilityProvider",987],[3,"AtomicStoreLoader",2161],[15,"char"],[8,"FromIterator",2162],[8,"UpdateAvailabilityData",281],[8,"UpdateNodeData",1775],[3,"PrometheusMetrics",1596],[8,"Metrics",2163],[4,"BitSpanError",2164],[3,"Event",2165],[3,"FetchingDataSource",987],[3,"Builder",987],[8,"AvailabilityStorage",1162],[4,"BlockRequest",987],[3,"Config",1215],[6,"Builder",1150],[3,"Error",1215],[3,"FileSystemStorage",1175],[3,"StorageReadGuard",987],[3,"StorageWriteGuard",987],[3,"RwLockReadGuard",2166],[3,"RwLockWriteGuard",2166],[3,"SqlStorage",1215],[3,"Transaction",1215],[6,"QueryResult",0],[6,"SqlDataSource",1150],[4,"PersistenceError",2167],[3,"Migration",1215],[3,"OffsetDateTime",2168],[3,"Backtrace",2169],[3,"Chain",2160],[3,"Vec",2170],[8,"ToStatement",2171],[8,"IntoIterator",2162],[15,"never"],[3,"Config",2172],[15,"u16"],[4,"Type",2173],[3,"Error",2174],[15,"array"],[15,"u32"],[3,"Fetcher",1411],[8,"Request",1531],[8,"Callback",1411],[8,"Provider",1446],[3,"AnyProvider",1446],[3,"QueryServiceProvider",1446],[3,"NoFetching",1446],[3,"PayloadRequest",1531],[3,"LeafRequest",1531],[3,"Url",2175],[3,"Counter",1596],[3,"Histogram",1596],[15,"f64"],[4,"MetricsError",1596],[3,"Gauge",1596],[3,"Label",1596],[8,"Counter",2163],[8,"Gauge",2163],[8,"Histogram",2163],[8,"Label",2163],[4,"Error",2176],[15,"i64"],[3,"InvalidSignatureKeySnafu",1775],[3,"CustomSnafu",1775],[3,"RequestSnafu",1775],[3,"QuerySnafu",1775],[3,"QueryProposalsSnafu",1775],[3,"Options",1775],[3,"MempoolQueryData",1994],[3,"Options",1994],[8,"Resolvable",0],[13,"Custom",275],[13,"Availability",275],[13,"Node",275],[13,"Status",275],[13,"Error",280],[8,"QueryablePayload",281],[13,"InvalidTransactionIndex",879],[13,"Custom",879],[13,"FetchLeaf",879],[13,"FetchBlock",879],[13,"FetchTransaction",879],[13,"Request",879],[8,"Query",1215],[8,"LocalCallback",1411],[13,"NoSuchMetric",1771],[13,"NoSuchSubgroup",1771],[13,"Prometheus",1771],[13,"Custom",1988],[13,"QueryProposals",1988],[13,"Request",1988],[13,"Query",1988],[8,"UpdateStatusData",1994],[13,"Internal",2113],[13,"Request",2113]],"b":[[134,"impl-Debug-for-Leaf%3CTYPES%3E"],[135,"impl-Display-for-Leaf%3CTYPES%3E"],[136,"impl-Display-for-Error"],[137,"impl-Debug-for-Error"],[141,"impl-Display-for-QueryError"],[142,"impl-Debug-for-QueryError"],[145,"impl-From%3C(String,+StatusCode)%3E-for-Error"],[146,"impl-From%3CError%3E-for-Error"],[147,"impl-From%3CError%3E-for-Error"],[148,"impl-From%3CError%3E-for-Error"],[568,"impl-Debug-for-LeafId%3CTypes%3E"],[569,"impl-Display-for-LeafId%3CTypes%3E"],[570,"impl-Debug-for-BlockId%3CTypes%3E"],[571,"impl-Display-for-BlockId%3CTypes%3E"],[573,"impl-Display-for-InconsistentLeafError%3CTypes%3E"],[574,"impl-Debug-for-InconsistentLeafError%3CTypes%3E"],[584,"impl-Debug-for-Error"],[585,"impl-Display-for-Error"],[587,"impl-From%3Cusize%3E-for-LeafId%3CTypes%3E"],[589,"impl-From%3CCommitment%3CLeaf%3CTypes%3E%3E%3E-for-LeafId%3CTypes%3E"],[590,"impl-From%3CCommitment%3C%3CTypes+as+NodeType%3E::BlockHeader%3E%3E-for-BlockId%3CTypes%3E"],[591,"impl-From%3Cusize%3E-for-BlockId%3CTypes%3E"],[606,"impl-From%3CRequestError%3E-for-Error"],[607,"impl-From%3C(String,+StatusCode)%3E-for-Error"],[908,"impl-StatusDataSource-for-ExtensibleDataSource%3CD,+U%3E"],[909,"impl-NodeDataSource%3CTypes%3E-for-ExtensibleDataSource%3CD,+U%3E"],[951,"impl-UpdateNodeData%3CTypes%3E-for-ExtensibleDataSource%3CD,+U%3E"],[952,"impl-UpdateAvailabilityData%3CTypes%3E-for-ExtensibleDataSource%3CD,+U%3E"],[1009,"impl-StatusDataSource-for-FetchingDataSource%3CTypes,+S,+P%3E"],[1010,"impl-NodeDataSource%3CTypes%3E-for-FetchingDataSource%3CTypes,+S,+P%3E"],[1059,"impl-Debug-for-BlockRequest%3CTypes%3E"],[1060,"impl-Display-for-BlockRequest%3CTypes%3E"],[1068,"impl-From%3CCommitment%3C%3C%3CTypes+as+NodeType%3E::BlockPayload+as+BlockPayload%3E::Transaction%3E%3E-for-BlockRequest%3CTypes%3E"],[1069,"impl-From%3CBlockId%3CTypes%3E%3E-for-BlockRequest%3CTypes%3E"],[1070,"impl-From%3Cusize%3E-for-BlockRequest%3CTypes%3E"],[1088,"impl-UpdateAvailabilityData%3CTypes%3E-for-FetchingDataSource%3CTypes,+S,+P%3E"],[1089,"impl-UpdateNodeData%3CTypes%3E-for-FetchingDataSource%3CTypes,+S,+P%3E"],[1201,"impl-UpdateNodeData%3CTypes%3E-for-FileSystemStorage%3CTypes%3E"],[1202,"impl-UpdateAvailabilityData%3CTypes%3E-for-FileSystemStorage%3CTypes%3E"],[1236,"impl-AsRef%3Cdyn+Error+%2B+Send+%2B+Sync%3E-for-Error"],[1237,"impl-AsRef%3Cdyn+Error%3E-for-Error"],[1302,"impl-Debug-for-Error"],[1303,"impl-Display-for-Error"],[1304,"impl-Display-for-Migration"],[1305,"impl-Debug-for-Migration"],[1337,"impl-UpdateNodeData%3CTypes%3E-for-SqlStorage"],[1338,"impl-UpdateAvailabilityData%3CTypes%3E-for-SqlStorage"],[1486,"impl-Provider%3CTypes,+PayloadRequest%3E-for-AnyProvider%3CTypes%3E"],[1487,"impl-Provider%3CTypes,+LeafRequest%3E-for-AnyProvider%3CTypes%3E"],[1488,"impl-Provider%3CTypes,+PayloadRequest%3E-for-QueryServiceProvider"],[1489,"impl-Provider%3CTypes,+LeafRequest%3E-for-QueryServiceProvider"],[1679,"impl-Debug-for-MetricsError"],[1680,"impl-Display-for-MetricsError"],[1886,"impl-Display-for-Error"],[1887,"impl-Debug-for-Error"],[1894,"impl-From%3C(String,+StatusCode)%3E-for-Error"],[1896,"impl-From%3CRequestError%3E-for-Error"],[2054,"impl-Debug-for-Error"],[2055,"impl-Display-for-Error"],[2059,"impl-From%3CRequestError%3E-for-Error"],[2060,"impl-From%3CString%3E-for-Error"]]}\ }'); if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)}; if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex}; diff --git a/src-files.js b/src-files.js index 675ec0e7a..c09551b86 100644 --- a/src-files.js +++ b/src-files.js @@ -1,4 +1,4 @@ var srcIndex = JSON.parse('{\ -"hotshot_query_service":["",[["availability",[],["data_source.rs","fetch.rs","query_data.rs"]],["data_source",[["storage",[],["fs.rs","ledger_log.rs","sql.rs"]]],["extension.rs","fetching.rs","fs.rs","metrics.rs","notifier.rs","sql.rs","storage.rs","update.rs"]],["fetching",[["provider",[],["any.rs","query_service.rs"]]],["provider.rs","request.rs"]],["node",[],["data_source.rs","query_data.rs"]],["status",[],["data_source.rs","query_data.rs"]]],["api.rs","availability.rs","data_source.rs","error.rs","fetching.rs","lib.rs","metrics.rs","node.rs","resolvable.rs","status.rs"]]\ +"hotshot_query_service":["",[["availability",[],["data_source.rs","fetch.rs","query_data.rs"]],["data_source",[["storage",[],["fs.rs","ledger_log.rs","sql.rs"]]],["extension.rs","fetching.rs","fs.rs","metrics.rs","notifier.rs","sql.rs","storage.rs","update.rs"]],["fetching",[["provider",[],["any.rs","query_service.rs"]]],["provider.rs","request.rs"]],["node",[],["data_source.rs","query_data.rs"]],["status",[],["data_source.rs","query_data.rs"]]],["api.rs","availability.rs","data_source.rs","error.rs","fetching.rs","lib.rs","metrics.rs","node.rs","resolvable.rs","status.rs","task.rs"]]\ }'); createSrcSidebar(); diff --git a/src/hotshot_query_service/availability.rs.html b/src/hotshot_query_service/availability.rs.html index f625c07cd..47b390b32 100644 --- a/src/hotshot_query_service/availability.rs.html +++ b/src/hotshot_query_service/availability.rs.html @@ -603,6 +603,96 @@ 603 604 605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695
    // Copyright (c) 2022 Espresso Systems (espressosys.com)
     // This file is part of the HotShot Query Service library.
     //
    @@ -633,13 +723,13 @@
     
     use crate::{api::load_api, Payload};
     use clap::Args;
    +use cld::ClDuration;
     use derive_more::From;
     use futures::{FutureExt, StreamExt, TryFutureExt};
     use hotshot_types::traits::node_implementation::NodeType;
     use serde::{Deserialize, Serialize};
     use snafu::{OptionExt, Snafu};
    -use std::fmt::Display;
    -use std::path::PathBuf;
    +use std::{fmt::Display, path::PathBuf, str::FromStr, time::Duration};
     use tide_disco::{api::ApiError, method::ReadState, Api, RequestError, StatusCode};
     
     pub(crate) mod data_source;
    @@ -654,6 +744,19 @@
         #[arg(long = "availability-api-path", env = "HOTSHOT_AVAILABILITY_API_PATH")]
         pub api_path: Option<PathBuf>,
     
    +    /// Timeout for failing requests due to missing data.
    +    ///
    +    /// If data needed to respond to a request is missing, it can (in some cases) be fetched from an
    +    /// external provider. This parameter controls how long the request handler will wait for
    +    /// missing data to be fetched before giving up and failing the request.
    +    #[arg(
    +        long = "availability-fetch-timeout",
    +        env = "HOTSHOT_AVAILABILITY_FETCH_TIMEOUT",
    +        default_value = "500ms",
    +        value_parser = parse_duration,
    +    )]
    +    pub fetch_timeout: Duration,
    +
         /// Additional API specification files to merge with `availability-api-path`.
         ///
         /// These optional files may contain route definitions for application-specific routes that have
    @@ -666,6 +769,19 @@
         pub extensions: Vec<toml::Value>,
     }
     
    +#[derive(Clone, Debug, Snafu)]
    +struct ParseDurationError {
    +    reason: String,
    +}
    +
    +fn parse_duration(s: &str) -> Result<Duration, ParseDurationError> {
    +    ClDuration::from_str(s)
    +        .map(Duration::from)
    +        .map_err(|err| ParseDurationError {
    +            reason: err.to_string(),
    +        })
    +}
    +
     #[derive(Clone, Debug, From, Snafu, Deserialize, Serialize)]
     #[snafu(visibility(pub))]
     pub enum Error {
    @@ -730,20 +846,27 @@
             include_str!("../api/availability.toml"),
             options.extensions.clone(),
         )?;
    +    let timeout = options.fetch_timeout;
    +
         api.with_version("0.0.1".parse().unwrap())
    -        .get("get_leaf", |req, state| {
    +        .get("get_leaf", move |req, state| {
                 async move {
                     let id = match req.opt_integer_param("height")? {
                         Some(height) => LeafId::Number(height),
                         None => LeafId::Hash(req.blob_param("hash")?),
                     };
    -                state.get_leaf(id).await.context(FetchLeafSnafu {
    -                    resource: id.to_string(),
    -                })
    +                state
    +                    .get_leaf(id)
    +                    .await
    +                    .with_timeout(timeout)
    +                    .await
    +                    .context(FetchLeafSnafu {
    +                        resource: id.to_string(),
    +                    })
                 }
                 .boxed()
             })?
    -        .stream("stream_leaves", |req, state| {
    +        .stream("stream_leaves", move |req, state| {
                 async move {
                     let height = req.integer_param("height")?;
                     state
    @@ -755,7 +878,7 @@
                 .try_flatten_stream()
                 .boxed()
             })?
    -        .get("get_header", |req, state| {
    +        .get("get_header", move |req, state| {
                 async move {
                     let id = if let Some(height) = req.opt_integer_param("height")? {
                         BlockId::Number(height)
    @@ -767,6 +890,8 @@
                     Ok(state
                         .get_block(id)
                         .await
    +                    .with_timeout(timeout)
    +                    .await
                         .context(FetchBlockSnafu {
                             resource: id.to_string(),
                         })?
    @@ -775,7 +900,7 @@
                 }
                 .boxed()
             })?
    -        .stream("stream_headers", |req, state| {
    +        .stream("stream_headers", move |req, state| {
                 async move {
                     let height = req.integer_param("height")?;
                     Ok(state
    @@ -793,7 +918,7 @@
                 .try_flatten_stream()
                 .boxed()
             })?
    -        .get("get_block", |req, state| {
    +        .get("get_block", move |req, state| {
                 async move {
                     let id = if let Some(height) = req.opt_integer_param("height")? {
                         BlockId::Number(height)
    @@ -802,13 +927,18 @@
                     } else {
                         BlockId::PayloadHash(req.blob_param("payload-hash")?)
                     };
    -                state.get_block(id).await.context(FetchBlockSnafu {
    -                    resource: id.to_string(),
    -                })
    +                state
    +                    .get_block(id)
    +                    .await
    +                    .with_timeout(timeout)
    +                    .await
    +                    .context(FetchBlockSnafu {
    +                        resource: id.to_string(),
    +                    })
                 }
                 .boxed()
             })?
    -        .stream("stream_blocks", |req, state| {
    +        .stream("stream_blocks", move |req, state| {
                 async move {
                     let height = req.integer_param("height")?;
                     Ok(state
    @@ -820,7 +950,7 @@
                 .try_flatten_stream()
                 .boxed()
             })?
    -        .get("get_payload", |req, state| {
    +        .get("get_payload", move |req, state| {
                 async move {
                     let id = if let Some(height) = req.opt_integer_param("height")? {
                         BlockId::Number(height)
    @@ -829,13 +959,18 @@
                     } else {
                         BlockId::Hash(req.blob_param("block-hash")?)
                     };
    -                state.get_payload(id).await.context(FetchBlockSnafu {
    -                    resource: id.to_string(),
    -                })
    +                state
    +                    .get_payload(id)
    +                    .await
    +                    .with_timeout(timeout)
    +                    .await
    +                    .context(FetchBlockSnafu {
    +                        resource: id.to_string(),
    +                    })
                 }
                 .boxed()
             })?
    -        .stream("stream_payloads", |req, state| {
    +        .stream("stream_payloads", move |req, state| {
                 async move {
                     let height = req.integer_param("height")?;
                     Ok(state
    @@ -847,20 +982,28 @@
                 .try_flatten_stream()
                 .boxed()
             })?
    -        .get("get_transaction", |req, state| {
    +        .get("get_transaction", move |req, state| {
                 async move {
                     let (block, index) = match req.opt_blob_param("hash")? {
    -                    Some(hash) => state.get_block_with_transaction(hash).await.context(
    -                        FetchTransactionSnafu {
    +                    Some(hash) => state
    +                        .get_block_with_transaction(hash)
    +                        .await
    +                        .with_timeout(timeout)
    +                        .await
    +                        .context(FetchTransactionSnafu {
                                 resource: hash.to_string(),
    -                        },
    -                    )?,
    +                        })?,
                         None => {
                             let height = req.integer_param("height")?;
                             let id = BlockId::Number(height);
    -                        let block = state.get_block(id).await.context(FetchBlockSnafu {
    -                            resource: id.to_string(),
    -                        })?;
    +                        let block = state
    +                            .get_block(id)
    +                            .await
    +                            .with_timeout(timeout)
    +                            .await
    +                            .context(FetchBlockSnafu {
    +                                resource: id.to_string(),
    +                            })?;
                             let i = req.integer_param("index")?;
                             let index = block.payload().nth(block.metadata(), i).context(
                                 InvalidTransactionIndexSnafu {
    @@ -885,9 +1028,9 @@
     mod test {
         use super::*;
         use crate::{
    -        data_source::ExtensibleDataSource,
    +        data_source::{storage::no_storage, ExtensibleDataSource},
             testing::{
    -            consensus::{MockDataSource, MockNetwork},
    +            consensus::{MockDataSource, MockNetwork, TestableDataSource},
                 mocks::{mock_transaction, MockHeader, MockTypes},
                 setup_test,
             },
    @@ -897,7 +1040,6 @@
         use commit::Committable;
         use futures::FutureExt;
         use portpicker::pick_unused_port;
    -    use std::collections::HashSet;
         use std::time::Duration;
         use surf_disco::Client;
         use tempdir::TempDir;
    @@ -940,11 +1082,8 @@
         }
     
         async fn validate(client: &Client<Error>, height: u64) {
    -        // Check the consistency of every block/leaf pair. Keep track of payloads and transactions
    -        // we have seen so we can detect duplicates.
    -        let mut seen_payloads = HashSet::new();
    -        let mut seen_txns = HashSet::new();
    -        for i in 0..height {
    +        // Check the consistency of every block/leaf pair.
    +        for i in 0..height {
                 tracing::info!("validate block {i}/{height}");
     
                 // Check that looking up the leaf various ways returns the correct leaf.
    @@ -998,34 +1137,46 @@
                         .await
                         .unwrap(),
                 );
    -            // We should be able to look up the block by payload hash as long as it's not a
    -            // duplicate. For duplicate payloads, these endpoints only returns the first one.
    -            if seen_payloads.insert(block.payload_hash()) {
    -                assert_eq!(
    -                    block,
    -                    client
    -                        .get(&format!("block/payload-hash/{}", block.payload_hash()))
    -                        .send()
    -                        .await
    -                        .unwrap()
    -                );
    -                assert_eq!(
    -                    *block.header(),
    -                    client
    -                        .get(&format!("header/payload-hash/{}", block.payload_hash()))
    -                        .send()
    -                        .await
    -                        .unwrap()
    -                );
    -                assert_eq!(
    -                    expected_payload,
    -                    client
    -                        .get(&format!("payload/hash/{}", block.payload_hash()))
    -                        .send()
    -                        .await
    -                        .unwrap(),
    -                );
    -            }
    +            // We should be able to look up the block by payload hash. Note that for duplicate
    +            // payloads, these endpoints may return a different block with the same payload, which
    +            // is acceptable. Therefore, we don't check equivalence of the entire `BlockQueryData`
    +            // response, only its payload.
    +            assert_eq!(
    +                block.payload(),
    +                client
    +                    .get::<BlockQueryData<MockTypes>>(&format!(
    +                        "block/payload-hash/{}",
    +                        block.payload_hash()
    +                    ))
    +                    .send()
    +                    .await
    +                    .unwrap()
    +                    .payload()
    +            );
    +            assert_eq!(
    +                block.payload_hash(),
    +                client
    +                    .get::<Header<MockTypes>>(&format!(
    +                        "header/payload-hash/{}",
    +                        block.payload_hash()
    +                    ))
    +                    .send()
    +                    .await
    +                    .unwrap()
    +                    .payload_commitment
    +            );
    +            assert_eq!(
    +                block.payload(),
    +                client
    +                    .get::<PayloadQueryData<MockTypes>>(&format!(
    +                        "payload/hash/{}",
    +                        block.payload_hash()
    +                    ))
    +                    .send()
    +                    .await
    +                    .unwrap()
    +                    .data(),
    +            );
     
                 // Check that looking up each transaction in the block various ways returns the correct
                 // transaction.
    @@ -1039,35 +1190,64 @@
                     assert_eq!(txn.block_hash(), block.hash());
                     assert_eq!(txn.hash(), txn_from_block.commit());
                     assert_eq!(txn.transaction(), &txn_from_block);
    -                // We should be able to look up the transaction by hash as long as it's not a
    -                // duplicate. For duplicate transactions, this endpoint only returns the first one.
    -                if seen_txns.insert(txn.hash()) {
    -                    assert_eq!(
    -                        txn,
    -                        client
    -                            .get(&format!("transaction/hash/{}", txn.hash()))
    -                            .send()
    -                            .await
    -                            .unwrap()
    -                    );
    -                }
    +                // We should be able to look up the transaction by hash. Note that for duplicate
    +                // transactions, this endpoint may return a different transaction with the same
    +                // hash, which is acceptable. Therefore, we don't check equivalence of the entire
    +                // `TransactionQueryData` response, only its commitment.
    +                assert_eq!(
    +                    txn.hash(),
    +                    client
    +                        .get::<TransactionQueryData<MockTypes>>(&format!(
    +                            "transaction/hash/{}",
    +                            txn.hash()
    +                        ))
    +                        .send()
    +                        .await
    +                        .unwrap()
    +                        .hash()
    +                );
                 }
             }
         }
     
         #[async_std::test]
         async fn test_api() {
    +        test_api_helper::<MockDataSource>(Duration::from_millis(500)).await;
    +    }
    +
    +    // This test runs the `postgres` Docker image, which doesn't work on Windows.
    +    #[cfg(not(target_os = "windows"))]
    +    #[async_std::test]
    +    async fn test_api_no_storage() {
    +        // With a long enough fetch timeout, we can run the API without any local storage and it
    +        // still works: missing data is fetched on demand or proactively from a peer.
    +        //
    +        // We set the timeout very conservatively here at 5s, so the test passes deterministically
    +        // even in resource-constrained environments like CI builders. In practice, on a reasonably
    +        // powerful server with a fast connection to a powerful peer, this timeout can likely be
    +        // made much shorter, under 1s.
    +        test_api_helper::<no_storage::testing::DataSource>(Duration::from_secs(5)).await;
    +    }
    +
    +    async fn test_api_helper<D: TestableDataSource>(fetch_timeout: Duration) {
             setup_test();
     
             // Create the consensus network.
    -        let mut network = MockNetwork::<MockDataSource>::init().await;
    +        let mut network = MockNetwork::<D>::init().await;
             network.start().await;
     
             // Start the web server.
             let port = pick_unused_port().unwrap();
             let mut app = App::<_, Error>::with_state(network.data_source());
    -        app.register_module("availability", define_api(&Default::default()).unwrap())
    -            .unwrap();
    +        app.register_module(
    +            "availability",
    +            define_api(&Options {
    +                fetch_timeout,
    +                ..Default::default()
    +            })
    +            .unwrap(),
    +        )
    +        .unwrap();
             spawn(app.serve(format!("0.0.0.0:{}", port)));
     
             // Start a client.
    diff --git a/src/hotshot_query_service/availability/fetch.rs.html b/src/hotshot_query_service/availability/fetch.rs.html
    index 6fcd289b3..6396766a1 100644
    --- a/src/hotshot_query_service/availability/fetch.rs.html
    +++ b/src/hotshot_query_service/availability/fetch.rs.html
    @@ -110,6 +110,16 @@
     110
     111
     112
    +113
    +114
    +115
    +116
    +117
    +118
    +119
    +120
    +121
    +122
     

    // Copyright (c) 2022 Espresso Systems (espressosys.com)
     // This file is part of the HotShot Query Service library.
     //
    @@ -124,7 +134,7 @@
     
     use futures::future::{BoxFuture, FutureExt};
     use snafu::{Error, ErrorCompat, IntoError, NoneError, OptionExt};
    -use std::future::IntoFuture;
    +use std::{future::IntoFuture, time::Duration};
     
     /// An in-progress request to fetch some data.
     ///
    @@ -190,6 +200,16 @@
         pub async fn resolve(self) -> T {
             self.await
         }
    +
    +    /// Wait for the requested data to become available, but only for up to `timeout`.
    +    ///
    +    /// This function is similar to [`resolve`](Self::resolve), but if the future does not resolve
    +    /// within `timeout`, then [`with_timeout`](Self::with_timeout) will resolve with [`None`].
    +    pub async fn with_timeout(self, timeout: Duration) -> Option<T> {
    +        async_std::future::timeout(timeout, self.into_future())
    +            .await
    +            .ok()
    +    }
     }
     
     impl<T: 'static> Fetch<T> {
    diff --git a/src/hotshot_query_service/data_source.rs.html b/src/hotshot_query_service/data_source.rs.html
    index 46cea0ecd..7f2511be9 100644
    --- a/src/hotshot_query_service/data_source.rs.html
    +++ b/src/hotshot_query_service/data_source.rs.html
    @@ -573,6 +573,168 @@
     573
     574
     575
    +576
    +577
    +578
    +579
    +580
    +581
    +582
    +583
    +584
    +585
    +586
    +587
    +588
    +589
    +590
    +591
    +592
    +593
    +594
    +595
    +596
    +597
    +598
    +599
    +600
    +601
    +602
    +603
    +604
    +605
    +606
    +607
    +608
    +609
    +610
    +611
    +612
    +613
    +614
    +615
    +616
    +617
    +618
    +619
    +620
    +621
    +622
    +623
    +624
    +625
    +626
    +627
    +628
    +629
    +630
    +631
    +632
    +633
    +634
    +635
    +636
    +637
    +638
    +639
    +640
    +641
    +642
    +643
    +644
    +645
    +646
    +647
    +648
    +649
    +650
    +651
    +652
    +653
    +654
    +655
    +656
    +657
    +658
    +659
    +660
    +661
    +662
    +663
    +664
    +665
    +666
    +667
    +668
    +669
    +670
    +671
    +672
    +673
    +674
    +675
    +676
    +677
    +678
    +679
    +680
    +681
    +682
    +683
    +684
    +685
    +686
    +687
    +688
    +689
    +690
    +691
    +692
    +693
    +694
    +695
    +696
    +697
    +698
    +699
    +700
    +701
    +702
    +703
    +704
    +705
    +706
    +707
    +708
    +709
    +710
    +711
    +712
    +713
    +714
    +715
    +716
    +717
    +718
    +719
    +720
    +721
    +722
    +723
    +724
    +725
    +726
    +727
    +728
    +729
    +730
    +731
    +732
    +733
    +734
    +735
    +736
    +737
     
    // Copyright (c) 2022 Espresso Systems (espressosys.com)
     // This file is part of the HotShot Query Service library.
     //
    @@ -602,7 +764,7 @@
     //!
     
     mod extension;
    -mod fetching;
    +pub mod fetching;
     mod fs;
     mod metrics;
     mod notifier;
    @@ -611,7 +773,7 @@
     mod update;
     
     pub use extension::ExtensibleDataSource;
    -pub use fetching::FetchingDataSource;
    +pub use fetching::{AvailabilityProvider, FetchingDataSource};
     #[cfg(feature = "file-system-data-source")]
     pub use fs::FileSystemDataSource;
     #[cfg(feature = "metrics-data-source")]
    @@ -620,31 +782,18 @@
     pub use sql::SqlDataSource;
     pub use update::{UpdateDataSource, VersionedDataSource};
     
    -/// Generic tests we can instantiate for all the availability data sources.
    -#[cfg(any(test, feature = "testing"))]
    -#[espresso_macros::generic_tests]
    -pub mod availability_tests {
    +#[cfg(any(test, feature = "testing"))]
    +mod test_helpers {
         use crate::{
    -        availability::{
    -            payload_size, BlockId, BlockQueryData, Fetch, LeafQueryData, UpdateAvailabilityData,
    -        },
    +        availability::{BlockQueryData, Fetch, LeafQueryData},
             node::NodeDataSource,
    -        testing::{
    -            consensus::MockNetwork,
    -            mocks::{mock_transaction, MockPayload, MockTypes, TestableDataSource},
    -            setup_test,
    -        },
    -        Leaf,
    +        testing::{consensus::TestableDataSource, mocks::MockTypes},
         };
         use async_std::sync::RwLock;
    -    use commit::Committable;
         use futures::{
             future,
             stream::{BoxStream, StreamExt},
         };
    -    use hotshot_types::simple_certificate::QuorumCertificate;
    -    use std::collections::{HashMap, HashSet};
    -    use std::fmt::Debug;
         use std::ops::{Bound, RangeBounds};
     
         /// Apply an upper bound to a range based on the currently available block height.
    @@ -662,7 +811,10 @@
         }
     
         /// Get a stream of blocks, implicitly terminating at the current block height.
    -    async fn block_range<R, D>(ds: &D, range: R) -> BoxStream<'static, BlockQueryData<MockTypes>>
    +    pub async fn block_range<R, D>(
    +        ds: &D,
    +        range: R,
    +    ) -> BoxStream<'static, BlockQueryData<MockTypes>>
         where
             D: TestableDataSource,
             R: RangeBounds<usize> + Send + 'static,
    @@ -674,7 +826,7 @@
         }
     
         /// Get a stream of leaves, implicitly terminating at the current block height.
    -    async fn leaf_range<R, D>(ds: &D, range: R) -> BoxStream<'static, LeafQueryData<MockTypes>>
    +    pub async fn leaf_range<R, D>(ds: &D, range: R) -> BoxStream<'static, LeafQueryData<MockTypes>>
         where
             D: TestableDataSource,
             R: RangeBounds<usize> + Send + 'static,
    @@ -685,7 +837,7 @@
                 .boxed()
         }
     
    -    async fn get_non_empty_blocks(
    +    pub async fn get_non_empty_blocks(
             ds: &RwLock<impl TestableDataSource>,
         ) -> Vec<(LeafQueryData<MockTypes>, BlockQueryData<MockTypes>)> {
             let ds = ds.read().await;
    @@ -697,6 +849,28 @@
                 .collect()
                 .await
         }
    +}
    +
    +/// Generic tests we can instantiate for all the availability data sources.
    +#[cfg(any(test, feature = "testing"))]
    +#[espresso_macros::generic_tests]
    +pub mod availability_tests {
    +    use super::test_helpers::*;
    +    use crate::{
    +        availability::{payload_size, BlockId},
    +        node::NodeDataSource,
    +        testing::{
    +            consensus::{MockNetwork, TestableDataSource},
    +            mocks::{mock_transaction, MockTypes},
    +            setup_test,
    +        },
    +    };
    +    use async_std::sync::RwLock;
    +    use commit::Committable;
    +    use futures::stream::StreamExt;
    +    use std::collections::HashMap;
    +    use std::fmt::Debug;
    +    use std::ops::{Bound, RangeBounds};
     
         async fn validate(ds: &RwLock<impl TestableDataSource>) {
             let ds = ds.read().await;
    @@ -711,17 +885,12 @@
                 assert_eq!(leaf.hash(), leaf.leaf().commit());
     
                 // Check indices.
    -            assert_eq!(leaf, ds.get_leaf(i).await.await);
    +            tracing::info!("looking up leaf {i} various ways");
    +            assert_eq!(leaf, ds.get_leaf(i).await.await);
                 assert_eq!(leaf, ds.get_leaf(leaf.hash()).await.await);
    -            assert!(ds
    -                .get_proposals(&leaf.proposer(), None)
    -                .await
    -                .unwrap()
    -                .contains(&leaf));
     
    -            let Ok(block) = ds.get_block(i).await.try_resolve() else {
    -                continue;
    -            };
    +            tracing::info!("looking up block {i} various ways");
    +            let block = ds.get_block(i).await.await;
                 assert_eq!(leaf.block_hash(), block.hash());
                 assert_eq!(block.height(), i as u64);
                 assert_eq!(block.hash(), block.header().commit());
    @@ -733,71 +902,83 @@
                 // We should be able to look up the block by payload hash unless its payload is a
                 // duplicate. For duplicate payloads, this function returns the index of the first
                 // duplicate.
    +            //
    +            // Note: this ordering is not a strict requirement. It should hold for payloads in local
    +            // storage, but we don't have a good way of enforcing it if the payload is missing, in
    +            // which case we will return the first matching payload we see, which could happen in
    +            // any order. We use `try_resolve` to skip this check if the object isn't available
    +            // locally.
                 let ix = seen_payloads
                     .entry(block.payload_hash())
                     .or_insert(i as u64);
    -            assert_eq!(
    -                ds.get_block(BlockId::PayloadHash(block.payload_hash()))
    +            if let Ok(block) = ds
    +                .get_block(BlockId::PayloadHash(block.payload_hash()))
    +                .await
    +                .try_resolve()
    +            {
    +                assert_eq!(block.height(), *ix);
    +            } else {
    +                tracing::warn!(
    +                    "skipping block by payload index check for missing payload {:?}",
    +                    block.header()
    +                );
    +                // At least check that _some_ block can be fetched.
    +                ds.get_block(BlockId::PayloadHash(block.payload_hash()))
                         .await
    -                    .await
    -                    .height(),
    -                *ix
    -            );
    +                    .await;
    +            }
     
                 // Check payload lookup.
                 let expected_payload = block.clone().into();
                 assert_eq!(ds.get_payload(i).await.await, expected_payload);
                 assert_eq!(ds.get_payload(block.hash()).await.await, expected_payload);
    -            if *ix == i as u64 {
    -                assert_eq!(
    -                    ds.get_payload(BlockId::PayloadHash(block.payload_hash()))
    -                        .await
    -                        .await,
    -                    expected_payload
    +            // Similar to the above, we can't guarantee which index we will get when passively
    +            // fetching this payload, so only check the index if the payload is available locally.
    +            if let Ok(payload) = ds
    +                .get_payload(BlockId::PayloadHash(block.payload_hash()))
    +                .await
    +                .try_resolve()
    +            {
    +                if *ix == i as u64 {
    +                    assert_eq!(payload, expected_payload);
    +                }
    +            } else {
    +                tracing::warn!(
    +                    "skipping payload index check for missing payload {:?}",
    +                    block.header()
                     );
    +                // At least check that _some_ payload can be fetched.
    +                ds.get_payload(BlockId::PayloadHash(block.payload_hash()))
    +                    .await
    +                    .await;
                 }
     
                 for (j, txn) in block.enumerate() {
    +                tracing::info!("looking up transaction {i},{j}");
    +
                     // We should be able to look up the transaction by hash unless it is a duplicate.
                     // For duplicate transactions, this function returns the index of the first
                     // duplicate.
    +                //
    +                // Similar to the above, we can't guarantee which index we will get when passively
    +                // fetching this transaction, so only check the index if the transaction is
    +                // available locally.
                     let ix = seen_transactions
                         .entry(txn.commit())
                         .or_insert((i as u64, j));
    -                let (block, pos) = ds.get_block_with_transaction(txn.commit()).await.await;
    -                assert_eq!((block.height(), pos), *ix);
    -            }
    -        }
    -
    -        // Validate the list of proposals for every distinct proposer ID in the chain.
    -        for proposer in leaf_range(&*ds, ..)
    -            .await
    -            .map(|leaf| leaf.proposer())
    -            .collect::<HashSet<_>>()
    -            .await
    -        {
    -            let proposals = ds.get_proposals(&proposer, None).await.unwrap();
    -            // We found `proposer` by getting the proposer ID of a leaf, so there must be at least
    -            // one proposal from this proposer.
    -            assert!(!proposals.is_empty());
    -            // If we select with a limit, we should get the most recent `limit` proposals in
    -            // chronological order.
    -            let suffix = ds
    -                .get_proposals(&proposer, Some(proposals.len() / 2))
    -                .await
    -                .unwrap();
    -            assert_eq!(suffix.len(), proposals.len() / 2);
    -            assert!(proposals.ends_with(&suffix));
    -
    -            // Check that the proposer ID of every leaf indexed by `proposer` is `proposer`, and
    -            // that the list of proposals is in chronological order.
    -            let mut prev_height = None;
    -            for leaf in proposals {
    -                assert_eq!(proposer, leaf.proposer());
    -                if let Some(prev_height) = prev_height {
    -                    assert!(prev_height < leaf.height());
    +                if let Ok((block, pos)) = ds
    +                    .get_block_with_transaction(txn.commit())
    +                    .await
    +                    .try_resolve()
    +                {
    +                    assert_eq!((block.height(), pos), *ix);
    +                } else {
    +                    tracing::warn!(
    +                        "skipping transaction index check for missing transaction {j} {txn:?}"
    +                    );
    +                    // At least check that _some_ transaction can be fetched.
    +                    ds.get_block_with_transaction(txn.commit()).await.await;
                     }
    -                prev_height = Some(leaf.height());
                 }
             }
         }
    @@ -837,16 +1018,41 @@
             // should be able to read the same data if we connect an entirely new data source to the
             // underlying storage.
             {
    +            tracing::info!("checking persisted storage");
    +
                 // Lock the original data source to prevent concurrent updates.
                 let ds = ds.read().await;
                 let storage = D::connect(network.storage()).await;
    +
    +            // Ensure we have the same data in both data sources (if data was missing from the
    +            // original it is of course allowed to be missing from persistent storage and thus from
    +            // the latter).
    +            let block_height = NodeDataSource::block_height(&*ds).await.unwrap();
                 assert_eq!(
    -                block_range(&*ds, ..).await.collect::<Vec<_>>().await,
    -                block_range(&storage, ..).await.collect::<Vec<_>>().await
    +                ds.get_block_range(..block_height)
    +                    .await
    +                    .map(|fetch| fetch.try_resolve().ok())
    +                    .collect::<Vec<_>>()
    +                    .await,
    +                storage
    +                    .get_block_range(..block_height)
    +                    .await
    +                    .map(|fetch| fetch.try_resolve().ok())
    +                    .collect::<Vec<_>>()
    +                    .await
                 );
                 assert_eq!(
    -                leaf_range(&*ds, ..).await.collect::<Vec<_>>().await,
    -                leaf_range(&storage, ..).await.collect::<Vec<_>>().await
    +                ds.get_leaf_range(..block_height)
    +                    .await
    +                    .map(|fetch| fetch.try_resolve().ok())
    +                    .collect::<Vec<_>>()
    +                    .await,
    +                storage
    +                    .get_leaf_range(..block_height)
    +                    .await
    +                    .map(|fetch| fetch.try_resolve().ok())
    +                    .collect::<Vec<_>>()
    +                    .await
                 );
             }
         }
    @@ -933,6 +1139,24 @@
                 self.0.end_bound()
             }
         }
    +}
    +
    +/// Generic tests we can instantiate for any data source with reliable, versioned persistent storage.
    +#[cfg(any(test, feature = "testing"))]
    +#[espresso_macros::generic_tests]
    +pub mod persistence_tests {
    +    use crate::{
    +        availability::{BlockQueryData, LeafQueryData, UpdateAvailabilityData},
    +        node::NodeDataSource,
    +        testing::{
    +            consensus::TestableDataSource,
    +            mocks::{MockPayload, MockTypes},
    +            setup_test,
    +        },
    +        Leaf,
    +    };
    +    use commit::Committable;
    +    use hotshot_types::simple_certificate::QuorumCertificate;
     
         #[async_std::test]
         pub async fn test_revert<D: TestableDataSource>() {
    @@ -1028,6 +1252,100 @@
         }
     }
     
    +/// Generic tests we can instantiate for all the node data sources.
    +#[cfg(any(test, feature = "testing"))]
    +#[espresso_macros::generic_tests]
    +pub mod node_tests {
    +    use super::test_helpers::*;
    +    use crate::testing::{
    +        consensus::{MockNetwork, TestableDataSource},
    +        setup_test,
    +    };
    +    use futures::stream::StreamExt;
    +    use std::collections::HashSet;
    +
    +    async fn validate(ds: &impl TestableDataSource) {
    +        let mut leaves = leaf_range(ds, ..).await;
    +
    +        // Check the consistency of our indexes by proposer for every leaf.
    +        while let Some(leaf) = leaves.next().await {
    +            assert!(ds
    +                .get_proposals(&leaf.proposer(), None)
    +                .await
    +                .unwrap()
    +                .contains(&leaf));
    +        }
    +
    +        // Validate the list of proposals for every distinct proposer ID in the chain.
    +        for proposer in leaf_range(ds, ..)
    +            .await
    +            .map(|leaf| leaf.proposer())
    +            .collect::<HashSet<_>>()
    +            .await
    +        {
    +            let proposals = ds.get_proposals(&proposer, None).await.unwrap();
    +            // We found `proposer` by getting the proposer ID of a leaf, so there must be at least
    +            // one proposal from this proposer.
    +            assert!(!proposals.is_empty());
    +            // If we select with a limit, we should get the most recent `limit` proposals in
    +            // chronological order.
    +            let suffix = ds
    +                .get_proposals(&proposer, Some(proposals.len() / 2))
    +                .await
    +                .unwrap();
    +            assert_eq!(suffix.len(), proposals.len() / 2);
    +            assert!(proposals.ends_with(&suffix));
    +
    +            // Check that the proposer ID of every leaf indexed by `proposer` is `proposer`, and
    +            // that the list of proposals is in chronological order.
    +            let mut prev_height = None;
    +            for leaf in proposals {
    +                assert_eq!(proposer, leaf.proposer());
    +                if let Some(prev_height) = prev_height {
    +                    assert!(prev_height < leaf.height());
    +                }
    +                prev_height = Some(leaf.height());
    +            }
    +        }
    +    }
    +
    +    #[async_std::test]
    +    pub async fn test_proposer_queries<D: TestableDataSource>() {
    +        setup_test();
    +
    +        let mut network = MockNetwork::<D>::init().await;
    +        let ds = network.data_source();
    +
    +        network.start().await;
    +
    +        // Wait for a few blocks to be produced, then validate the chain. We will wait for more
    +        // blocks than there are nodes in the network, so we have some blocks with the same proposer.
    +        let mut leaves = {
    +            ds.read()
    +                .await
    +                .subscribe_leaves(0)
    +                .await
    +                .take(2 * network.num_nodes())
    +        };
    +        while let Some(leaf) = leaves.next().await {
    +            tracing::info!("got leaf {}", leaf.height());
    +        }
    +        {
    +            validate(&*ds.read().await).await;
    +        }
    +
    +        // Check that all the updates have been committed to storage, not simply held in memory: a
    +        // new data source created from the same underlying storage should have valid proposer
    +        // indexes.
    +        tracing::info!("checking persisted storage");
    +
    +        // Lock the original data source to prevent concurrent updates.
    +        let _ = ds.read().await;
    +        let storage = D::connect(network.storage()).await;
    +        validate(&storage).await;
    +    }
    +}
    +
     /// Generic tests we can instantiate for all the status data sources.
     #[cfg(any(test, feature = "testing"))]
     #[espresso_macros::generic_tests]
    @@ -1035,8 +1353,8 @@
         use crate::{
             status::{MempoolQueryData, StatusDataSource},
             testing::{
    -            consensus::MockNetwork,
    -            mocks::{mock_transaction, DataSourceLifeCycle},
    +            consensus::{DataSourceLifeCycle, MockNetwork},
    +            mocks::mock_transaction,
                 setup_test, sleep,
             },
         };
    @@ -1144,7 +1462,13 @@
     #[macro_export]
     macro_rules! instantiate_data_source_tests {
         ($t:ty) => {
    +        use $crate::data_source::{
    +            availability_tests, node_tests, persistence_tests, status_tests,
    +        };
    +
             instantiate_availability_tests!($t);
    +        instantiate_persistence_tests!($t);
    +        instantiate_node_tests!($t);
             instantiate_status_tests!($t);
         };
     }
    diff --git a/src/hotshot_query_service/data_source/extension.rs.html b/src/hotshot_query_service/data_source/extension.rs.html
    index d59fd699c..64f68d929 100644
    --- a/src/hotshot_query_service/data_source/extension.rs.html
    +++ b/src/hotshot_query_service/data_source/extension.rs.html
    @@ -303,6 +303,8 @@
     303
     304
     305
    +306
    +307
     
    // Copyright (c) 2022 Espresso Systems (espressosys.com)
     // This file is part of the HotShot Query Service library.
     //
    @@ -565,7 +567,10 @@
         use super::*;
         use crate::{
             data_source::UpdateDataSource,
    -        testing::mocks::{DataSourceLifeCycle, MockTypes, TestableDataSource},
    +        testing::{
    +            consensus::{DataSourceLifeCycle, TestableDataSource},
    +            mocks::MockTypes,
    +        },
         };
         use hotshot::types::Event;
     
    @@ -598,7 +603,6 @@
     
     #[cfg(test)]
     mod test {
    -    use super::super::{availability_tests, status_tests};
         use super::ExtensibleDataSource;
         use crate::testing::consensus::MockDataSource;
     
    diff --git a/src/hotshot_query_service/data_source/fetching.rs.html b/src/hotshot_query_service/data_source/fetching.rs.html
    index 3e8dce5fb..1c153b3ff 100644
    --- a/src/hotshot_query_service/data_source/fetching.rs.html
    +++ b/src/hotshot_query_service/data_source/fetching.rs.html
    @@ -1417,6 +1417,269 @@
     1417
     1418
     1419
    +1420
    +1421
    +1422
    +1423
    +1424
    +1425
    +1426
    +1427
    +1428
    +1429
    +1430
    +1431
    +1432
    +1433
    +1434
    +1435
    +1436
    +1437
    +1438
    +1439
    +1440
    +1441
    +1442
    +1443
    +1444
    +1445
    +1446
    +1447
    +1448
    +1449
    +1450
    +1451
    +1452
    +1453
    +1454
    +1455
    +1456
    +1457
    +1458
    +1459
    +1460
    +1461
    +1462
    +1463
    +1464
    +1465
    +1466
    +1467
    +1468
    +1469
    +1470
    +1471
    +1472
    +1473
    +1474
    +1475
    +1476
    +1477
    +1478
    +1479
    +1480
    +1481
    +1482
    +1483
    +1484
    +1485
    +1486
    +1487
    +1488
    +1489
    +1490
    +1491
    +1492
    +1493
    +1494
    +1495
    +1496
    +1497
    +1498
    +1499
    +1500
    +1501
    +1502
    +1503
    +1504
    +1505
    +1506
    +1507
    +1508
    +1509
    +1510
    +1511
    +1512
    +1513
    +1514
    +1515
    +1516
    +1517
    +1518
    +1519
    +1520
    +1521
    +1522
    +1523
    +1524
    +1525
    +1526
    +1527
    +1528
    +1529
    +1530
    +1531
    +1532
    +1533
    +1534
    +1535
    +1536
    +1537
    +1538
    +1539
    +1540
    +1541
    +1542
    +1543
    +1544
    +1545
    +1546
    +1547
    +1548
    +1549
    +1550
    +1551
    +1552
    +1553
    +1554
    +1555
    +1556
    +1557
    +1558
    +1559
    +1560
    +1561
    +1562
    +1563
    +1564
    +1565
    +1566
    +1567
    +1568
    +1569
    +1570
    +1571
    +1572
    +1573
    +1574
    +1575
    +1576
    +1577
    +1578
    +1579
    +1580
    +1581
    +1582
    +1583
    +1584
    +1585
    +1586
    +1587
    +1588
    +1589
    +1590
    +1591
    +1592
    +1593
    +1594
    +1595
    +1596
    +1597
    +1598
    +1599
    +1600
    +1601
    +1602
    +1603
    +1604
    +1605
    +1606
    +1607
    +1608
    +1609
    +1610
    +1611
    +1612
    +1613
    +1614
    +1615
    +1616
    +1617
    +1618
    +1619
    +1620
    +1621
    +1622
    +1623
    +1624
    +1625
    +1626
    +1627
    +1628
    +1629
    +1630
    +1631
    +1632
    +1633
    +1634
    +1635
    +1636
    +1637
    +1638
    +1639
    +1640
    +1641
    +1642
    +1643
    +1644
    +1645
    +1646
    +1647
    +1648
    +1649
    +1650
    +1651
    +1652
    +1653
    +1654
    +1655
    +1656
    +1657
    +1658
    +1659
    +1660
    +1661
    +1662
    +1663
    +1664
    +1665
    +1666
    +1667
    +1668
    +1669
    +1670
    +1671
    +1672
    +1673
    +1674
    +1675
    +1676
    +1677
    +1678
    +1679
    +1680
    +1681
    +1682
     
    // Copyright (c) 2022 Espresso Systems (espressosys.com)
     // This file is part of the HotShot Query Service library.
     //
    @@ -1429,6 +1692,69 @@
     // You should have received a copy of the GNU General Public License along with this program. If not,
     // see <https://www.gnu.org/licenses/>.
     
    +//! Asynchronous retrieval of missing data.
    +//!
    +//! [`FetchingDataSource`] combines a local storage implementation with a remote data availability
    +//! provider to create a data sources which caches data locally, but which is capable of fetching
    +//! missing data from a remote source, either proactively or on demand.
    +//!
    +//! This implementation supports three kinds of data fetching.
    +//!
    +//! # Proactive Fetching
    +//!
    +//! Proactive fetching means actively scanning the local database for missing objects and
    +//! proactively retrieving them from a remote provider, even if those objects have yet to be
    +//! requested by a client. Doing this increases the chance of success and decreases latency when a
    +//! client does eventually ask for those objects. This is also the mechanism by which a query
    +//! service joining a network late, or having been offline for some time, is able to catch up with
    +//! the events on the network that it missed.
    +//!
    +//! The current implementation of proactive fetching is meant to be the simplest effective algorithm
    +//! which still gives us a reasonable range of configuration options for experimentation. It is
    +//! subject to change as we learn about the behavior of proactive fetching in a realistic system.
    +//!
    +//! Proactive fetching is currently implemented by a background task which performs periodic scans
    +//! of the database, identifying and retrieving missing objects. This task is generally low
    +//! priority, since missing objects are rare, and it will take care not to monopolize resources that
    +//! could be used to serve requests. To reduce load and to optimize for the common case where blocks
    +//! are usually not missing once they have already been retrieved, we distinguish between _major_
    +//! and _minor_ scans.
    +//!
    +//! Minor scans are lightweight and can run very frequently. They will only look for missing
    +//! blocks among blocks that are new since the previous scan. Thus, the more frequently minor
    +//! scans run, the less work they have to do. This allows them to run frequently, giving low
    +//! latency for retrieval of newly produced blocks that we failed to receive initially. Between
    +//! each minor scan, the task will sleep for [a configurable
    +//! duration](Builder::with_minor_scan_interval) to wait for new blocks to be produced and give
    +//! other tasks full access to all shared resources.
    +//!
    +//! Every `n`th scan (`n` is [configurable](Builder::with_major_scan_interval)) is a major scan.
    +//! These scan all blocks from 0, which guarantees that we will eventually retrieve all blocks, even
    +//! if for some reason we have lost a block that we previously had (due to storage failures and
    +//! corruptions, or simple bugs in this software). These scans are rather expensive (although they
    +//! will release control of shared resources many times during the duration of the scan), but
    +//! because it is rather unlikely that a major scan will discover any missing blocks that the next
    +//! minor scan would have missed, it is ok if major scans run very infrequently.
    +//!
    +//! # Active Fetching
    +//!
    +//! Active fetching means reaching out to a remote data availability provider to retrieve a missing
    +//! resource, upon receiving a request for that resource from a client. Not every request for a
    +//! missing resource triggers an active fetch. To avoid spamming peers with requests for missing
    +//! data, we only actively fetch resources that are known to exist somewhere. This means we can
    +//! actively fetch leaves and headers when we are requested a leaf or header by height, whose height
    +//! is less than the current chain height. We can fetch a block when the corresponding header exists
    +//! (corresponding based on height, hash, or payload hash) or can be actively fetched.
    +//!
    +//! # Passive Fetching
    +//!
    +//! For requests that cannot be actively fetched (for example, a block requested by hash, where we
    +//! do not have a header proving that a block with that hash exists), we use passive fetching. This
    +//! essentially means waiting passively until the query service receives an object that satisfies
    +//! the request. This object may be received because it was actively fetched in responsive to a
    +//! different request for the same object, one that permitted an active fetch. Or it may have been
    +//! fetched [proactively](#proactive-fetching).
    +
     use super::{notifier::Notifier, storage::AvailabilityStorage, VersionedDataSource};
     use crate::{
         availability::{
    @@ -1444,10 +1770,14 @@
         metrics::PrometheusMetrics,
         node::{NodeDataSource, UpdateNodeData},
         status::StatusDataSource,
    +    task::BackgroundTask,
         Header, NotFoundSnafu, Payload, QueryResult, SignatureKey,
     };
     use anyhow::Context;
    -use async_std::sync::{Arc, RwLock, RwLockReadGuard, RwLockWriteGuard};
    +use async_std::{
    +    sync::{Arc, RwLock, RwLockReadGuard, RwLockWriteGuard},
    +    task::sleep,
    +};
     use async_trait::async_trait;
     use derivative::Derivative;
     use derive_more::{Display, From};
    @@ -1462,17 +1792,123 @@
         fmt::{Debug, Display},
         future::IntoFuture,
         iter::once,
    +    marker::PhantomData,
         ops::{Bound, Deref, DerefMut, Range, RangeBounds},
         time::Duration,
     };
     
    -/// The number of items to process at a time when loading a range or stream.
    -///
    -/// This determines:
    -/// * The number of objects to load from storage in a single request
    -/// * The number of objects to buffer in memory per request/stream
    -/// * The number of concurrent notification subscriptions per request/stream
    -const RANGE_CHUNK_SIZE: usize = 25;
    +/// Builder for [`FetchingDataSource`] with configuration.
    +pub struct Builder<Types, S, P> {
    +    storage: S,
    +    provider: P,
    +    retry_delay: Option<Duration>,
    +    range_chunk_size: usize,
    +    minor_scan_interval: Duration,
    +    major_scan_interval: usize,
    +    proactive_range_chunk_size: Option<usize>,
    +    proactive_fetching: bool,
    +    _types: PhantomData<Types>,
    +}
    +
    +impl<Types, S, P> Builder<Types, S, P> {
    +    /// Construct a new builder with the given storage and fetcher and the default options.
    +    pub fn new(storage: S, provider: P) -> Self {
    +        Self {
    +            storage,
    +            provider,
    +            retry_delay: None,
    +            range_chunk_size: 25,
    +            // By default, we run minor proactive scans fairly frequently: once every minute. These
    +            // scans are cheap (moreso the more frequently they run) and can help us keep up with
    +            // the head of the chain even if our attached consensus instance is behind.
    +            minor_scan_interval: Duration::from_secs(60),
    +            // Major scans, on the other hand, are rather expensive and not especially important for
    +            // usability. We run them rarely, once every 60 minor scans, or once every hour by
    +            // default.
    +            major_scan_interval: 60,
    +            proactive_range_chunk_size: None,
    +            proactive_fetching: true,
    +            _types: Default::default(),
    +        }
    +    }
    +
    +    /// Set the maximum delay between retries of fetches.
    +    pub fn with_retry_delay(mut self, retry_delay: Duration) -> Self {
    +        self.retry_delay = Some(retry_delay);
    +        self
    +    }
    +
    +    /// Set the number of items to process at a time when loading a range or stream.
    +    ///
    +    /// This determines:
    +    /// * The number of objects to load from storage in a single request
    +    /// * The number of objects to buffer in memory per request/stream
    +    /// * The number of concurrent notification subscriptions per request/stream
    +    pub fn with_range_chunk_size(mut self, range_chunk_size: usize) -> Self {
    +        self.range_chunk_size = range_chunk_size;
    +        self
    +    }
    +
    +    /// Set the time interval between minor proactive fetching scans.
    +    ///
    +    /// See [proactive fetching](self#proactive-fetching).
    +    pub fn with_minor_scan_interval(mut self, interval: Duration) -> Self {
    +        self.minor_scan_interval = interval;
    +        self
    +    }
    +
    +    /// Set the interval (denominated in [minor scans](Self::with_minor_scan_interval)) between
    +    /// major proactive fetching scans.
    +    ///
    +    /// See [proactive fetching](self#proactive-fetching).
    +    pub fn with_major_scan_interval(mut self, interval: usize) -> Self {
    +        self.major_scan_interval = interval;
    +        self
    +    }
    +
    +    /// Set the number of items to process at a time when scanning for proactive fetching.
    +    ///
    +    /// This is similar to [`Self::with_range_chunk_size`], but only affects the chunk size for
    +    /// proactive fetching scans, not for normal subscription streams. This can be useful to tune
    +    /// the proactive scanner to be more or less greedy with the lock on persistent storage.
    +    ///
    +    /// By default (i.e. if this method is not called) the proactive range chunk size will be set to
    +    /// whatever the normal range chunk size is.
    +    pub fn with_proactive_range_chunk_size(mut self, range_chunk_size: usize) -> Self {
    +        self.proactive_range_chunk_size = Some(range_chunk_size);
    +        self
    +    }
    +
    +    /// Run without [proactive fetching](self#proactive-fetching).
    +    ///
    +    /// This can reduce load on the CPU and the database, but increases the probability that
    +    /// requests will fail due to missing resources. If resources are constrained, it is recommended
    +    /// to run with rare proactive fetching (see
    +    /// [`with_major_scan_interval`](Self::with_major_scan_interval),
    +    /// [`with_minor_scan_interval`](Self::with_minor_scan_interval)), rather than disabling it
    +    /// entirely.
    +    pub fn disable_proactive_fetching(mut self) -> Self {
    +        self.proactive_fetching = false;
    +        self
    +    }
    +}
    +
    +impl<Types, S, P> Builder<Types, S, P>
    +where
    +    Types: NodeType,
    +    Payload<Types>: QueryablePayload,
    +    S: NodeDataSource<Types>
    +        + UpdateNodeData<Types>
    +        + AvailabilityStorage<Types>
    +        + VersionedDataSource
    +        + 'static,
    +    P: AvailabilityProvider<Types>,
    +{
    +    /// Build a [`FetchingDataSource`] with these options.
    +    pub async fn build(self) -> anyhow::Result<FetchingDataSource<Types, S, P>> {
    +        FetchingDataSource::new(self).await
    +    }
    +}
     
     /// The most basic kind of data source.
     ///
    @@ -1503,6 +1939,8 @@
         fetcher: Arc<Fetcher<Types, S, P>>,
         // The rest of the data we need for implementing data source traits but not for fetching.
         metrics: PrometheusMetrics,
    +    // The proactive scanner task. This is only saved here so that we can cancel it on drop.
    +    scanner: Option<BackgroundTask>,
     }
     
     impl<Types, S, P> FetchingDataSource<Types, S, P>
    @@ -1512,21 +1950,40 @@
         S: NodeDataSource<Types>
             + UpdateNodeData<Types>
             + AvailabilityStorage<Types>
    -        + VersionedDataSource,
    -    P: Send + Sync,
    +        + VersionedDataSource
    +        + 'static,
    +    P: AvailabilityProvider<Types>,
     {
    -    /// Create a data source with local storage and a remote data availability provider.
    -    pub async fn new(storage: S, provider: P) -> anyhow::Result<Self> {
    -        Self::with_retry_delay(storage, provider, None).await
    -    }
    +    /// Build a [`FetchingDataSource`] with the given `storage` and `provider`.
    +    pub fn builder(storage: S, provider: P) -> Builder<Types, S, P> {
    +        Builder::new(storage, provider)
    +    }
    +
    +    async fn new(builder: Builder<Types, S, P>) -> anyhow::Result<Self> {
    +        let proactive_fetching = builder.proactive_fetching;
    +        let minor_interval = builder.minor_scan_interval;
    +        let major_interval = builder.major_scan_interval;
    +        let proactive_range_chunk_size = builder
    +            .proactive_range_chunk_size
    +            .unwrap_or(builder.range_chunk_size);
    +
    +        let fetcher = Arc::new(Fetcher::new(builder).await?);
    +        let scanner = if proactive_fetching {
    +            Some(BackgroundTask::spawn(
    +                "proactive scanner",
    +                fetcher.clone().proactive_scan(
    +                    minor_interval,
    +                    major_interval,
    +                    proactive_range_chunk_size,
    +                ),
    +            ))
    +        } else {
    +            None
    +        };
     
    -    pub async fn with_retry_delay(
    -        storage: S,
    -        provider: P,
    -        delay: Option<Duration>,
    -    ) -> anyhow::Result<Self> {
             let mut ds = Self {
    -            fetcher: Arc::new(Fetcher::new(storage, provider, delay).await),
    +            fetcher,
    +            scanner,
                 metrics: Default::default(),
             };
     
    @@ -1618,7 +2075,7 @@
         P: Send + Sync,
     {
         async fn block_height(&self) -> QueryResult<usize> {
    -        NodeDataSource::block_height(&*self.storage().await).await
    +        NodeDataSource::block_height(self).await
         }
     
         fn metrics(&self) -> &PrometheusMetrics {
    @@ -1721,8 +2178,8 @@
         P: Send + Sync,
     {
         async fn block_height(&self) -> QueryResult<usize> {
    -        self.storage().await.block_height().await
    -    }
    +        Ok(self.fetcher.storage.read().await.height as usize)
    +    }
     
         async fn get_proposals(
             &self,
    @@ -1767,11 +2224,11 @@
         type Error = S::Error;
     
         async fn commit(&mut self) -> Result<(), Self::Error> {
    -        self.storage_mut().await.commit().await
    +        self.fetcher.storage.write().await.commit().await
         }
     
         async fn revert(&mut self) {
    -        self.storage_mut().await.revert().await
    +        self.fetcher.storage.write().await.revert().await
         }
     }
     
    @@ -1785,6 +2242,7 @@
         provider: Arc<P>,
         payload_fetcher: Arc<fetching::Fetcher<request::PayloadRequest, PayloadCallback<Types, S, P>>>,
         leaf_fetcher: Arc<fetching::Fetcher<request::LeafRequest, LeafCallback<Types, S, P>>>,
    +    range_chunk_size: usize,
     }
     
     #[derive(Debug)]
    @@ -1794,6 +2252,8 @@
     {
         storage: S,
         height: u64,
    +    // The block height at the last commit, which we will roll back to on `revert`.
    +    committed_height: u64,
         block_notifier: Notifier<BlockQueryData<Types>>,
         leaf_notifier: Notifier<LeafQueryData<Types>>,
     }
    @@ -1826,8 +2286,15 @@
         S: VersionedDataSource,
     {
         async fn commit(&mut self) -> Result<(), S::Error> {
    -        self.storage.commit().await
    -    }
    +        self.storage.commit().await?;
    +        self.committed_height = self.height;
    +        Ok(())
    +    }
    +
    +    async fn revert(&mut self) {
    +        self.storage.revert().await;
    +        self.height = self.committed_height;
    +    }
     }
     
     impl<Types, S, P> Fetcher<Types, S, P>
    @@ -1835,32 +2302,28 @@
         Types: NodeType,
         S: NodeDataSource<Types>,
     {
    -    async fn new(storage: S, provider: P, retry_delay: Option<Duration>) -> Self {
    -        // Get the height from storage if possible. If not, it's fine: we'll update this as soon as
    -        // we see a new block or leaf anyways.
    -        let height = storage.block_height().await.unwrap_or_else(|err| {
    -            tracing::error!("unable to load block height, defaulting to 0: {err}");
    -            0
    -        }) as u64;
    -
    +    async fn new(builder: Builder<Types, S, P>) -> anyhow::Result<Self> {
             let mut payload_fetcher = fetching::Fetcher::default();
             let mut leaf_fetcher = fetching::Fetcher::default();
    -        if let Some(delay) = retry_delay {
    +        if let Some(delay) = builder.retry_delay {
                 payload_fetcher = payload_fetcher.with_retry_delay(delay);
                 leaf_fetcher = leaf_fetcher.with_retry_delay(delay);
             }
     
    -        Self {
    +        let height = builder.storage.block_height().await? as u64;
    +        Ok(Self {
                 storage: RwLock::new(NotifyStorage {
    -                storage,
                     height,
    +                committed_height: height,
    +                storage: builder.storage,
                     block_notifier: Notifier::new(),
                     leaf_notifier: Notifier::new(),
                 }),
    -            provider: Arc::new(provider),
    +            provider: Arc::new(builder.provider),
                 payload_fetcher: Arc::new(payload_fetcher),
                 leaf_fetcher: Arc::new(leaf_fetcher),
    -        }
    +            range_chunk_size: builder.range_chunk_size,
    +        })
         }
     }
     
    @@ -1902,7 +2365,21 @@
             R: RangeBounds<usize> + Send + 'static,
             T: RangedFetchable<Types>,
         {
    -        stream::iter(range_chunks(range))
    +        let chunk_size = self.range_chunk_size;
    +        self.get_range_with_chunk_size(chunk_size, range)
    +    }
    +
    +    /// Same as [`Self::get_range`], but uses the given chunk size instead of the default.
    +    fn get_range_with_chunk_size<R, T>(
    +        self: Arc<Self>,
    +        chunk_size: usize,
    +        range: R,
    +    ) -> BoxStream<'static, Fetch<T>>
    +    where
    +        R: RangeBounds<usize> + Send + 'static,
    +        T: RangedFetchable<Types>,
    +    {
    +        stream::iter(range_chunks(range, chunk_size))
                 .then(move |chunk| self.clone().get_chunk(chunk))
                 .flatten()
                 .boxed()
    @@ -2053,10 +2530,59 @@
             // Wait for the object to arrive.
             Fetch::Pending(fut.boxed())
         }
    +
    +    /// Proactively search for and retrieve missing objects.
    +    ///
    +    /// This function will proactively identify and retrieve blocks and leaves which are missing
    +    /// from storage. It will run until cancelled, thus, it is meant to be spawned as a background
    +    /// task rather than called synchronously.
    +    async fn proactive_scan(
    +        self: Arc<Self>,
    +        minor_interval: Duration,
    +        major_interval: usize,
    +        chunk_size: usize,
    +    ) {
    +        let mut prev_height = 0;
    +
    +        for i in 0.. {
    +            // Get the block height; we will look for any missing blocks up to `block_height`.
    +            let block_height = { self.storage.read().await.height } as usize;
    +
    +            // In a major scan, we fetch all blocks between 0 and `block_height`. In minor scans
    +            // (much more frequent) we fetch blocks that are missing since the last scan.
    +            let start = if i % major_interval == 0 {
    +                0
    +            } else {
    +                prev_height
    +            };
    +            tracing::info!("starting proactive scan {i} of blocks from {start}-{block_height}");
    +            prev_height = block_height;
    +
    +            // Iterate over all blocks that we should have. Merely iterating over the `Fetch`es
    +            // without awaiting them is enough to trigger active fetches of missing blocks, since
    +            // we always trigger an active fetch when fetching by block number. Moreover, fetching
    +            // the block is enough to trigger an active fetch of the corresponding leaf if it too is
    +            // missing, so this one loop takes care of all resources that might be missing.
    +            //
    +            // The chunking behavior of `get_range` automatically ensures that, no matter how big
    +            // the range is, we will release the read lock on storage every `chunk_size` items, so
    +            // we don't starve out would-be writers.
    +            let mut blocks = self
    +                .clone()
    +                .get_range_with_chunk_size::<_, BlockQueryData<Types>>(
    +                    chunk_size,
    +                    start..block_height,
    +                );
    +            while blocks.next().await.is_some() {}
    +
    +            tracing::info!("completed proactive scan {i} of blocks from {start}-{block_height}, will scan again in {minor_interval:?}");
    +            sleep(minor_interval).await;
    +        }
    +    }
     }
     
     /// A provider which can be used as a fetcher by the availability service.
    -trait AvailabilityProvider<Types: NodeType>:
    +pub trait AvailabilityProvider<Types: NodeType>:
         Provider<Types, request::LeafRequest> + Provider<Types, request::PayloadRequest> + Sync + 'static
     {
     }
    @@ -2379,7 +2905,7 @@
                     //    members.
                     if let Some(header) = load_header(&**storage, id)
                         .await
    -                    .context("loading header for block {id}")
    +                    .context(format!("loading header for block {id}"))
                         .ok_or_trace()
                     {
                         fetch_block_with_header(fetcher, header);
    @@ -2787,7 +3313,7 @@
     }
     
     /// Break a range into fixed-size chunks.
    -fn range_chunks<R>(range: R) -> impl Iterator<Item = Range<usize>>
    +fn range_chunks<R>(range: R, chunk_size: usize) -> impl Iterator<Item = Range<usize>>
     where
         R: RangeBounds<usize>,
     {
    @@ -2803,7 +3329,7 @@
             Bound::Unbounded => usize::MAX,
         };
         std::iter::from_fn(move || {
    -        let chunk_end = min(start + RANGE_CHUNK_SIZE, end);
    +        let chunk_end = min(start + chunk_size, end);
             if chunk_end == start {
                 return None;
             }
    diff --git a/src/hotshot_query_service/data_source/fs.rs.html b/src/hotshot_query_service/data_source/fs.rs.html
    index 6301071c2..a5425ff6a 100644
    --- a/src/hotshot_query_service/data_source/fs.rs.html
    +++ b/src/hotshot_query_service/data_source/fs.rs.html
    @@ -268,6 +268,12 @@
     268
     269
     270
    +271
    +272
    +273
    +274
    +275
    +276
     
    // Copyright (c) 2022 Espresso Systems (espressosys.com)
     // This file is part of the HotShot Query Service library.
     //
    @@ -282,7 +288,7 @@
     
     #![cfg(feature = "file-system-data-source")]
     
    -use super::{storage::FileSystemStorage, FetchingDataSource};
    +use super::{storage::FileSystemStorage, AvailabilityProvider, FetchingDataSource};
     use crate::{availability::query_data::QueryablePayload, Payload};
     use atomic_store::AtomicStoreLoader;
     use hotshot_types::traits::node_implementation::NodeType;
    @@ -416,7 +422,7 @@
     impl<Types: NodeType, P> FileSystemDataSource<Types, P>
     where
         Payload<Types>: QueryablePayload,
    -    P: Send + Sync,
    +    P: AvailabilityProvider<Types>,
     {
         /// Create a new [FileSystemDataSource] with storage at `path`.
         ///
    @@ -424,7 +430,9 @@
         ///
         /// The [FileSystemDataSource] will manage its own persistence synchronization.
         pub async fn create(path: &Path, provider: P) -> anyhow::Result<Self> {
    -        FetchingDataSource::new(FileSystemStorage::create(path).await?, provider).await
    +        FetchingDataSource::builder(FileSystemStorage::create(path).await?, provider)
    +            .build()
    +            .await
         }
     
         /// Open an existing [FileSystemDataSource] from storage at `path`.
    @@ -433,7 +441,9 @@
         ///
         /// The [FileSystemDataSource] will manage its own persistence synchronization.
         pub async fn open(path: &Path, provider: P) -> anyhow::Result<Self> {
    -        FetchingDataSource::new(FileSystemStorage::open(path).await?, provider).await
    +        FetchingDataSource::builder(FileSystemStorage::open(path).await?, provider)
    +            .build()
    +            .await
         }
     
         /// Create a new [FileSystemDataSource] using a persistent storage loader.
    @@ -448,10 +458,11 @@
             loader: &mut AtomicStoreLoader,
             provider: P,
         ) -> anyhow::Result<Self> {
    -        FetchingDataSource::new(
    +        FetchingDataSource::builder(
                 FileSystemStorage::create_with_store(loader).await?,
                 provider,
             )
    +        .build()
             .await
         }
     
    @@ -467,7 +478,9 @@
             loader: &mut AtomicStoreLoader,
             provider: P,
         ) -> anyhow::Result<Self> {
    -        FetchingDataSource::new(FileSystemStorage::open_with_store(loader).await?, provider).await
    +        FetchingDataSource::builder(FileSystemStorage::open_with_store(loader).await?, provider)
    +            .build()
    +            .await
         }
     
         /// Advance the version of the persistent store without committing changes to persistent state.
    @@ -491,14 +504,14 @@
         use super::*;
         use crate::{
             data_source::{UpdateDataSource, VersionedDataSource},
    -        testing::mocks::{DataSourceLifeCycle, MockTypes},
    +        testing::{consensus::DataSourceLifeCycle, mocks::MockTypes},
         };
         use async_trait::async_trait;
         use hotshot::types::Event;
         use tempdir::TempDir;
     
         #[async_trait]
    -    impl<P: Default + Send + Sync + 'static> DataSourceLifeCycle
    +    impl<P: AvailabilityProvider<MockTypes> + Default> DataSourceLifeCycle
             for FileSystemDataSource<MockTypes, P>
         {
             type Storage = TempDir;
    @@ -528,7 +541,6 @@
     
     #[cfg(test)]
     mod test {
    -    use super::super::{availability_tests, status_tests};
         use super::FileSystemDataSource;
         use crate::{fetching::provider::NoFetching, testing::mocks::MockTypes};
     
    diff --git a/src/hotshot_query_service/data_source/metrics.rs.html b/src/hotshot_query_service/data_source/metrics.rs.html
    index f35232499..8a7ed47a2 100644
    --- a/src/hotshot_query_service/data_source/metrics.rs.html
    +++ b/src/hotshot_query_service/data_source/metrics.rs.html
    @@ -212,7 +212,7 @@
     #[cfg(any(test, feature = "testing"))]
     mod impl_testable_data_source {
         use super::*;
    -    use crate::testing::mocks::{DataSourceLifeCycle, MockTypes};
    +    use crate::testing::{consensus::DataSourceLifeCycle, mocks::MockTypes};
         use hotshot::types::Event;
     
         #[async_trait]
    diff --git a/src/hotshot_query_service/data_source/sql.rs.html b/src/hotshot_query_service/data_source/sql.rs.html
    index 414128ece..73071837e 100644
    --- a/src/hotshot_query_service/data_source/sql.rs.html
    +++ b/src/hotshot_query_service/data_source/sql.rs.html
    @@ -383,6 +383,28 @@
     383
     384
     385
    +386
    +387
    +388
    +389
    +390
    +391
    +392
    +393
    +394
    +395
    +396
    +397
    +398
    +399
    +400
    +401
    +402
    +403
    +404
    +405
    +406
    +407
     
    // Copyright (c) 2022 Espresso Systems (espressosys.com)
     // This file is part of the HotShot Query Service library.
     //
    @@ -398,8 +420,9 @@
     #![cfg(feature = "sql-data-source")]
     
     use super::{
    +    fetching,
         storage::sql::{self, SqlStorage},
    -    FetchingDataSource,
    +    AvailabilityProvider, FetchingDataSource,
     };
     use crate::{availability::QueryablePayload, Payload, QueryResult};
     use async_std::sync::Arc;
    @@ -415,12 +438,27 @@
     
     pub use sql::{Config, Query, Transaction};
     
    +pub type Builder<Types, Provider> = fetching::Builder<Types, SqlStorage, Provider>;
    +
     impl Config {
         /// Connect to the database with this config.
    -    pub async fn connect<Types, P: Send + Sync>(
    +    pub async fn connect<Types, P: AvailabilityProvider<Types>>(
             self,
             provider: P,
         ) -> Result<SqlDataSource<Types, P>, Error>
    +    where
    +        Types: NodeType,
    +        Payload<Types>: QueryablePayload,
    +    {
    +        self.builder(provider).await?.build().await
    +    }
    +
    +    /// Connect to the database, setting options on the underlying [`FetchingDataSource`] using the
    +    /// [`fetching::Builder`] interface.
    +    pub async fn builder<Types, P: AvailabilityProvider<Types>>(
    +        self,
    +        provider: P,
    +    ) -> Result<Builder<Types, P>, Error>
         where
             Types: NodeType,
             Payload<Types>: QueryablePayload,
    @@ -672,15 +710,20 @@
     /// ```
     pub type SqlDataSource<Types, P> = FetchingDataSource<Types, SqlStorage, P>;
     
    -impl<Types, P: Send + Sync> SqlDataSource<Types, P>
    +impl<Types, P: AvailabilityProvider<Types>> SqlDataSource<Types, P>
     where
         Types: NodeType,
         Payload<Types>: QueryablePayload,
     {
         /// Connect to a remote database.
    -    pub async fn connect(config: Config, provider: P) -> Result<Self, Error> {
    -        Self::new(SqlStorage::connect(config).await?, provider).await
    -    }
    +    ///
    +    /// This function returns a [`fetching::Builder`] which can be used to set options on the
    +    /// underlying [`FetchingDataSource`], before constructing the [`SqlDataSource`] with
    +    /// [`build`](fetching::Builder::build). For a convenient constructor that uses the default
    +    /// fetching options, see [`Config::connect`].
    +    pub async fn connect(config: Config, provider: P) -> Result<Builder<Types, P>, Error> {
    +        Ok(Self::builder(SqlStorage::connect(config).await?, provider))
    +    }
     }
     
     impl<Types, P> SqlDataSource<Types, P>
    @@ -721,14 +764,16 @@
         use super::*;
         use crate::{
             data_source::{UpdateDataSource, VersionedDataSource},
    -        testing::mocks::{DataSourceLifeCycle, MockTypes},
    +        testing::{consensus::DataSourceLifeCycle, mocks::MockTypes},
         };
         use hotshot::types::Event;
     
         pub use sql::testing::TmpDb;
     
         #[async_trait]
    -    impl<P: Default + Send + Sync + 'static> DataSourceLifeCycle for SqlDataSource<MockTypes, P> {
    +    impl<P: AvailabilityProvider<MockTypes> + Default> DataSourceLifeCycle
    +        for SqlDataSource<MockTypes, P>
    +    {
             type Storage = TmpDb;
     
             async fn create(_node_id: usize) -> Self::Storage {
    @@ -758,7 +803,6 @@
     // These tests run the `postgres` Docker image, which doesn't work on Windows.
     #[cfg(all(test, not(target_os = "windows")))]
     mod generic_test {
    -    use super::super::{availability_tests, status_tests};
         use super::SqlDataSource;
         use crate::{fetching::provider::NoFetching, testing::mocks::MockTypes};
     
    diff --git a/src/hotshot_query_service/data_source/storage.rs.html b/src/hotshot_query_service/data_source/storage.rs.html
    index 63668a83c..746cd350f 100644
    --- a/src/hotshot_query_service/data_source/storage.rs.html
    +++ b/src/hotshot_query_service/data_source/storage.rs.html
    @@ -94,6 +94,10 @@
     94
     95
     96
    +97
    +98
    +99
    +100
     
    // Copyright (c) 2022 Espresso Systems (espressosys.com)
     // This file is part of the HotShot Query Service library.
     //
    @@ -117,6 +121,7 @@
     //! This module also comes with a few pre-built persistence implementations:
     //! * [`SqlStorage`]
     //! * [`FileSystemStorage`]
    +//! * [`NoStorage`]
     //!
     
     use crate::{
    @@ -133,10 +138,13 @@
     
     pub mod fs;
     mod ledger_log;
    +pub mod no_storage;
     pub mod sql;
     
     #[cfg(feature = "file-system-data-source")]
     pub use fs::FileSystemStorage;
    +#[cfg(feature = "no-storage")]
    +pub use no_storage::NoStorage;
     #[cfg(feature = "sql-data-source")]
     pub use sql::SqlStorage;
     
    diff --git a/src/hotshot_query_service/fetching/provider/query_service.rs.html b/src/hotshot_query_service/fetching/provider/query_service.rs.html
    index eed3ceb46..ea1381468 100644
    --- a/src/hotshot_query_service/fetching/provider/query_service.rs.html
    +++ b/src/hotshot_query_service/fetching/provider/query_service.rs.html
    @@ -598,6 +598,29 @@
     598
     599
     600
    +601
    +602
    +603
    +604
    +605
    +606
    +607
    +608
    +609
    +610
    +611
    +612
    +613
    +614
    +615
    +616
    +617
    +618
    +619
    +620
    +621
    +622
    +623
     
    // Copyright (c) 2022 Espresso Systems (espressosys.com)
     // This file is part of the HotShot Query Service library.
     //
    @@ -697,13 +720,14 @@
         use crate::{
             availability::{define_api, AvailabilityDataSource, UpdateAvailabilityData},
             data_source::{
    -            storage::sql::{testing::TmpDb, SqlStorage},
    -            FetchingDataSource, VersionedDataSource,
    +            sql::{self, SqlDataSource},
    +            storage::sql::testing::TmpDb,
    +            AvailabilityProvider, VersionedDataSource,
             },
             fetching::provider::{NoFetching, TestProvider},
             testing::{
                 consensus::{MockDataSource, MockNetwork},
    -            mocks::mock_transaction,
    +            mocks::{mock_transaction, MockTypes},
                 setup_test, sleep,
             },
         };
    @@ -718,6 +742,28 @@
     
         fn ignore<T>(_: T) {}
     
    +    /// Build a data source suitable for this suite of tests.
    +    async fn builder<P: AvailabilityProvider<MockTypes> + Clone>(
    +        db: &TmpDb,
    +        provider: &P,
    +    ) -> sql::Builder<MockTypes, P> {
    +        db.config()
    +            .builder((*provider).clone())
    +            .await
    +            .unwrap()
    +            // We disable proactive fetching for these tests, since we are intending to test on
    +            // demand fetching, and proactive fetching could lead to false successes.
    +            .disable_proactive_fetching()
    +    }
    +
    +    /// A data source suitable for this suite of tests, with the default options.
    +    async fn data_source<P: AvailabilityProvider<MockTypes> + Clone>(
    +        db: &TmpDb,
    +        provider: &P,
    +    ) -> SqlDataSource<MockTypes, P> {
    +        builder(db, provider).await.build().await.unwrap()
    +    }
    +
         #[async_std::test]
         async fn test_fetch_on_request() {
             setup_test();
    @@ -737,7 +783,7 @@
             let provider = Provider::new(QueryServiceProvider::new(
                 format!("http://localhost:{port}").parse().unwrap(),
             ));
    -        let mut data_source = db.config().connect(provider.clone()).await.unwrap();
    +        let mut data_source = data_source(&db, &provider).await;
     
             // Start consensus.
             network.start().await;
    @@ -926,7 +972,7 @@
             let provider = Provider::new(QueryServiceProvider::new(
                 format!("http://localhost:{port}").parse().unwrap(),
             ));
    -        let mut data_source = db.config().connect(provider.clone()).await.unwrap();
    +        let mut data_source = data_source(&db, &provider).await;
     
             // Start consensus.
             network.start().await;
    @@ -978,7 +1024,7 @@
             let provider = Provider::new(QueryServiceProvider::new(
                 format!("http://localhost:{port}").parse().unwrap(),
             ));
    -        let mut data_source = db.config().connect(provider.clone()).await.unwrap();
    +        let mut data_source = data_source(&db, &provider).await;
     
             // Start consensus.
             network.start().await;
    @@ -1034,7 +1080,7 @@
             let provider = Provider::new(QueryServiceProvider::new(
                 format!("http://localhost:{port}").parse().unwrap(),
             ));
    -        let mut data_source = db.config().connect(provider.clone()).await.unwrap();
    +        let mut data_source = data_source(&db, &provider).await;
     
             // Start consensus.
             network.start().await;
    @@ -1079,9 +1125,10 @@
                 .unwrap();
             spawn(app.serve(format!("0.0.0.0:{port}")));
     
    -        // Start a data source which is not receiving events from consensus.
    +        // Start a data source which is not receiving events from consensus. We don't give it a
    +        // fetcher since transactions are always fetched passively anyways.
             let db = TmpDb::init().await;
    -        let mut data_source = db.config().connect(NoFetching).await.unwrap();
    +        let mut data_source = data_source(&db, &NoFetching).await;
     
             // Subscribe to blocks.
             let mut leaves = { network.data_source().read().await.subscribe_leaves(1).await };
    @@ -1151,13 +1198,12 @@
             let provider = Provider::new(QueryServiceProvider::new(
                 format!("http://localhost:{port}").parse().unwrap(),
             ));
    -        let mut data_source = FetchingDataSource::with_retry_delay(
    -            SqlStorage::connect(db.config()).await.unwrap(),
    -            provider.clone(),
    -            Some(Duration::from_secs(1)),
    -        )
    -        .await
    -        .unwrap();
    +        let mut data_source = builder(&db, &provider)
    +            .await
    +            .with_retry_delay(Duration::from_secs(1))
    +            .build()
    +            .await
    +            .unwrap();
     
             // Start consensus.
             network.start().await;
    diff --git a/src/hotshot_query_service/lib.rs.html b/src/hotshot_query_service/lib.rs.html
    index 4374d1727..b877abed9 100644
    --- a/src/hotshot_query_service/lib.rs.html
    +++ b/src/hotshot_query_service/lib.rs.html
    @@ -733,6 +733,7 @@
     733
     734
     735
    +736
     
    // Copyright (c) 2022 Espresso Systems (espressosys.com)
     // This file is part of the HotShot Query Service library.
     //
    @@ -1118,6 +1119,7 @@
     pub mod node;
     mod resolvable;
     pub mod status;
    +mod task;
     pub mod testing;
     
     pub use error::Error;
    diff --git a/src/hotshot_query_service/task.rs.html b/src/hotshot_query_service/task.rs.html
    new file mode 100644
    index 000000000..0976196c5
    --- /dev/null
    +++ b/src/hotshot_query_service/task.rs.html
    @@ -0,0 +1,155 @@
    +task.rs - source
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +
    // Copyright (c) 2022 Espresso Systems (espressosys.com)
    +// This file is part of the HotShot Query Service library.
    +//
    +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU
    +// General Public License as published by the Free Software Foundation, either version 3 of the
    +// License, or (at your option) any later version.
    +// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
    +// even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    +// General Public License for more details.
    +// You should have received a copy of the GNU General Public License along with this program. If not,
    +// see <https://www.gnu.org/licenses/>.
    +
    +//! Async task utilites.
    +
    +use async_std::{
    +    sync::Arc,
    +    task::{spawn, JoinHandle},
    +};
    +use futures::future::Future;
    +use std::fmt::Display;
    +
    +#[derive(Debug)]
    +struct BackgroundTaskInner {
    +    name: String,
    +    handle: JoinHandle<()>,
    +}
    +
    +/// A background task which is cancelled on [`Drop`]
    +///
    +/// This handle can be cloned; cloning it does not clone the underlying task. There may be many
    +/// handles to the same background task, and the task will be cancelled when all handles are
    +/// dropped.
    +#[derive(Clone, Debug)]
    +pub struct BackgroundTask {
    +    // The task handle is an `Option` so we can `take()` out of it during `drop`, where we have a
    +    // mutable reference but need to move out of the underlying task handle to cancel it. This will
    +    // always be `Some` except during cancellation.
    +    inner: Option<Arc<BackgroundTaskInner>>,
    +}
    +
    +impl BackgroundTask {
    +    /// Spawn a background task, which will be cancelled when every clone is dropped.
    +    pub fn spawn<F>(name: impl Display, future: F) -> Self
    +    where
    +        F: Future + Send + 'static,
    +    {
    +        let name = name.to_string();
    +        let handle = {
    +            let name = name.clone();
    +            spawn(async move {
    +                tracing::info!("spawning background task {name}");
    +                future.await;
    +                tracing::info!("background task {name} completed");
    +            })
    +        };
    +
    +        Self {
    +            inner: Some(Arc::new(BackgroundTaskInner { name, handle })),
    +        }
    +    }
    +}
    +
    +impl Drop for BackgroundTask {
    +    fn drop(&mut self) {
    +        // `inner` should never be [`None`] here, we only `take` it because we are given `&mut
    +        // self` (so that this can be called from [`drop`]) and thus we cannot move out of `self`.
    +        // Nevertheless, it doesn't hurt to explicitly check for [`Some`].
    +        if let Some(inner) = self.inner.take() {
    +            // Check if this is the last instance of the [`Arc`] and, if so, cancel the underlying
    +            // task.
    +            if let Some(inner) = Arc::into_inner(inner) {
    +                tracing::info!("cancelling background task {}", inner.name);
    +                async_std::task::block_on(inner.handle.cancel());
    +            }
    +        }
    +    }
    +}
    +
    \ No newline at end of file diff --git a/trait.impl/clap_builder/derive/trait.Args.js b/trait.impl/clap_builder/derive/trait.Args.js index a50e2ab0c..9219c3fa2 100644 --- a/trait.impl/clap_builder/derive/trait.Args.js +++ b/trait.impl/clap_builder/derive/trait.Args.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl Args for Options"],["impl Args for Options"],["impl Args for Options"],["impl Args for Options"]] +"hotshot_query_service":[["impl Args for Options"],["impl Args for Options"],["impl Args for Options"],["impl Args for Options"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/clap_builder/derive/trait.FromArgMatches.js b/trait.impl/clap_builder/derive/trait.FromArgMatches.js index 69c0ccfca..cc60fe5ec 100644 --- a/trait.impl/clap_builder/derive/trait.FromArgMatches.js +++ b/trait.impl/clap_builder/derive/trait.FromArgMatches.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl FromArgMatches for Options"],["impl FromArgMatches for Options"],["impl FromArgMatches for Options"],["impl FromArgMatches for Options"]] +"hotshot_query_service":[["impl FromArgMatches for Options"],["impl FromArgMatches for Options"],["impl FromArgMatches for Options"],["impl FromArgMatches for Options"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/clone/trait.Clone.js b/trait.impl/core/clone/trait.Clone.js index d5a651804..62ff96da8 100644 --- a/trait.impl/core/clone/trait.Clone.js +++ b/trait.impl/core/clone/trait.Clone.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl Clone for LeafRequest"],["impl Clone for Label"],["impl Clone for QueryServiceProvider"],["impl Clone for Histogram"],["impl Clone for Counter"],["impl Clone for PrometheusMetrics"],["impl Clone for QuerySnafu"],["impl<Types: Clone + NodeType> Clone for InconsistentLeafError<Types>"],["impl Clone for RequestSnafu"],["impl<Types: Clone + NodeType> Clone for LeafQueryData<Types>"],["impl<__T0: Clone, __T1: Clone> Clone for CustomSnafu<__T0, __T1>"],["impl<T, C> Clone for Fetcher<T, C>"],["impl<__T0: Clone> Clone for QueryProposalsSnafu<__T0>"],["impl Clone for Config"],["impl<Types: NodeType> Clone for BlockId<Types>"],["impl Clone for Error"],["impl Clone for InvalidSignatureKeySnafu"],["impl Clone for Gauge"],["impl Clone for NoFetching"],["impl Clone for Error"],["impl Clone for MetricsDataSource"],["impl Clone for QueryError"],["impl<Types: NodeType> Clone for LeafId<Types>"],["impl Clone for NotFoundSnafu"],["impl Clone for Error"],["impl<__T0: Clone> Clone for FetchLeafSnafu<__T0>"],["impl<__T0: Clone> Clone for FetchTransactionSnafu<__T0>"],["impl<Types: Clone + NodeType> Clone for PayloadQueryData<Types>"],["impl Clone for PayloadRequest"],["impl Clone for MempoolQueryData"],["impl<__T0: Clone> Clone for Snafu<__T0>"],["impl<Types: Clone + NodeType> Clone for BlockQueryData<Types>"],["impl Clone for Error"],["impl<__T0: Clone> Clone for FetchBlockSnafu<__T0>"],["impl<Types: Clone + NodeType> Clone for TransactionQueryData<Types>where\n Payload<Types>: QueryablePayload,"],["impl<D: Clone, U: Clone> Clone for ExtensibleDataSource<D, U>"],["impl<Types> Clone for AnyProvider<Types>where\n Types: NodeType,"],["impl<__T0: Clone, __T1: Clone> Clone for InvalidTransactionIndexSnafu<__T0, __T1>"],["impl<__T0: Clone, __T1: Clone> Clone for CustomSnafu<__T0, __T1>"],["impl<Types, S, P> Clone for FetchingDataSource<Types, S, P>where\n Types: NodeType,"],["impl Clone for RequestSnafu"],["impl Clone for MissingSnafu"]] +"hotshot_query_service":[["impl<__T0: Clone> Clone for FetchBlockSnafu<__T0>"],["impl Clone for Error"],["impl Clone for PayloadRequest"],["impl Clone for Counter"],["impl<Types> Clone for AnyProvider<Types>where\n Types: NodeType,"],["impl<Types: Clone + NodeType> Clone for InconsistentLeafError<Types>"],["impl<Types: Clone + NodeType> Clone for PayloadQueryData<Types>"],["impl<Types: Clone + NodeType> Clone for BlockQueryData<Types>"],["impl Clone for InvalidSignatureKeySnafu"],["impl<__T0: Clone> Clone for Snafu<__T0>"],["impl Clone for NoFetching"],["impl<Types: Clone + NodeType> Clone for LeafQueryData<Types>"],["impl<D: Clone, U: Clone> Clone for ExtensibleDataSource<D, U>"],["impl<__T0: Clone, __T1: Clone> Clone for CustomSnafu<__T0, __T1>"],["impl Clone for NotFoundSnafu"],["impl Clone for Error"],["impl<Types: NodeType> Clone for LeafId<Types>"],["impl Clone for Config"],["impl<__T0: Clone, __T1: Clone> Clone for InvalidTransactionIndexSnafu<__T0, __T1>"],["impl Clone for MissingSnafu"],["impl<Types: Clone + NodeType> Clone for TransactionQueryData<Types>where\n Payload<Types>: QueryablePayload,"],["impl Clone for Label"],["impl Clone for PrometheusMetrics"],["impl Clone for MempoolQueryData"],["impl Clone for QueryServiceProvider"],["impl Clone for RequestSnafu"],["impl Clone for MetricsDataSource"],["impl<__T0: Clone> Clone for FetchTransactionSnafu<__T0>"],["impl<__T0: Clone> Clone for FetchLeafSnafu<__T0>"],["impl<Types> Clone for BlockRequest<Types>where\n Types: NodeType,"],["impl<Types, S, P> Clone for FetchingDataSource<Types, S, P>where\n Types: NodeType,"],["impl Clone for Error"],["impl Clone for LeafRequest"],["impl<__T0: Clone, __T1: Clone> Clone for CustomSnafu<__T0, __T1>"],["impl<Types: NodeType> Clone for BlockId<Types>"],["impl Clone for Error"],["impl Clone for QuerySnafu"],["impl Clone for QueryError"],["impl Clone for RequestSnafu"],["impl Clone for Gauge"],["impl<T, C> Clone for Fetcher<T, C>"],["impl Clone for Histogram"],["impl<__T0: Clone> Clone for QueryProposalsSnafu<__T0>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/cmp/trait.Eq.js b/trait.impl/core/cmp/trait.Eq.js index f6c57b0ee..881c5d426 100644 --- a/trait.impl/core/cmp/trait.Eq.js +++ b/trait.impl/core/cmp/trait.Eq.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl Eq for PayloadRequest"],["impl<Types: Eq + NodeType> Eq for BlockQueryData<Types>"],["impl Eq for LeafRequest"],["impl Eq for MempoolQueryData"],["impl<Types: Eq + NodeType> Eq for LeafQueryData<Types>"],["impl<Types: Eq + NodeType> Eq for PayloadQueryData<Types>"],["impl<Types: Eq + NodeType> Eq for TransactionQueryData<Types>where\n Payload<Types>: QueryablePayload,"],["impl<Types: NodeType> Eq for LeafId<Types>"],["impl<Types: NodeType> Eq for BlockId<Types>"]] +"hotshot_query_service":[["impl<Types: Eq + NodeType> Eq for TransactionQueryData<Types>where\n Payload<Types>: QueryablePayload,"],["impl<Types> Eq for BlockRequest<Types>where\n Types: NodeType,"],["impl<Types: NodeType> Eq for LeafId<Types>"],["impl Eq for PayloadRequest"],["impl<Types: NodeType> Eq for BlockId<Types>"],["impl<Types: Eq + NodeType> Eq for LeafQueryData<Types>"],["impl Eq for MempoolQueryData"],["impl<Types: Eq + NodeType> Eq for PayloadQueryData<Types>"],["impl<Types: Eq + NodeType> Eq for BlockQueryData<Types>"],["impl Eq for LeafRequest"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/cmp/trait.Ord.js b/trait.impl/core/cmp/trait.Ord.js index ae6499655..194a7855e 100644 --- a/trait.impl/core/cmp/trait.Ord.js +++ b/trait.impl/core/cmp/trait.Ord.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl Ord for MempoolQueryData"],["impl<Types: NodeType> Ord for BlockId<Types>"],["impl<Types: NodeType> Ord for LeafId<Types>"]] +"hotshot_query_service":[["impl<Types> Ord for BlockRequest<Types>where\n Types: NodeType,"],["impl<Types: NodeType> Ord for LeafId<Types>"],["impl Ord for MempoolQueryData"],["impl<Types: NodeType> Ord for BlockId<Types>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/cmp/trait.PartialEq.js b/trait.impl/core/cmp/trait.PartialEq.js index 07cdb16e7..3fffaa9dc 100644 --- a/trait.impl/core/cmp/trait.PartialEq.js +++ b/trait.impl/core/cmp/trait.PartialEq.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl PartialEq for LeafRequest"],["impl<Types: NodeType> PartialEq for BlockId<Types>"],["impl PartialEq for MempoolQueryData"],["impl<Types: PartialEq + NodeType> PartialEq for TransactionQueryData<Types>where\n Payload<Types>: QueryablePayload,"],["impl<Types: PartialEq + NodeType> PartialEq for PayloadQueryData<Types>"],["impl PartialEq for PayloadRequest"],["impl<Types: PartialEq + NodeType> PartialEq for LeafQueryData<Types>"],["impl<Types: PartialEq + NodeType> PartialEq for BlockQueryData<Types>"],["impl<Types: NodeType> PartialEq for LeafId<Types>"]] +"hotshot_query_service":[["impl<Types: NodeType> PartialEq for BlockId<Types>"],["impl<Types: PartialEq + NodeType> PartialEq for PayloadQueryData<Types>"],["impl PartialEq for PayloadRequest"],["impl<Types> PartialEq for BlockRequest<Types>where\n Types: NodeType,"],["impl<Types: PartialEq + NodeType> PartialEq for BlockQueryData<Types>"],["impl<Types: NodeType> PartialEq for LeafId<Types>"],["impl<Types: PartialEq + NodeType> PartialEq for LeafQueryData<Types>"],["impl PartialEq for MempoolQueryData"],["impl PartialEq for LeafRequest"],["impl<Types: PartialEq + NodeType> PartialEq for TransactionQueryData<Types>where\n Payload<Types>: QueryablePayload,"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/cmp/trait.PartialOrd.js b/trait.impl/core/cmp/trait.PartialOrd.js index ca8fcd5c6..061a8d32f 100644 --- a/trait.impl/core/cmp/trait.PartialOrd.js +++ b/trait.impl/core/cmp/trait.PartialOrd.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl PartialOrd for MempoolQueryData"],["impl<Types: NodeType> PartialOrd for LeafId<Types>"],["impl<Types: NodeType> PartialOrd for BlockId<Types>"]] +"hotshot_query_service":[["impl<Types> PartialOrd for BlockRequest<Types>where\n Types: NodeType,"],["impl<Types: NodeType> PartialOrd for LeafId<Types>"],["impl<Types: NodeType> PartialOrd for BlockId<Types>"],["impl PartialOrd for MempoolQueryData"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/convert/trait.From.js b/trait.impl/core/convert/trait.From.js index 4628437ae..0ba753a0d 100644 --- a/trait.impl/core/convert/trait.From.js +++ b/trait.impl/core/convert/trait.From.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl<Types: NodeType> From<usize> for BlockId<Types>"],["impl From<Error> for MetricsError"],["impl From<RequestError> for Error"],["impl<Types: NodeType> From<Commitment<Leaf<Types>>> for LeafId<Types>"],["impl From<RequestError> for Error"],["impl<Types: NodeType> From<Commitment<<Types as NodeType>::BlockHeader>> for BlockId<Types>"],["impl From<usize> for LeafRequest"],["impl<Types: NodeType> From<BlockQueryData<Types>> for PayloadQueryData<Types>"],["impl From<Config> for Config"],["impl From<Error> for Error"],["impl From<String> for Error"],["impl From<LeafRequest> for usize"],["impl From<Error> for Error"],["impl From<(String, StatusCode)> for Error"],["impl From<Error> for Error"],["impl<Types: NodeType> From<usize> for LeafId<Types>"],["impl From<(String, StatusCode)> for Error"],["impl From<RequestError> for Error"],["impl From<(String, StatusCode)> for Error"]] +"hotshot_query_service":[["impl From<Config> for Config"],["impl From<(String, StatusCode)> for Error"],["impl From<LeafRequest> for usize"],["impl<Types> From<Commitment<<<Types as NodeType>::BlockPayload as BlockPayload>::Transaction>> for BlockRequest<Types>where\n Types: NodeType,"],["impl From<Error> for Error"],["impl From<String> for Error"],["impl From<(String, StatusCode)> for Error"],["impl From<Error> for Error"],["impl From<usize> for LeafRequest"],["impl From<Error> for Error"],["impl<Types> From<BlockId<Types>> for BlockRequest<Types>where\n Types: NodeType,"],["impl<Types: NodeType> From<Commitment<Leaf<Types>>> for LeafId<Types>"],["impl From<(String, StatusCode)> for Error"],["impl From<RequestError> for Error"],["impl<Types: NodeType> From<BlockQueryData<Types>> for PayloadQueryData<Types>"],["impl<'a, Types, S> From<RwLockWriteGuard<'a, NotifyStorage<Types, S>>> for StorageWriteGuard<'a, Types, S>where\n Types: NodeType,"],["impl From<RequestError> for Error"],["impl From<Error> for MetricsError"],["impl From<RequestError> for Error"],["impl<Types: NodeType> From<usize> for BlockId<Types>"],["impl<Types> From<usize> for BlockRequest<Types>where\n Types: NodeType,"],["impl<'a, Types, S> From<RwLockReadGuard<'a, NotifyStorage<Types, S>>> for StorageReadGuard<'a, Types, S>where\n Types: NodeType,"],["impl<Types: NodeType> From<Commitment<<Types as NodeType>::BlockHeader>> for BlockId<Types>"],["impl<Types: NodeType> From<usize> for LeafId<Types>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/default/trait.Default.js b/trait.impl/core/default/trait.Default.js index 64c2d39f9..62b63e01c 100644 --- a/trait.impl/core/default/trait.Default.js +++ b/trait.impl/core/default/trait.Default.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl<T, C> Default for Fetcher<T, C>"],["impl Default for MempoolQueryData"],["impl Default for Options"],["impl<Types> Default for AnyProvider<Types>where\n Types: NodeType,"],["impl Default for Options"],["impl Default for Options"],["impl Default for MetricsDataSource"],["impl Default for PrometheusMetrics"],["impl Default for Config"],["impl Default for Options"],["impl Default for NoFetching"]] +"hotshot_query_service":[["impl Default for Options"],["impl Default for Options"],["impl Default for MempoolQueryData"],["impl<T, C> Default for Fetcher<T, C>"],["impl Default for Options"],["impl Default for PrometheusMetrics"],["impl Default for Config"],["impl Default for MetricsDataSource"],["impl Default for Options"],["impl Default for NoFetching"],["impl<Types> Default for AnyProvider<Types>where\n Types: NodeType,"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/error/trait.Error.js b/trait.impl/core/error/trait.Error.js index 74112c5dc..ab4b5985c 100644 --- a/trait.impl/core/error/trait.Error.js +++ b/trait.impl/core/error/trait.Error.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl Error for Errorwhere\n Self: Debug + Display,"],["impl<Types: NodeType> Error for InconsistentLeafError<Types>where\n Self: Debug + Display,"],["impl Error for Errorwhere\n Self: Debug + Display,"],["impl Error for MetricsErrorwhere\n Self: Debug + Display,"],["impl Error for QueryErrorwhere\n Self: Debug + Display,"],["impl Error for Errorwhere\n Self: Debug + Display,"],["impl Error for Errorwhere\n Self: Debug + Display,"]] +"hotshot_query_service":[["impl Error for MetricsErrorwhere\n Self: Debug + Display,"],["impl Error for Errorwhere\n Self: Debug + Display,"],["impl Error for Errorwhere\n Self: Debug + Display,"],["impl Error for Errorwhere\n Self: Debug + Display,"],["impl Error for Errorwhere\n Self: Debug + Display,"],["impl<Types: NodeType> Error for InconsistentLeafError<Types>where\n Self: Debug + Display,"],["impl Error for QueryErrorwhere\n Self: Debug + Display,"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/fmt/trait.Debug.js b/trait.impl/core/fmt/trait.Debug.js index cfba9e3bf..05f977325 100644 --- a/trait.impl/core/fmt/trait.Debug.js +++ b/trait.impl/core/fmt/trait.Debug.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl Debug for MempoolQueryData"],["impl<Types: Debug + NodeType> Debug for TransactionQueryData<Types>where\n Payload<Types>: QueryablePayload,"],["impl<Types> Debug for AnyProvider<Types>where\n Types: NodeType,"],["impl Debug for QuerySnafu"],["impl<__T0: Debug> Debug for FetchBlockSnafu<__T0>"],["impl Debug for InvalidSignatureKeySnafu"],["impl Debug for PrometheusMetrics"],["impl Debug for Error"],["impl Debug for Error"],["impl Debug for MetricsError"],["impl Debug for QueryServiceProvider"],["impl<Types: NodeType> Debug for LeafId<Types>"],["impl<Types: Debug + NodeType> Debug for BlockQueryData<Types>"],["impl Debug for LeafRequest"],["impl Debug for Histogram"],["impl<__T0: Debug> Debug for Snafu<__T0>"],["impl Debug for QueryError"],["impl<Types: Debug + NodeType> Debug for PayloadQueryData<Types>"],["impl Debug for RequestSnafu"],["impl<Types: NodeType> Debug for BlockId<Types>"],["impl<Types, S, P> Debug for FetchingDataSource<Types, S, P>where\n Types: NodeType,\n S: Debug,\n P: Debug,"],["impl Debug for Error"],["impl<D: Debug, U: Debug> Debug for ExtensibleDataSource<D, U>"],["impl Debug for NoFetching"],["impl<T, C> Debug for Fetcher<T, C>"],["impl Debug for Label"],["impl Debug for PayloadRequest"],["impl Debug for Error"],["impl<Types: NodeType> Debug for FileSystemStorage<Types>where\n Payload<Types>: QueryablePayload,\n HashMap<LeafHash<Types>, u64>: Debug,\n HashMap<BlockHash<Types>, u64>: Debug,\n HashMap<TransactionHash<Types>, (u64, TransactionIndex<Types>)>: Debug,\n HashMap<SignatureKey<Types>, Vec<u64>>: Debug,\n LedgerLog<LeafQueryData<Types>>: Debug,\n LedgerLog<BlockQueryData<Types>>: Debug,"],["impl<__T0: Debug, __T1: Debug> Debug for InvalidTransactionIndexSnafu<__T0, __T1>"],["impl<__T0: Debug> Debug for FetchLeafSnafu<__T0>"],["impl<__T0: Debug> Debug for FetchTransactionSnafu<__T0>"],["impl Debug for NotFoundSnafu"],["impl Debug for MissingSnafu"],["impl Debug for SqlStorage"],["impl<__T0: Debug, __T1: Debug> Debug for CustomSnafu<__T0, __T1>"],["impl Debug for RequestSnafu"],["impl<__T0: Debug, __T1: Debug> Debug for CustomSnafu<__T0, __T1>"],["impl<__T0: Debug> Debug for QueryProposalsSnafu<__T0>"],["impl Debug for MetricsDataSource"],["impl Debug for Gauge"],["impl Debug for Counter"],["impl<Types: Debug + NodeType> Debug for InconsistentLeafError<Types>"],["impl<Types: Debug + NodeType> Debug for LeafQueryData<Types>"],["impl Debug for Config"]] +"hotshot_query_service":[["impl Debug for Error"],["impl Debug for QueryError"],["impl<Types: Debug + NodeType> Debug for InconsistentLeafError<Types>"],["impl<Types: NodeType> Debug for FileSystemStorage<Types>where\n Payload<Types>: QueryablePayload,\n HashMap<LeafHash<Types>, u64>: Debug,\n HashMap<BlockHash<Types>, u64>: Debug,\n HashMap<TransactionHash<Types>, (u64, TransactionIndex<Types>)>: Debug,\n HashMap<SignatureKey<Types>, Vec<u64>>: Debug,\n LedgerLog<LeafQueryData<Types>>: Debug,\n LedgerLog<BlockQueryData<Types>>: Debug,"],["impl Debug for LeafRequest"],["impl Debug for InvalidSignatureKeySnafu"],["impl Debug for MempoolQueryData"],["impl Debug for PrometheusMetrics"],["impl<Types: Debug + NodeType> Debug for BlockQueryData<Types>"],["impl Debug for NotFoundSnafu"],["impl<__T0: Debug, __T1: Debug> Debug for CustomSnafu<__T0, __T1>"],["impl Debug for Error"],["impl<Types: NodeType> Debug for LeafId<Types>"],["impl<__T0: Debug> Debug for Snafu<__T0>"],["impl<T, C> Debug for Fetcher<T, C>"],["impl<Types: Debug + NodeType> Debug for TransactionQueryData<Types>where\n Payload<Types>: QueryablePayload,"],["impl<__T0: Debug> Debug for FetchBlockSnafu<__T0>"],["impl Debug for QueryServiceProvider"],["impl Debug for MetricsDataSource"],["impl<__T0: Debug> Debug for FetchLeafSnafu<__T0>"],["impl Debug for QuerySnafu"],["impl Debug for MissingSnafu"],["impl<D: Debug, U: Debug> Debug for ExtensibleDataSource<D, U>"],["impl Debug for SqlStorage"],["impl Debug for Counter"],["impl Debug for NoFetching"],["impl<Types> Debug for AnyProvider<Types>where\n Types: NodeType,"],["impl Debug for Error"],["impl<Types> Debug for BlockRequest<Types>where\n Types: NodeType,"],["impl<Types: NodeType> Debug for BlockId<Types>"],["impl<__T0: Debug, __T1: Debug> Debug for InvalidTransactionIndexSnafu<__T0, __T1>"],["impl Debug for Histogram"],["impl<__T0: Debug> Debug for FetchTransactionSnafu<__T0>"],["impl Debug for Config"],["impl Debug for RequestSnafu"],["impl<__T0: Debug, __T1: Debug> Debug for CustomSnafu<__T0, __T1>"],["impl Debug for PayloadRequest"],["impl Debug for MetricsError"],["impl Debug for RequestSnafu"],["impl Debug for Gauge"],["impl<Types: Debug + NodeType> Debug for PayloadQueryData<Types>"],["impl Debug for Error"],["impl Debug for Label"],["impl<Types: Debug + NodeType> Debug for LeafQueryData<Types>"],["impl<__T0: Debug> Debug for QueryProposalsSnafu<__T0>"],["impl<Types, S, P> Debug for FetchingDataSource<Types, S, P>where\n Types: NodeType,\n S: Debug,\n P: Debug,"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/fmt/trait.Display.js b/trait.impl/core/fmt/trait.Display.js index 3c8662458..f2c2fc101 100644 --- a/trait.impl/core/fmt/trait.Display.js +++ b/trait.impl/core/fmt/trait.Display.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl<Types: NodeType> Display for InconsistentLeafError<Types>"],["impl Display for Error"],["impl Display for Error"],["impl Display for QueryError"],["impl Display for Error"],["impl<Types: NodeType> Display for BlockId<Types>"],["impl Display for MetricsError"],["impl<Types: NodeType> Display for LeafId<Types>"],["impl Display for Error"]] +"hotshot_query_service":[["impl Display for QueryError"],["impl Display for Error"],["impl<Types: NodeType> Display for InconsistentLeafError<Types>"],["impl<Types: NodeType> Display for BlockId<Types>"],["impl Display for Error"],["impl Display for Error"],["impl Display for MetricsError"],["impl<Types: NodeType> Display for LeafId<Types>"],["impl Display for Error"],["impl<Types> Display for BlockRequest<Types>where\n TransactionHash<Types>: Display,\n BlockId<Types>: Display,\n Types: NodeType,"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/hash/trait.Hash.js b/trait.impl/core/hash/trait.Hash.js index 45f932254..8a83bf68a 100644 --- a/trait.impl/core/hash/trait.Hash.js +++ b/trait.impl/core/hash/trait.Hash.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl Hash for MempoolQueryData"],["impl<Types: NodeType> Hash for BlockId<Types>"],["impl Hash for LeafRequest"],["impl Hash for PayloadRequest"],["impl<Types: NodeType> Hash for LeafId<Types>"]] +"hotshot_query_service":[["impl Hash for MempoolQueryData"],["impl Hash for PayloadRequest"],["impl<Types> Hash for BlockRequest<Types>where\n Types: NodeType,"],["impl<Types: NodeType> Hash for BlockId<Types>"],["impl Hash for LeafRequest"],["impl<Types: NodeType> Hash for LeafId<Types>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Copy.js b/trait.impl/core/marker/trait.Copy.js index 0e8c5a901..581931994 100644 --- a/trait.impl/core/marker/trait.Copy.js +++ b/trait.impl/core/marker/trait.Copy.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl<Types: NodeType> Copy for LeafId<Types>"],["impl Copy for LeafRequest"],["impl Copy for InvalidSignatureKeySnafu"],["impl Copy for RequestSnafu"],["impl Copy for RequestSnafu"],["impl<__T0: Copy, __T1: Copy> Copy for InvalidTransactionIndexSnafu<__T0, __T1>"],["impl<Types: NodeType> Copy for BlockId<Types>"],["impl<__T0: Copy, __T1: Copy> Copy for CustomSnafu<__T0, __T1>"],["impl<__T0: Copy, __T1: Copy> Copy for CustomSnafu<__T0, __T1>"],["impl<__T0: Copy> Copy for FetchLeafSnafu<__T0>"],["impl<__T0: Copy> Copy for FetchTransactionSnafu<__T0>"],["impl Copy for NotFoundSnafu"],["impl<__T0: Copy> Copy for QueryProposalsSnafu<__T0>"],["impl<D: Copy, U: Copy> Copy for ExtensibleDataSource<D, U>"],["impl<__T0: Copy> Copy for Snafu<__T0>"],["impl Copy for PayloadRequest"],["impl Copy for MissingSnafu"],["impl Copy for NoFetching"],["impl Copy for QuerySnafu"],["impl<__T0: Copy> Copy for FetchBlockSnafu<__T0>"]] +"hotshot_query_service":[["impl<Types: NodeType> Copy for LeafId<Types>"],["impl Copy for RequestSnafu"],["impl Copy for RequestSnafu"],["impl Copy for NoFetching"],["impl<__T0: Copy> Copy for Snafu<__T0>"],["impl Copy for PayloadRequest"],["impl Copy for QuerySnafu"],["impl<__T0: Copy, __T1: Copy> Copy for CustomSnafu<__T0, __T1>"],["impl<Types> Copy for BlockRequest<Types>where\n Types: NodeType,"],["impl<Types: NodeType> Copy for BlockId<Types>"],["impl<__T0: Copy, __T1: Copy> Copy for CustomSnafu<__T0, __T1>"],["impl<__T0: Copy> Copy for QueryProposalsSnafu<__T0>"],["impl Copy for NotFoundSnafu"],["impl<__T0: Copy> Copy for FetchBlockSnafu<__T0>"],["impl<__T0: Copy> Copy for FetchTransactionSnafu<__T0>"],["impl Copy for LeafRequest"],["impl<D: Copy, U: Copy> Copy for ExtensibleDataSource<D, U>"],["impl Copy for InvalidSignatureKeySnafu"],["impl<__T0: Copy> Copy for FetchLeafSnafu<__T0>"],["impl Copy for MissingSnafu"],["impl<__T0: Copy, __T1: Copy> Copy for InvalidTransactionIndexSnafu<__T0, __T1>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Freeze.js b/trait.impl/core/marker/trait.Freeze.js index 7a989ab23..ee45cf67c 100644 --- a/trait.impl/core/marker/trait.Freeze.js +++ b/trait.impl/core/marker/trait.Freeze.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl<Types> Freeze for LeafId<Types>",1,["hotshot_query_service::availability::data_source::LeafId"]],["impl<Types> Freeze for BlockId<Types>",1,["hotshot_query_service::availability::data_source::BlockId"]],["impl<T> Freeze for Fetch<T>where\n T: Freeze,",1,["hotshot_query_service::availability::fetch::Fetch"]],["impl<Types> Freeze for LeafQueryData<Types>where\n <Types as NodeType>::BlockHeader: Freeze,\n <Types as NodeType>::BlockPayload: Freeze,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QCType: Freeze,\n <Types as NodeType>::SignatureKey: Freeze,\n <Types as NodeType>::Time: Freeze,",1,["hotshot_query_service::availability::query_data::LeafQueryData"]],["impl<Types> Freeze for InconsistentLeafError<Types>",1,["hotshot_query_service::availability::query_data::InconsistentLeafError"]],["impl<Types> Freeze for BlockQueryData<Types>where\n <Types as NodeType>::BlockHeader: Freeze,\n <Types as NodeType>::BlockPayload: Freeze,",1,["hotshot_query_service::availability::query_data::BlockQueryData"]],["impl<Types> Freeze for PayloadQueryData<Types>where\n <Types as NodeType>::BlockPayload: Freeze,",1,["hotshot_query_service::availability::query_data::PayloadQueryData"]],["impl<Types> Freeze for TransactionQueryData<Types>where\n <<Types as NodeType>::BlockPayload as QueryablePayload>::InclusionProof: Freeze,\n <Types as NodeType>::Transaction: Freeze,",1,["hotshot_query_service::availability::query_data::TransactionQueryData"]],["impl Freeze for Options",1,["hotshot_query_service::availability::Options"]],["impl Freeze for Error",1,["hotshot_query_service::availability::Error"]],["impl Freeze for RequestSnafu",1,["hotshot_query_service::availability::RequestSnafu"]],["impl<__T0> Freeze for FetchLeafSnafu<__T0>where\n __T0: Freeze,",1,["hotshot_query_service::availability::FetchLeafSnafu"]],["impl<__T0> Freeze for FetchBlockSnafu<__T0>where\n __T0: Freeze,",1,["hotshot_query_service::availability::FetchBlockSnafu"]],["impl<__T0> Freeze for FetchTransactionSnafu<__T0>where\n __T0: Freeze,",1,["hotshot_query_service::availability::FetchTransactionSnafu"]],["impl<__T0, __T1> Freeze for InvalidTransactionIndexSnafu<__T0, __T1>where\n __T0: Freeze,\n __T1: Freeze,",1,["hotshot_query_service::availability::InvalidTransactionIndexSnafu"]],["impl<__T0, __T1> Freeze for CustomSnafu<__T0, __T1>where\n __T0: Freeze,\n __T1: Freeze,",1,["hotshot_query_service::availability::CustomSnafu"]],["impl<D, U> Freeze for ExtensibleDataSource<D, U>where\n D: Freeze,\n U: Freeze,",1,["hotshot_query_service::data_source::extension::ExtensibleDataSource"]],["impl<Types, S, P> Freeze for FetchingDataSource<Types, S, P>",1,["hotshot_query_service::data_source::fetching::FetchingDataSource"]],["impl Freeze for MetricsDataSource",1,["hotshot_query_service::data_source::metrics::MetricsDataSource"]],["impl<Types> Freeze for FileSystemStorage<Types>",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorage"]],["impl Freeze for Config",1,["hotshot_query_service::data_source::storage::sql::Config"]],["impl Freeze for SqlStorage",1,["hotshot_query_service::data_source::storage::sql::SqlStorage"]],["impl<'a> Freeze for Transaction<'a>",1,["hotshot_query_service::data_source::storage::sql::Transaction"]],["impl Freeze for Error",1,["hotshot_query_service::error::Error"]],["impl<Types> Freeze for AnyProvider<Types>",1,["hotshot_query_service::fetching::provider::any::AnyProvider"]],["impl Freeze for QueryServiceProvider",1,["hotshot_query_service::fetching::provider::query_service::QueryServiceProvider"]],["impl Freeze for NoFetching",1,["hotshot_query_service::fetching::provider::NoFetching"]],["impl Freeze for PayloadRequest",1,["hotshot_query_service::fetching::request::PayloadRequest"]],["impl Freeze for LeafRequest",1,["hotshot_query_service::fetching::request::LeafRequest"]],["impl<T, C> Freeze for Fetcher<T, C>",1,["hotshot_query_service::fetching::Fetcher"]],["impl Freeze for MetricsError",1,["hotshot_query_service::metrics::MetricsError"]],["impl Freeze for PrometheusMetrics",1,["hotshot_query_service::metrics::PrometheusMetrics"]],["impl Freeze for Counter",1,["hotshot_query_service::metrics::Counter"]],["impl Freeze for Gauge",1,["hotshot_query_service::metrics::Gauge"]],["impl Freeze for Histogram",1,["hotshot_query_service::metrics::Histogram"]],["impl Freeze for Label",1,["hotshot_query_service::metrics::Label"]],["impl Freeze for Options",1,["hotshot_query_service::node::Options"]],["impl Freeze for Error",1,["hotshot_query_service::node::Error"]],["impl Freeze for RequestSnafu",1,["hotshot_query_service::node::RequestSnafu"]],["impl Freeze for QuerySnafu",1,["hotshot_query_service::node::QuerySnafu"]],["impl<__T0> Freeze for QueryProposalsSnafu<__T0>where\n __T0: Freeze,",1,["hotshot_query_service::node::QueryProposalsSnafu"]],["impl Freeze for InvalidSignatureKeySnafu",1,["hotshot_query_service::node::InvalidSignatureKeySnafu"]],["impl<__T0, __T1> Freeze for CustomSnafu<__T0, __T1>where\n __T0: Freeze,\n __T1: Freeze,",1,["hotshot_query_service::node::CustomSnafu"]],["impl Freeze for MempoolQueryData",1,["hotshot_query_service::status::query_data::MempoolQueryData"]],["impl Freeze for Options",1,["hotshot_query_service::status::Options"]],["impl Freeze for Error",1,["hotshot_query_service::status::Error"]],["impl Freeze for QueryError",1,["hotshot_query_service::QueryError"]],["impl Freeze for NotFoundSnafu",1,["hotshot_query_service::NotFoundSnafu"]],["impl Freeze for MissingSnafu",1,["hotshot_query_service::MissingSnafu"]],["impl<__T0> Freeze for Snafu<__T0>where\n __T0: Freeze,",1,["hotshot_query_service::Snafu"]],["impl Freeze for Options",1,["hotshot_query_service::Options"]]] +"hotshot_query_service":[["impl<Types> Freeze for LeafId<Types>",1,["hotshot_query_service::availability::data_source::LeafId"]],["impl<Types> Freeze for BlockId<Types>",1,["hotshot_query_service::availability::data_source::BlockId"]],["impl<T> Freeze for Fetch<T>where\n T: Freeze,",1,["hotshot_query_service::availability::fetch::Fetch"]],["impl<Types> Freeze for LeafQueryData<Types>where\n <Types as NodeType>::BlockHeader: Freeze,\n <Types as NodeType>::BlockPayload: Freeze,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QCType: Freeze,\n <Types as NodeType>::SignatureKey: Freeze,\n <Types as NodeType>::Time: Freeze,",1,["hotshot_query_service::availability::query_data::LeafQueryData"]],["impl<Types> Freeze for InconsistentLeafError<Types>",1,["hotshot_query_service::availability::query_data::InconsistentLeafError"]],["impl<Types> Freeze for BlockQueryData<Types>where\n <Types as NodeType>::BlockHeader: Freeze,\n <Types as NodeType>::BlockPayload: Freeze,",1,["hotshot_query_service::availability::query_data::BlockQueryData"]],["impl<Types> Freeze for PayloadQueryData<Types>where\n <Types as NodeType>::BlockPayload: Freeze,",1,["hotshot_query_service::availability::query_data::PayloadQueryData"]],["impl<Types> Freeze for TransactionQueryData<Types>where\n <<Types as NodeType>::BlockPayload as QueryablePayload>::InclusionProof: Freeze,\n <Types as NodeType>::Transaction: Freeze,",1,["hotshot_query_service::availability::query_data::TransactionQueryData"]],["impl Freeze for Options",1,["hotshot_query_service::availability::Options"]],["impl Freeze for Error",1,["hotshot_query_service::availability::Error"]],["impl Freeze for RequestSnafu",1,["hotshot_query_service::availability::RequestSnafu"]],["impl<__T0> Freeze for FetchLeafSnafu<__T0>where\n __T0: Freeze,",1,["hotshot_query_service::availability::FetchLeafSnafu"]],["impl<__T0> Freeze for FetchBlockSnafu<__T0>where\n __T0: Freeze,",1,["hotshot_query_service::availability::FetchBlockSnafu"]],["impl<__T0> Freeze for FetchTransactionSnafu<__T0>where\n __T0: Freeze,",1,["hotshot_query_service::availability::FetchTransactionSnafu"]],["impl<__T0, __T1> Freeze for InvalidTransactionIndexSnafu<__T0, __T1>where\n __T0: Freeze,\n __T1: Freeze,",1,["hotshot_query_service::availability::InvalidTransactionIndexSnafu"]],["impl<__T0, __T1> Freeze for CustomSnafu<__T0, __T1>where\n __T0: Freeze,\n __T1: Freeze,",1,["hotshot_query_service::availability::CustomSnafu"]],["impl<D, U> Freeze for ExtensibleDataSource<D, U>where\n D: Freeze,\n U: Freeze,",1,["hotshot_query_service::data_source::extension::ExtensibleDataSource"]],["impl<Types, S, P> Freeze for Builder<Types, S, P>where\n P: Freeze,\n S: Freeze,",1,["hotshot_query_service::data_source::fetching::Builder"]],["impl<Types, S, P> Freeze for FetchingDataSource<Types, S, P>",1,["hotshot_query_service::data_source::fetching::FetchingDataSource"]],["impl<'a, Types, S> Freeze for StorageReadGuard<'a, Types, S>",1,["hotshot_query_service::data_source::fetching::StorageReadGuard"]],["impl<'a, Types, S> Freeze for StorageWriteGuard<'a, Types, S>",1,["hotshot_query_service::data_source::fetching::StorageWriteGuard"]],["impl<Types> Freeze for BlockRequest<Types>",1,["hotshot_query_service::data_source::fetching::BlockRequest"]],["impl Freeze for MetricsDataSource",1,["hotshot_query_service::data_source::metrics::MetricsDataSource"]],["impl<Types> Freeze for FileSystemStorage<Types>",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorage"]],["impl Freeze for Config",1,["hotshot_query_service::data_source::storage::sql::Config"]],["impl Freeze for SqlStorage",1,["hotshot_query_service::data_source::storage::sql::SqlStorage"]],["impl<'a> Freeze for Transaction<'a>",1,["hotshot_query_service::data_source::storage::sql::Transaction"]],["impl Freeze for Error",1,["hotshot_query_service::error::Error"]],["impl<Types> Freeze for AnyProvider<Types>",1,["hotshot_query_service::fetching::provider::any::AnyProvider"]],["impl Freeze for QueryServiceProvider",1,["hotshot_query_service::fetching::provider::query_service::QueryServiceProvider"]],["impl Freeze for NoFetching",1,["hotshot_query_service::fetching::provider::NoFetching"]],["impl Freeze for PayloadRequest",1,["hotshot_query_service::fetching::request::PayloadRequest"]],["impl Freeze for LeafRequest",1,["hotshot_query_service::fetching::request::LeafRequest"]],["impl<T, C> Freeze for Fetcher<T, C>",1,["hotshot_query_service::fetching::Fetcher"]],["impl Freeze for MetricsError",1,["hotshot_query_service::metrics::MetricsError"]],["impl Freeze for PrometheusMetrics",1,["hotshot_query_service::metrics::PrometheusMetrics"]],["impl Freeze for Counter",1,["hotshot_query_service::metrics::Counter"]],["impl Freeze for Gauge",1,["hotshot_query_service::metrics::Gauge"]],["impl Freeze for Histogram",1,["hotshot_query_service::metrics::Histogram"]],["impl Freeze for Label",1,["hotshot_query_service::metrics::Label"]],["impl Freeze for Options",1,["hotshot_query_service::node::Options"]],["impl Freeze for Error",1,["hotshot_query_service::node::Error"]],["impl Freeze for RequestSnafu",1,["hotshot_query_service::node::RequestSnafu"]],["impl Freeze for QuerySnafu",1,["hotshot_query_service::node::QuerySnafu"]],["impl<__T0> Freeze for QueryProposalsSnafu<__T0>where\n __T0: Freeze,",1,["hotshot_query_service::node::QueryProposalsSnafu"]],["impl Freeze for InvalidSignatureKeySnafu",1,["hotshot_query_service::node::InvalidSignatureKeySnafu"]],["impl<__T0, __T1> Freeze for CustomSnafu<__T0, __T1>where\n __T0: Freeze,\n __T1: Freeze,",1,["hotshot_query_service::node::CustomSnafu"]],["impl Freeze for MempoolQueryData",1,["hotshot_query_service::status::query_data::MempoolQueryData"]],["impl Freeze for Options",1,["hotshot_query_service::status::Options"]],["impl Freeze for Error",1,["hotshot_query_service::status::Error"]],["impl Freeze for QueryError",1,["hotshot_query_service::QueryError"]],["impl Freeze for NotFoundSnafu",1,["hotshot_query_service::NotFoundSnafu"]],["impl Freeze for MissingSnafu",1,["hotshot_query_service::MissingSnafu"]],["impl<__T0> Freeze for Snafu<__T0>where\n __T0: Freeze,",1,["hotshot_query_service::Snafu"]],["impl Freeze for Options",1,["hotshot_query_service::Options"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Send.js b/trait.impl/core/marker/trait.Send.js index c43d47457..0fc58831d 100644 --- a/trait.impl/core/marker/trait.Send.js +++ b/trait.impl/core/marker/trait.Send.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl<Types> Send for LeafId<Types>",1,["hotshot_query_service::availability::data_source::LeafId"]],["impl<Types> Send for BlockId<Types>",1,["hotshot_query_service::availability::data_source::BlockId"]],["impl<T> Send for Fetch<T>where\n T: Send,",1,["hotshot_query_service::availability::fetch::Fetch"]],["impl<Types> Send for LeafQueryData<Types>",1,["hotshot_query_service::availability::query_data::LeafQueryData"]],["impl<Types> Send for InconsistentLeafError<Types>",1,["hotshot_query_service::availability::query_data::InconsistentLeafError"]],["impl<Types> Send for BlockQueryData<Types>",1,["hotshot_query_service::availability::query_data::BlockQueryData"]],["impl<Types> Send for PayloadQueryData<Types>",1,["hotshot_query_service::availability::query_data::PayloadQueryData"]],["impl<Types> Send for TransactionQueryData<Types>where\n <<Types as NodeType>::BlockPayload as QueryablePayload>::InclusionProof: Send,",1,["hotshot_query_service::availability::query_data::TransactionQueryData"]],["impl Send for Options",1,["hotshot_query_service::availability::Options"]],["impl Send for Error",1,["hotshot_query_service::availability::Error"]],["impl Send for RequestSnafu",1,["hotshot_query_service::availability::RequestSnafu"]],["impl<__T0> Send for FetchLeafSnafu<__T0>where\n __T0: Send,",1,["hotshot_query_service::availability::FetchLeafSnafu"]],["impl<__T0> Send for FetchBlockSnafu<__T0>where\n __T0: Send,",1,["hotshot_query_service::availability::FetchBlockSnafu"]],["impl<__T0> Send for FetchTransactionSnafu<__T0>where\n __T0: Send,",1,["hotshot_query_service::availability::FetchTransactionSnafu"]],["impl<__T0, __T1> Send for InvalidTransactionIndexSnafu<__T0, __T1>where\n __T0: Send,\n __T1: Send,",1,["hotshot_query_service::availability::InvalidTransactionIndexSnafu"]],["impl<__T0, __T1> Send for CustomSnafu<__T0, __T1>where\n __T0: Send,\n __T1: Send,",1,["hotshot_query_service::availability::CustomSnafu"]],["impl<D, U> Send for ExtensibleDataSource<D, U>where\n D: Send,\n U: Send,",1,["hotshot_query_service::data_source::extension::ExtensibleDataSource"]],["impl<Types, S, P> Send for FetchingDataSource<Types, S, P>where\n P: Send + Sync,\n S: Send + Sync,",1,["hotshot_query_service::data_source::fetching::FetchingDataSource"]],["impl Send for MetricsDataSource",1,["hotshot_query_service::data_source::metrics::MetricsDataSource"]],["impl<Types> Send for FileSystemStorage<Types>",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorage"]],["impl Send for Config",1,["hotshot_query_service::data_source::storage::sql::Config"]],["impl Send for SqlStorage",1,["hotshot_query_service::data_source::storage::sql::SqlStorage"]],["impl<'a> Send for Transaction<'a>",1,["hotshot_query_service::data_source::storage::sql::Transaction"]],["impl Send for Error",1,["hotshot_query_service::error::Error"]],["impl<Types> Send for AnyProvider<Types>",1,["hotshot_query_service::fetching::provider::any::AnyProvider"]],["impl Send for QueryServiceProvider",1,["hotshot_query_service::fetching::provider::query_service::QueryServiceProvider"]],["impl Send for NoFetching",1,["hotshot_query_service::fetching::provider::NoFetching"]],["impl Send for PayloadRequest",1,["hotshot_query_service::fetching::request::PayloadRequest"]],["impl Send for LeafRequest",1,["hotshot_query_service::fetching::request::LeafRequest"]],["impl<T, C> Send for Fetcher<T, C>where\n C: Send,\n T: Send,",1,["hotshot_query_service::fetching::Fetcher"]],["impl Send for MetricsError",1,["hotshot_query_service::metrics::MetricsError"]],["impl Send for PrometheusMetrics",1,["hotshot_query_service::metrics::PrometheusMetrics"]],["impl Send for Counter",1,["hotshot_query_service::metrics::Counter"]],["impl Send for Gauge",1,["hotshot_query_service::metrics::Gauge"]],["impl Send for Histogram",1,["hotshot_query_service::metrics::Histogram"]],["impl Send for Label",1,["hotshot_query_service::metrics::Label"]],["impl Send for Options",1,["hotshot_query_service::node::Options"]],["impl Send for Error",1,["hotshot_query_service::node::Error"]],["impl Send for RequestSnafu",1,["hotshot_query_service::node::RequestSnafu"]],["impl Send for QuerySnafu",1,["hotshot_query_service::node::QuerySnafu"]],["impl<__T0> Send for QueryProposalsSnafu<__T0>where\n __T0: Send,",1,["hotshot_query_service::node::QueryProposalsSnafu"]],["impl Send for InvalidSignatureKeySnafu",1,["hotshot_query_service::node::InvalidSignatureKeySnafu"]],["impl<__T0, __T1> Send for CustomSnafu<__T0, __T1>where\n __T0: Send,\n __T1: Send,",1,["hotshot_query_service::node::CustomSnafu"]],["impl Send for MempoolQueryData",1,["hotshot_query_service::status::query_data::MempoolQueryData"]],["impl Send for Options",1,["hotshot_query_service::status::Options"]],["impl Send for Error",1,["hotshot_query_service::status::Error"]],["impl Send for QueryError",1,["hotshot_query_service::QueryError"]],["impl Send for NotFoundSnafu",1,["hotshot_query_service::NotFoundSnafu"]],["impl Send for MissingSnafu",1,["hotshot_query_service::MissingSnafu"]],["impl<__T0> Send for Snafu<__T0>where\n __T0: Send,",1,["hotshot_query_service::Snafu"]],["impl Send for Options",1,["hotshot_query_service::Options"]]] +"hotshot_query_service":[["impl<Types> Send for LeafId<Types>",1,["hotshot_query_service::availability::data_source::LeafId"]],["impl<Types> Send for BlockId<Types>",1,["hotshot_query_service::availability::data_source::BlockId"]],["impl<T> Send for Fetch<T>where\n T: Send,",1,["hotshot_query_service::availability::fetch::Fetch"]],["impl<Types> Send for LeafQueryData<Types>",1,["hotshot_query_service::availability::query_data::LeafQueryData"]],["impl<Types> Send for InconsistentLeafError<Types>",1,["hotshot_query_service::availability::query_data::InconsistentLeafError"]],["impl<Types> Send for BlockQueryData<Types>",1,["hotshot_query_service::availability::query_data::BlockQueryData"]],["impl<Types> Send for PayloadQueryData<Types>",1,["hotshot_query_service::availability::query_data::PayloadQueryData"]],["impl<Types> Send for TransactionQueryData<Types>where\n <<Types as NodeType>::BlockPayload as QueryablePayload>::InclusionProof: Send,",1,["hotshot_query_service::availability::query_data::TransactionQueryData"]],["impl Send for Options",1,["hotshot_query_service::availability::Options"]],["impl Send for Error",1,["hotshot_query_service::availability::Error"]],["impl Send for RequestSnafu",1,["hotshot_query_service::availability::RequestSnafu"]],["impl<__T0> Send for FetchLeafSnafu<__T0>where\n __T0: Send,",1,["hotshot_query_service::availability::FetchLeafSnafu"]],["impl<__T0> Send for FetchBlockSnafu<__T0>where\n __T0: Send,",1,["hotshot_query_service::availability::FetchBlockSnafu"]],["impl<__T0> Send for FetchTransactionSnafu<__T0>where\n __T0: Send,",1,["hotshot_query_service::availability::FetchTransactionSnafu"]],["impl<__T0, __T1> Send for InvalidTransactionIndexSnafu<__T0, __T1>where\n __T0: Send,\n __T1: Send,",1,["hotshot_query_service::availability::InvalidTransactionIndexSnafu"]],["impl<__T0, __T1> Send for CustomSnafu<__T0, __T1>where\n __T0: Send,\n __T1: Send,",1,["hotshot_query_service::availability::CustomSnafu"]],["impl<D, U> Send for ExtensibleDataSource<D, U>where\n D: Send,\n U: Send,",1,["hotshot_query_service::data_source::extension::ExtensibleDataSource"]],["impl<Types, S, P> Send for Builder<Types, S, P>where\n P: Send,\n S: Send,\n Types: Send,",1,["hotshot_query_service::data_source::fetching::Builder"]],["impl<Types, S, P> Send for FetchingDataSource<Types, S, P>where\n P: Send + Sync,\n S: Send + Sync,",1,["hotshot_query_service::data_source::fetching::FetchingDataSource"]],["impl<'a, Types, S> Send for StorageReadGuard<'a, Types, S>where\n S: Sync,",1,["hotshot_query_service::data_source::fetching::StorageReadGuard"]],["impl<'a, Types, S> Send for StorageWriteGuard<'a, Types, S>where\n S: Send,",1,["hotshot_query_service::data_source::fetching::StorageWriteGuard"]],["impl<Types> Send for BlockRequest<Types>",1,["hotshot_query_service::data_source::fetching::BlockRequest"]],["impl Send for MetricsDataSource",1,["hotshot_query_service::data_source::metrics::MetricsDataSource"]],["impl<Types> Send for FileSystemStorage<Types>",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorage"]],["impl Send for Config",1,["hotshot_query_service::data_source::storage::sql::Config"]],["impl Send for SqlStorage",1,["hotshot_query_service::data_source::storage::sql::SqlStorage"]],["impl<'a> Send for Transaction<'a>",1,["hotshot_query_service::data_source::storage::sql::Transaction"]],["impl Send for Error",1,["hotshot_query_service::error::Error"]],["impl<Types> Send for AnyProvider<Types>",1,["hotshot_query_service::fetching::provider::any::AnyProvider"]],["impl Send for QueryServiceProvider",1,["hotshot_query_service::fetching::provider::query_service::QueryServiceProvider"]],["impl Send for NoFetching",1,["hotshot_query_service::fetching::provider::NoFetching"]],["impl Send for PayloadRequest",1,["hotshot_query_service::fetching::request::PayloadRequest"]],["impl Send for LeafRequest",1,["hotshot_query_service::fetching::request::LeafRequest"]],["impl<T, C> Send for Fetcher<T, C>where\n C: Send,\n T: Send,",1,["hotshot_query_service::fetching::Fetcher"]],["impl Send for MetricsError",1,["hotshot_query_service::metrics::MetricsError"]],["impl Send for PrometheusMetrics",1,["hotshot_query_service::metrics::PrometheusMetrics"]],["impl Send for Counter",1,["hotshot_query_service::metrics::Counter"]],["impl Send for Gauge",1,["hotshot_query_service::metrics::Gauge"]],["impl Send for Histogram",1,["hotshot_query_service::metrics::Histogram"]],["impl Send for Label",1,["hotshot_query_service::metrics::Label"]],["impl Send for Options",1,["hotshot_query_service::node::Options"]],["impl Send for Error",1,["hotshot_query_service::node::Error"]],["impl Send for RequestSnafu",1,["hotshot_query_service::node::RequestSnafu"]],["impl Send for QuerySnafu",1,["hotshot_query_service::node::QuerySnafu"]],["impl<__T0> Send for QueryProposalsSnafu<__T0>where\n __T0: Send,",1,["hotshot_query_service::node::QueryProposalsSnafu"]],["impl Send for InvalidSignatureKeySnafu",1,["hotshot_query_service::node::InvalidSignatureKeySnafu"]],["impl<__T0, __T1> Send for CustomSnafu<__T0, __T1>where\n __T0: Send,\n __T1: Send,",1,["hotshot_query_service::node::CustomSnafu"]],["impl Send for MempoolQueryData",1,["hotshot_query_service::status::query_data::MempoolQueryData"]],["impl Send for Options",1,["hotshot_query_service::status::Options"]],["impl Send for Error",1,["hotshot_query_service::status::Error"]],["impl Send for QueryError",1,["hotshot_query_service::QueryError"]],["impl Send for NotFoundSnafu",1,["hotshot_query_service::NotFoundSnafu"]],["impl Send for MissingSnafu",1,["hotshot_query_service::MissingSnafu"]],["impl<__T0> Send for Snafu<__T0>where\n __T0: Send,",1,["hotshot_query_service::Snafu"]],["impl Send for Options",1,["hotshot_query_service::Options"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/marker/trait.StructuralEq.js b/trait.impl/core/marker/trait.StructuralEq.js index 9f9af473e..2d9d4d69f 100644 --- a/trait.impl/core/marker/trait.StructuralEq.js +++ b/trait.impl/core/marker/trait.StructuralEq.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl<Types: NodeType> StructuralEq for PayloadQueryData<Types>"],["impl StructuralEq for LeafRequest"],["impl<Types: NodeType> StructuralEq for LeafQueryData<Types>"],["impl<Types: NodeType> StructuralEq for BlockQueryData<Types>"],["impl StructuralEq for PayloadRequest"],["impl StructuralEq for MempoolQueryData"],["impl<Types: NodeType> StructuralEq for TransactionQueryData<Types>where\n Payload<Types>: QueryablePayload,"]] +"hotshot_query_service":[["impl StructuralEq for LeafRequest"],["impl StructuralEq for MempoolQueryData"],["impl<Types: NodeType> StructuralEq for TransactionQueryData<Types>where\n Payload<Types>: QueryablePayload,"],["impl<Types: NodeType> StructuralEq for BlockQueryData<Types>"],["impl StructuralEq for PayloadRequest"],["impl<Types: NodeType> StructuralEq for PayloadQueryData<Types>"],["impl<Types: NodeType> StructuralEq for LeafQueryData<Types>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/marker/trait.StructuralPartialEq.js b/trait.impl/core/marker/trait.StructuralPartialEq.js index 92a873318..3f22bc3d3 100644 --- a/trait.impl/core/marker/trait.StructuralPartialEq.js +++ b/trait.impl/core/marker/trait.StructuralPartialEq.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl<Types: NodeType> StructuralPartialEq for PayloadQueryData<Types>"],["impl StructuralPartialEq for LeafRequest"],["impl StructuralPartialEq for PayloadRequest"],["impl<Types: NodeType> StructuralPartialEq for TransactionQueryData<Types>where\n Payload<Types>: QueryablePayload,"],["impl<Types: NodeType> StructuralPartialEq for BlockQueryData<Types>"],["impl StructuralPartialEq for MempoolQueryData"],["impl<Types: NodeType> StructuralPartialEq for LeafQueryData<Types>"]] +"hotshot_query_service":[["impl StructuralPartialEq for LeafRequest"],["impl<Types: NodeType> StructuralPartialEq for TransactionQueryData<Types>where\n Payload<Types>: QueryablePayload,"],["impl<Types: NodeType> StructuralPartialEq for BlockQueryData<Types>"],["impl StructuralPartialEq for MempoolQueryData"],["impl StructuralPartialEq for PayloadRequest"],["impl<Types: NodeType> StructuralPartialEq for LeafQueryData<Types>"],["impl<Types: NodeType> StructuralPartialEq for PayloadQueryData<Types>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Sync.js b/trait.impl/core/marker/trait.Sync.js index 30a180c48..35b6c1246 100644 --- a/trait.impl/core/marker/trait.Sync.js +++ b/trait.impl/core/marker/trait.Sync.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl<Types> Sync for LeafId<Types>",1,["hotshot_query_service::availability::data_source::LeafId"]],["impl<Types> Sync for BlockId<Types>",1,["hotshot_query_service::availability::data_source::BlockId"]],["impl<T> !Sync for Fetch<T>",1,["hotshot_query_service::availability::fetch::Fetch"]],["impl<Types> Sync for LeafQueryData<Types>",1,["hotshot_query_service::availability::query_data::LeafQueryData"]],["impl<Types> Sync for InconsistentLeafError<Types>",1,["hotshot_query_service::availability::query_data::InconsistentLeafError"]],["impl<Types> Sync for BlockQueryData<Types>",1,["hotshot_query_service::availability::query_data::BlockQueryData"]],["impl<Types> Sync for PayloadQueryData<Types>",1,["hotshot_query_service::availability::query_data::PayloadQueryData"]],["impl<Types> Sync for TransactionQueryData<Types>where\n <<Types as NodeType>::BlockPayload as QueryablePayload>::InclusionProof: Sync,",1,["hotshot_query_service::availability::query_data::TransactionQueryData"]],["impl Sync for Options",1,["hotshot_query_service::availability::Options"]],["impl Sync for Error",1,["hotshot_query_service::availability::Error"]],["impl Sync for RequestSnafu",1,["hotshot_query_service::availability::RequestSnafu"]],["impl<__T0> Sync for FetchLeafSnafu<__T0>where\n __T0: Sync,",1,["hotshot_query_service::availability::FetchLeafSnafu"]],["impl<__T0> Sync for FetchBlockSnafu<__T0>where\n __T0: Sync,",1,["hotshot_query_service::availability::FetchBlockSnafu"]],["impl<__T0> Sync for FetchTransactionSnafu<__T0>where\n __T0: Sync,",1,["hotshot_query_service::availability::FetchTransactionSnafu"]],["impl<__T0, __T1> Sync for InvalidTransactionIndexSnafu<__T0, __T1>where\n __T0: Sync,\n __T1: Sync,",1,["hotshot_query_service::availability::InvalidTransactionIndexSnafu"]],["impl<__T0, __T1> Sync for CustomSnafu<__T0, __T1>where\n __T0: Sync,\n __T1: Sync,",1,["hotshot_query_service::availability::CustomSnafu"]],["impl<D, U> Sync for ExtensibleDataSource<D, U>where\n D: Sync,\n U: Sync,",1,["hotshot_query_service::data_source::extension::ExtensibleDataSource"]],["impl<Types, S, P> Sync for FetchingDataSource<Types, S, P>where\n P: Send + Sync,\n S: Send + Sync,",1,["hotshot_query_service::data_source::fetching::FetchingDataSource"]],["impl Sync for MetricsDataSource",1,["hotshot_query_service::data_source::metrics::MetricsDataSource"]],["impl<Types> Sync for FileSystemStorage<Types>",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorage"]],["impl Sync for Config",1,["hotshot_query_service::data_source::storage::sql::Config"]],["impl Sync for SqlStorage",1,["hotshot_query_service::data_source::storage::sql::SqlStorage"]],["impl<'a> Sync for Transaction<'a>",1,["hotshot_query_service::data_source::storage::sql::Transaction"]],["impl Sync for Error",1,["hotshot_query_service::error::Error"]],["impl<Types> Sync for AnyProvider<Types>",1,["hotshot_query_service::fetching::provider::any::AnyProvider"]],["impl Sync for QueryServiceProvider",1,["hotshot_query_service::fetching::provider::query_service::QueryServiceProvider"]],["impl Sync for NoFetching",1,["hotshot_query_service::fetching::provider::NoFetching"]],["impl Sync for PayloadRequest",1,["hotshot_query_service::fetching::request::PayloadRequest"]],["impl Sync for LeafRequest",1,["hotshot_query_service::fetching::request::LeafRequest"]],["impl<T, C> Sync for Fetcher<T, C>where\n C: Send,\n T: Send,",1,["hotshot_query_service::fetching::Fetcher"]],["impl Sync for MetricsError",1,["hotshot_query_service::metrics::MetricsError"]],["impl Sync for PrometheusMetrics",1,["hotshot_query_service::metrics::PrometheusMetrics"]],["impl Sync for Counter",1,["hotshot_query_service::metrics::Counter"]],["impl Sync for Gauge",1,["hotshot_query_service::metrics::Gauge"]],["impl Sync for Histogram",1,["hotshot_query_service::metrics::Histogram"]],["impl Sync for Label",1,["hotshot_query_service::metrics::Label"]],["impl Sync for Options",1,["hotshot_query_service::node::Options"]],["impl Sync for Error",1,["hotshot_query_service::node::Error"]],["impl Sync for RequestSnafu",1,["hotshot_query_service::node::RequestSnafu"]],["impl Sync for QuerySnafu",1,["hotshot_query_service::node::QuerySnafu"]],["impl<__T0> Sync for QueryProposalsSnafu<__T0>where\n __T0: Sync,",1,["hotshot_query_service::node::QueryProposalsSnafu"]],["impl Sync for InvalidSignatureKeySnafu",1,["hotshot_query_service::node::InvalidSignatureKeySnafu"]],["impl<__T0, __T1> Sync for CustomSnafu<__T0, __T1>where\n __T0: Sync,\n __T1: Sync,",1,["hotshot_query_service::node::CustomSnafu"]],["impl Sync for MempoolQueryData",1,["hotshot_query_service::status::query_data::MempoolQueryData"]],["impl Sync for Options",1,["hotshot_query_service::status::Options"]],["impl Sync for Error",1,["hotshot_query_service::status::Error"]],["impl Sync for QueryError",1,["hotshot_query_service::QueryError"]],["impl Sync for NotFoundSnafu",1,["hotshot_query_service::NotFoundSnafu"]],["impl Sync for MissingSnafu",1,["hotshot_query_service::MissingSnafu"]],["impl<__T0> Sync for Snafu<__T0>where\n __T0: Sync,",1,["hotshot_query_service::Snafu"]],["impl Sync for Options",1,["hotshot_query_service::Options"]]] +"hotshot_query_service":[["impl<Types> Sync for LeafId<Types>",1,["hotshot_query_service::availability::data_source::LeafId"]],["impl<Types> Sync for BlockId<Types>",1,["hotshot_query_service::availability::data_source::BlockId"]],["impl<T> !Sync for Fetch<T>",1,["hotshot_query_service::availability::fetch::Fetch"]],["impl<Types> Sync for LeafQueryData<Types>",1,["hotshot_query_service::availability::query_data::LeafQueryData"]],["impl<Types> Sync for InconsistentLeafError<Types>",1,["hotshot_query_service::availability::query_data::InconsistentLeafError"]],["impl<Types> Sync for BlockQueryData<Types>",1,["hotshot_query_service::availability::query_data::BlockQueryData"]],["impl<Types> Sync for PayloadQueryData<Types>",1,["hotshot_query_service::availability::query_data::PayloadQueryData"]],["impl<Types> Sync for TransactionQueryData<Types>where\n <<Types as NodeType>::BlockPayload as QueryablePayload>::InclusionProof: Sync,",1,["hotshot_query_service::availability::query_data::TransactionQueryData"]],["impl Sync for Options",1,["hotshot_query_service::availability::Options"]],["impl Sync for Error",1,["hotshot_query_service::availability::Error"]],["impl Sync for RequestSnafu",1,["hotshot_query_service::availability::RequestSnafu"]],["impl<__T0> Sync for FetchLeafSnafu<__T0>where\n __T0: Sync,",1,["hotshot_query_service::availability::FetchLeafSnafu"]],["impl<__T0> Sync for FetchBlockSnafu<__T0>where\n __T0: Sync,",1,["hotshot_query_service::availability::FetchBlockSnafu"]],["impl<__T0> Sync for FetchTransactionSnafu<__T0>where\n __T0: Sync,",1,["hotshot_query_service::availability::FetchTransactionSnafu"]],["impl<__T0, __T1> Sync for InvalidTransactionIndexSnafu<__T0, __T1>where\n __T0: Sync,\n __T1: Sync,",1,["hotshot_query_service::availability::InvalidTransactionIndexSnafu"]],["impl<__T0, __T1> Sync for CustomSnafu<__T0, __T1>where\n __T0: Sync,\n __T1: Sync,",1,["hotshot_query_service::availability::CustomSnafu"]],["impl<D, U> Sync for ExtensibleDataSource<D, U>where\n D: Sync,\n U: Sync,",1,["hotshot_query_service::data_source::extension::ExtensibleDataSource"]],["impl<Types, S, P> Sync for Builder<Types, S, P>where\n P: Sync,\n S: Sync,\n Types: Sync,",1,["hotshot_query_service::data_source::fetching::Builder"]],["impl<Types, S, P> Sync for FetchingDataSource<Types, S, P>where\n P: Send + Sync,\n S: Send + Sync,",1,["hotshot_query_service::data_source::fetching::FetchingDataSource"]],["impl<'a, Types, S> Sync for StorageReadGuard<'a, Types, S>where\n S: Sync,",1,["hotshot_query_service::data_source::fetching::StorageReadGuard"]],["impl<'a, Types, S> Sync for StorageWriteGuard<'a, Types, S>where\n S: Sync,",1,["hotshot_query_service::data_source::fetching::StorageWriteGuard"]],["impl<Types> Sync for BlockRequest<Types>",1,["hotshot_query_service::data_source::fetching::BlockRequest"]],["impl Sync for MetricsDataSource",1,["hotshot_query_service::data_source::metrics::MetricsDataSource"]],["impl<Types> Sync for FileSystemStorage<Types>",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorage"]],["impl Sync for Config",1,["hotshot_query_service::data_source::storage::sql::Config"]],["impl Sync for SqlStorage",1,["hotshot_query_service::data_source::storage::sql::SqlStorage"]],["impl<'a> Sync for Transaction<'a>",1,["hotshot_query_service::data_source::storage::sql::Transaction"]],["impl Sync for Error",1,["hotshot_query_service::error::Error"]],["impl<Types> Sync for AnyProvider<Types>",1,["hotshot_query_service::fetching::provider::any::AnyProvider"]],["impl Sync for QueryServiceProvider",1,["hotshot_query_service::fetching::provider::query_service::QueryServiceProvider"]],["impl Sync for NoFetching",1,["hotshot_query_service::fetching::provider::NoFetching"]],["impl Sync for PayloadRequest",1,["hotshot_query_service::fetching::request::PayloadRequest"]],["impl Sync for LeafRequest",1,["hotshot_query_service::fetching::request::LeafRequest"]],["impl<T, C> Sync for Fetcher<T, C>where\n C: Send,\n T: Send,",1,["hotshot_query_service::fetching::Fetcher"]],["impl Sync for MetricsError",1,["hotshot_query_service::metrics::MetricsError"]],["impl Sync for PrometheusMetrics",1,["hotshot_query_service::metrics::PrometheusMetrics"]],["impl Sync for Counter",1,["hotshot_query_service::metrics::Counter"]],["impl Sync for Gauge",1,["hotshot_query_service::metrics::Gauge"]],["impl Sync for Histogram",1,["hotshot_query_service::metrics::Histogram"]],["impl Sync for Label",1,["hotshot_query_service::metrics::Label"]],["impl Sync for Options",1,["hotshot_query_service::node::Options"]],["impl Sync for Error",1,["hotshot_query_service::node::Error"]],["impl Sync for RequestSnafu",1,["hotshot_query_service::node::RequestSnafu"]],["impl Sync for QuerySnafu",1,["hotshot_query_service::node::QuerySnafu"]],["impl<__T0> Sync for QueryProposalsSnafu<__T0>where\n __T0: Sync,",1,["hotshot_query_service::node::QueryProposalsSnafu"]],["impl Sync for InvalidSignatureKeySnafu",1,["hotshot_query_service::node::InvalidSignatureKeySnafu"]],["impl<__T0, __T1> Sync for CustomSnafu<__T0, __T1>where\n __T0: Sync,\n __T1: Sync,",1,["hotshot_query_service::node::CustomSnafu"]],["impl Sync for MempoolQueryData",1,["hotshot_query_service::status::query_data::MempoolQueryData"]],["impl Sync for Options",1,["hotshot_query_service::status::Options"]],["impl Sync for Error",1,["hotshot_query_service::status::Error"]],["impl Sync for QueryError",1,["hotshot_query_service::QueryError"]],["impl Sync for NotFoundSnafu",1,["hotshot_query_service::NotFoundSnafu"]],["impl Sync for MissingSnafu",1,["hotshot_query_service::MissingSnafu"]],["impl<__T0> Sync for Snafu<__T0>where\n __T0: Sync,",1,["hotshot_query_service::Snafu"]],["impl Sync for Options",1,["hotshot_query_service::Options"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Unpin.js b/trait.impl/core/marker/trait.Unpin.js index 795d0151f..b86639514 100644 --- a/trait.impl/core/marker/trait.Unpin.js +++ b/trait.impl/core/marker/trait.Unpin.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl<Types> Unpin for LeafId<Types>",1,["hotshot_query_service::availability::data_source::LeafId"]],["impl<Types> Unpin for BlockId<Types>",1,["hotshot_query_service::availability::data_source::BlockId"]],["impl<T> Unpin for Fetch<T>where\n T: Unpin,",1,["hotshot_query_service::availability::fetch::Fetch"]],["impl<Types> Unpin for LeafQueryData<Types>where\n Types: Unpin,\n <Types as NodeType>::BlockHeader: Unpin,\n <Types as NodeType>::BlockPayload: Unpin,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QCType: Unpin,\n <Types as NodeType>::SignatureKey: Unpin,\n <Types as NodeType>::Time: Unpin,",1,["hotshot_query_service::availability::query_data::LeafQueryData"]],["impl<Types> Unpin for InconsistentLeafError<Types>",1,["hotshot_query_service::availability::query_data::InconsistentLeafError"]],["impl<Types> Unpin for BlockQueryData<Types>where\n <Types as NodeType>::BlockHeader: Unpin,\n <Types as NodeType>::BlockPayload: Unpin,",1,["hotshot_query_service::availability::query_data::BlockQueryData"]],["impl<Types> Unpin for PayloadQueryData<Types>where\n <Types as NodeType>::BlockPayload: Unpin,",1,["hotshot_query_service::availability::query_data::PayloadQueryData"]],["impl<Types> Unpin for TransactionQueryData<Types>where\n <<Types as NodeType>::BlockPayload as QueryablePayload>::InclusionProof: Unpin,\n <Types as NodeType>::Transaction: Unpin,",1,["hotshot_query_service::availability::query_data::TransactionQueryData"]],["impl Unpin for Options",1,["hotshot_query_service::availability::Options"]],["impl Unpin for Error",1,["hotshot_query_service::availability::Error"]],["impl Unpin for RequestSnafu",1,["hotshot_query_service::availability::RequestSnafu"]],["impl<__T0> Unpin for FetchLeafSnafu<__T0>where\n __T0: Unpin,",1,["hotshot_query_service::availability::FetchLeafSnafu"]],["impl<__T0> Unpin for FetchBlockSnafu<__T0>where\n __T0: Unpin,",1,["hotshot_query_service::availability::FetchBlockSnafu"]],["impl<__T0> Unpin for FetchTransactionSnafu<__T0>where\n __T0: Unpin,",1,["hotshot_query_service::availability::FetchTransactionSnafu"]],["impl<__T0, __T1> Unpin for InvalidTransactionIndexSnafu<__T0, __T1>where\n __T0: Unpin,\n __T1: Unpin,",1,["hotshot_query_service::availability::InvalidTransactionIndexSnafu"]],["impl<__T0, __T1> Unpin for CustomSnafu<__T0, __T1>where\n __T0: Unpin,\n __T1: Unpin,",1,["hotshot_query_service::availability::CustomSnafu"]],["impl<D, U> Unpin for ExtensibleDataSource<D, U>where\n D: Unpin,\n U: Unpin,",1,["hotshot_query_service::data_source::extension::ExtensibleDataSource"]],["impl<Types, S, P> Unpin for FetchingDataSource<Types, S, P>",1,["hotshot_query_service::data_source::fetching::FetchingDataSource"]],["impl Unpin for MetricsDataSource",1,["hotshot_query_service::data_source::metrics::MetricsDataSource"]],["impl<Types> Unpin for FileSystemStorage<Types>where\n Types: Unpin,\n <Types as NodeType>::BlockHeader: Unpin,\n <Types as NodeType>::BlockPayload: Unpin,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QCType: Unpin,\n <Types as NodeType>::SignatureKey: Unpin,\n <Types as NodeType>::Time: Unpin,\n <<Types as NodeType>::BlockPayload as QueryablePayload>::TransactionIndex: Unpin,",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorage"]],["impl Unpin for Config",1,["hotshot_query_service::data_source::storage::sql::Config"]],["impl Unpin for SqlStorage",1,["hotshot_query_service::data_source::storage::sql::SqlStorage"]],["impl<'a> Unpin for Transaction<'a>",1,["hotshot_query_service::data_source::storage::sql::Transaction"]],["impl Unpin for Error",1,["hotshot_query_service::error::Error"]],["impl<Types> Unpin for AnyProvider<Types>",1,["hotshot_query_service::fetching::provider::any::AnyProvider"]],["impl Unpin for QueryServiceProvider",1,["hotshot_query_service::fetching::provider::query_service::QueryServiceProvider"]],["impl Unpin for NoFetching",1,["hotshot_query_service::fetching::provider::NoFetching"]],["impl Unpin for PayloadRequest",1,["hotshot_query_service::fetching::request::PayloadRequest"]],["impl Unpin for LeafRequest",1,["hotshot_query_service::fetching::request::LeafRequest"]],["impl<T, C> Unpin for Fetcher<T, C>",1,["hotshot_query_service::fetching::Fetcher"]],["impl Unpin for MetricsError",1,["hotshot_query_service::metrics::MetricsError"]],["impl Unpin for PrometheusMetrics",1,["hotshot_query_service::metrics::PrometheusMetrics"]],["impl Unpin for Counter",1,["hotshot_query_service::metrics::Counter"]],["impl Unpin for Gauge",1,["hotshot_query_service::metrics::Gauge"]],["impl Unpin for Histogram",1,["hotshot_query_service::metrics::Histogram"]],["impl Unpin for Label",1,["hotshot_query_service::metrics::Label"]],["impl Unpin for Options",1,["hotshot_query_service::node::Options"]],["impl Unpin for Error",1,["hotshot_query_service::node::Error"]],["impl Unpin for RequestSnafu",1,["hotshot_query_service::node::RequestSnafu"]],["impl Unpin for QuerySnafu",1,["hotshot_query_service::node::QuerySnafu"]],["impl<__T0> Unpin for QueryProposalsSnafu<__T0>where\n __T0: Unpin,",1,["hotshot_query_service::node::QueryProposalsSnafu"]],["impl Unpin for InvalidSignatureKeySnafu",1,["hotshot_query_service::node::InvalidSignatureKeySnafu"]],["impl<__T0, __T1> Unpin for CustomSnafu<__T0, __T1>where\n __T0: Unpin,\n __T1: Unpin,",1,["hotshot_query_service::node::CustomSnafu"]],["impl Unpin for MempoolQueryData",1,["hotshot_query_service::status::query_data::MempoolQueryData"]],["impl Unpin for Options",1,["hotshot_query_service::status::Options"]],["impl Unpin for Error",1,["hotshot_query_service::status::Error"]],["impl Unpin for QueryError",1,["hotshot_query_service::QueryError"]],["impl Unpin for NotFoundSnafu",1,["hotshot_query_service::NotFoundSnafu"]],["impl Unpin for MissingSnafu",1,["hotshot_query_service::MissingSnafu"]],["impl<__T0> Unpin for Snafu<__T0>where\n __T0: Unpin,",1,["hotshot_query_service::Snafu"]],["impl Unpin for Options",1,["hotshot_query_service::Options"]]] +"hotshot_query_service":[["impl<Types> Unpin for LeafId<Types>",1,["hotshot_query_service::availability::data_source::LeafId"]],["impl<Types> Unpin for BlockId<Types>",1,["hotshot_query_service::availability::data_source::BlockId"]],["impl<T> Unpin for Fetch<T>where\n T: Unpin,",1,["hotshot_query_service::availability::fetch::Fetch"]],["impl<Types> Unpin for LeafQueryData<Types>where\n Types: Unpin,\n <Types as NodeType>::BlockHeader: Unpin,\n <Types as NodeType>::BlockPayload: Unpin,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QCType: Unpin,\n <Types as NodeType>::SignatureKey: Unpin,\n <Types as NodeType>::Time: Unpin,",1,["hotshot_query_service::availability::query_data::LeafQueryData"]],["impl<Types> Unpin for InconsistentLeafError<Types>",1,["hotshot_query_service::availability::query_data::InconsistentLeafError"]],["impl<Types> Unpin for BlockQueryData<Types>where\n <Types as NodeType>::BlockHeader: Unpin,\n <Types as NodeType>::BlockPayload: Unpin,",1,["hotshot_query_service::availability::query_data::BlockQueryData"]],["impl<Types> Unpin for PayloadQueryData<Types>where\n <Types as NodeType>::BlockPayload: Unpin,",1,["hotshot_query_service::availability::query_data::PayloadQueryData"]],["impl<Types> Unpin for TransactionQueryData<Types>where\n <<Types as NodeType>::BlockPayload as QueryablePayload>::InclusionProof: Unpin,\n <Types as NodeType>::Transaction: Unpin,",1,["hotshot_query_service::availability::query_data::TransactionQueryData"]],["impl Unpin for Options",1,["hotshot_query_service::availability::Options"]],["impl Unpin for Error",1,["hotshot_query_service::availability::Error"]],["impl Unpin for RequestSnafu",1,["hotshot_query_service::availability::RequestSnafu"]],["impl<__T0> Unpin for FetchLeafSnafu<__T0>where\n __T0: Unpin,",1,["hotshot_query_service::availability::FetchLeafSnafu"]],["impl<__T0> Unpin for FetchBlockSnafu<__T0>where\n __T0: Unpin,",1,["hotshot_query_service::availability::FetchBlockSnafu"]],["impl<__T0> Unpin for FetchTransactionSnafu<__T0>where\n __T0: Unpin,",1,["hotshot_query_service::availability::FetchTransactionSnafu"]],["impl<__T0, __T1> Unpin for InvalidTransactionIndexSnafu<__T0, __T1>where\n __T0: Unpin,\n __T1: Unpin,",1,["hotshot_query_service::availability::InvalidTransactionIndexSnafu"]],["impl<__T0, __T1> Unpin for CustomSnafu<__T0, __T1>where\n __T0: Unpin,\n __T1: Unpin,",1,["hotshot_query_service::availability::CustomSnafu"]],["impl<D, U> Unpin for ExtensibleDataSource<D, U>where\n D: Unpin,\n U: Unpin,",1,["hotshot_query_service::data_source::extension::ExtensibleDataSource"]],["impl<Types, S, P> Unpin for Builder<Types, S, P>where\n P: Unpin,\n S: Unpin,\n Types: Unpin,",1,["hotshot_query_service::data_source::fetching::Builder"]],["impl<Types, S, P> Unpin for FetchingDataSource<Types, S, P>",1,["hotshot_query_service::data_source::fetching::FetchingDataSource"]],["impl<'a, Types, S> Unpin for StorageReadGuard<'a, Types, S>",1,["hotshot_query_service::data_source::fetching::StorageReadGuard"]],["impl<'a, Types, S> Unpin for StorageWriteGuard<'a, Types, S>",1,["hotshot_query_service::data_source::fetching::StorageWriteGuard"]],["impl<Types> Unpin for BlockRequest<Types>",1,["hotshot_query_service::data_source::fetching::BlockRequest"]],["impl Unpin for MetricsDataSource",1,["hotshot_query_service::data_source::metrics::MetricsDataSource"]],["impl<Types> Unpin for FileSystemStorage<Types>where\n Types: Unpin,\n <Types as NodeType>::BlockHeader: Unpin,\n <Types as NodeType>::BlockPayload: Unpin,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QCType: Unpin,\n <Types as NodeType>::SignatureKey: Unpin,\n <Types as NodeType>::Time: Unpin,\n <<Types as NodeType>::BlockPayload as QueryablePayload>::TransactionIndex: Unpin,",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorage"]],["impl Unpin for Config",1,["hotshot_query_service::data_source::storage::sql::Config"]],["impl Unpin for SqlStorage",1,["hotshot_query_service::data_source::storage::sql::SqlStorage"]],["impl<'a> Unpin for Transaction<'a>",1,["hotshot_query_service::data_source::storage::sql::Transaction"]],["impl Unpin for Error",1,["hotshot_query_service::error::Error"]],["impl<Types> Unpin for AnyProvider<Types>",1,["hotshot_query_service::fetching::provider::any::AnyProvider"]],["impl Unpin for QueryServiceProvider",1,["hotshot_query_service::fetching::provider::query_service::QueryServiceProvider"]],["impl Unpin for NoFetching",1,["hotshot_query_service::fetching::provider::NoFetching"]],["impl Unpin for PayloadRequest",1,["hotshot_query_service::fetching::request::PayloadRequest"]],["impl Unpin for LeafRequest",1,["hotshot_query_service::fetching::request::LeafRequest"]],["impl<T, C> Unpin for Fetcher<T, C>",1,["hotshot_query_service::fetching::Fetcher"]],["impl Unpin for MetricsError",1,["hotshot_query_service::metrics::MetricsError"]],["impl Unpin for PrometheusMetrics",1,["hotshot_query_service::metrics::PrometheusMetrics"]],["impl Unpin for Counter",1,["hotshot_query_service::metrics::Counter"]],["impl Unpin for Gauge",1,["hotshot_query_service::metrics::Gauge"]],["impl Unpin for Histogram",1,["hotshot_query_service::metrics::Histogram"]],["impl Unpin for Label",1,["hotshot_query_service::metrics::Label"]],["impl Unpin for Options",1,["hotshot_query_service::node::Options"]],["impl Unpin for Error",1,["hotshot_query_service::node::Error"]],["impl Unpin for RequestSnafu",1,["hotshot_query_service::node::RequestSnafu"]],["impl Unpin for QuerySnafu",1,["hotshot_query_service::node::QuerySnafu"]],["impl<__T0> Unpin for QueryProposalsSnafu<__T0>where\n __T0: Unpin,",1,["hotshot_query_service::node::QueryProposalsSnafu"]],["impl Unpin for InvalidSignatureKeySnafu",1,["hotshot_query_service::node::InvalidSignatureKeySnafu"]],["impl<__T0, __T1> Unpin for CustomSnafu<__T0, __T1>where\n __T0: Unpin,\n __T1: Unpin,",1,["hotshot_query_service::node::CustomSnafu"]],["impl Unpin for MempoolQueryData",1,["hotshot_query_service::status::query_data::MempoolQueryData"]],["impl Unpin for Options",1,["hotshot_query_service::status::Options"]],["impl Unpin for Error",1,["hotshot_query_service::status::Error"]],["impl Unpin for QueryError",1,["hotshot_query_service::QueryError"]],["impl Unpin for NotFoundSnafu",1,["hotshot_query_service::NotFoundSnafu"]],["impl Unpin for MissingSnafu",1,["hotshot_query_service::MissingSnafu"]],["impl<__T0> Unpin for Snafu<__T0>where\n __T0: Unpin,",1,["hotshot_query_service::Snafu"]],["impl Unpin for Options",1,["hotshot_query_service::Options"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/ops/deref/trait.Deref.js b/trait.impl/core/ops/deref/trait.Deref.js new file mode 100644 index 000000000..8a9804399 --- /dev/null +++ b/trait.impl/core/ops/deref/trait.Deref.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"hotshot_query_service":[["impl<'a, Types, S> Deref for StorageReadGuard<'a, Types, S>where\n Types: NodeType,"],["impl<'a, Types, S> Deref for StorageWriteGuard<'a, Types, S>where\n Types: NodeType,"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/ops/deref/trait.DerefMut.js b/trait.impl/core/ops/deref/trait.DerefMut.js new file mode 100644 index 000000000..89dc3d31a --- /dev/null +++ b/trait.impl/core/ops/deref/trait.DerefMut.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"hotshot_query_service":[["impl<'a, Types, S> DerefMut for StorageWriteGuard<'a, Types, S>where\n Types: NodeType,"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js index eaa10289e..2af335679 100644 --- a/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl<Types> RefUnwindSafe for LeafId<Types>",1,["hotshot_query_service::availability::data_source::LeafId"]],["impl<Types> RefUnwindSafe for BlockId<Types>",1,["hotshot_query_service::availability::data_source::BlockId"]],["impl<T> !RefUnwindSafe for Fetch<T>",1,["hotshot_query_service::availability::fetch::Fetch"]],["impl<Types> RefUnwindSafe for LeafQueryData<Types>where\n Types: RefUnwindSafe,\n <Types as NodeType>::BlockHeader: RefUnwindSafe,\n <Types as NodeType>::BlockPayload: RefUnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QCType: RefUnwindSafe,\n <Types as NodeType>::SignatureKey: RefUnwindSafe,\n <Types as NodeType>::Time: RefUnwindSafe,",1,["hotshot_query_service::availability::query_data::LeafQueryData"]],["impl<Types> RefUnwindSafe for InconsistentLeafError<Types>",1,["hotshot_query_service::availability::query_data::InconsistentLeafError"]],["impl<Types> RefUnwindSafe for BlockQueryData<Types>where\n <Types as NodeType>::BlockHeader: RefUnwindSafe,\n <Types as NodeType>::BlockPayload: RefUnwindSafe,",1,["hotshot_query_service::availability::query_data::BlockQueryData"]],["impl<Types> RefUnwindSafe for PayloadQueryData<Types>where\n <Types as NodeType>::BlockPayload: RefUnwindSafe,",1,["hotshot_query_service::availability::query_data::PayloadQueryData"]],["impl<Types> RefUnwindSafe for TransactionQueryData<Types>where\n <<Types as NodeType>::BlockPayload as QueryablePayload>::InclusionProof: RefUnwindSafe,\n <Types as NodeType>::Transaction: RefUnwindSafe,",1,["hotshot_query_service::availability::query_data::TransactionQueryData"]],["impl RefUnwindSafe for Options",1,["hotshot_query_service::availability::Options"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::availability::Error"]],["impl RefUnwindSafe for RequestSnafu",1,["hotshot_query_service::availability::RequestSnafu"]],["impl<__T0> RefUnwindSafe for FetchLeafSnafu<__T0>where\n __T0: RefUnwindSafe,",1,["hotshot_query_service::availability::FetchLeafSnafu"]],["impl<__T0> RefUnwindSafe for FetchBlockSnafu<__T0>where\n __T0: RefUnwindSafe,",1,["hotshot_query_service::availability::FetchBlockSnafu"]],["impl<__T0> RefUnwindSafe for FetchTransactionSnafu<__T0>where\n __T0: RefUnwindSafe,",1,["hotshot_query_service::availability::FetchTransactionSnafu"]],["impl<__T0, __T1> RefUnwindSafe for InvalidTransactionIndexSnafu<__T0, __T1>where\n __T0: RefUnwindSafe,\n __T1: RefUnwindSafe,",1,["hotshot_query_service::availability::InvalidTransactionIndexSnafu"]],["impl<__T0, __T1> RefUnwindSafe for CustomSnafu<__T0, __T1>where\n __T0: RefUnwindSafe,\n __T1: RefUnwindSafe,",1,["hotshot_query_service::availability::CustomSnafu"]],["impl<D, U> RefUnwindSafe for ExtensibleDataSource<D, U>where\n D: RefUnwindSafe,\n U: RefUnwindSafe,",1,["hotshot_query_service::data_source::extension::ExtensibleDataSource"]],["impl<Types, S, P> !RefUnwindSafe for FetchingDataSource<Types, S, P>",1,["hotshot_query_service::data_source::fetching::FetchingDataSource"]],["impl !RefUnwindSafe for MetricsDataSource",1,["hotshot_query_service::data_source::metrics::MetricsDataSource"]],["impl<Types> RefUnwindSafe for FileSystemStorage<Types>where\n Types: RefUnwindSafe,\n <Types as NodeType>::BlockHeader: RefUnwindSafe,\n <Types as NodeType>::BlockPayload: RefUnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QCType: RefUnwindSafe,\n <Types as NodeType>::SignatureKey: RefUnwindSafe,\n <Types as NodeType>::Time: RefUnwindSafe,\n <<Types as NodeType>::BlockPayload as QueryablePayload>::TransactionIndex: RefUnwindSafe,",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorage"]],["impl RefUnwindSafe for Config",1,["hotshot_query_service::data_source::storage::sql::Config"]],["impl !RefUnwindSafe for SqlStorage",1,["hotshot_query_service::data_source::storage::sql::SqlStorage"]],["impl<'a> !RefUnwindSafe for Transaction<'a>",1,["hotshot_query_service::data_source::storage::sql::Transaction"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::error::Error"]],["impl<Types> !RefUnwindSafe for AnyProvider<Types>",1,["hotshot_query_service::fetching::provider::any::AnyProvider"]],["impl !RefUnwindSafe for QueryServiceProvider",1,["hotshot_query_service::fetching::provider::query_service::QueryServiceProvider"]],["impl RefUnwindSafe for NoFetching",1,["hotshot_query_service::fetching::provider::NoFetching"]],["impl RefUnwindSafe for PayloadRequest",1,["hotshot_query_service::fetching::request::PayloadRequest"]],["impl RefUnwindSafe for LeafRequest",1,["hotshot_query_service::fetching::request::LeafRequest"]],["impl<T, C> !RefUnwindSafe for Fetcher<T, C>",1,["hotshot_query_service::fetching::Fetcher"]],["impl !RefUnwindSafe for MetricsError",1,["hotshot_query_service::metrics::MetricsError"]],["impl !RefUnwindSafe for PrometheusMetrics",1,["hotshot_query_service::metrics::PrometheusMetrics"]],["impl RefUnwindSafe for Counter",1,["hotshot_query_service::metrics::Counter"]],["impl RefUnwindSafe for Gauge",1,["hotshot_query_service::metrics::Gauge"]],["impl RefUnwindSafe for Histogram",1,["hotshot_query_service::metrics::Histogram"]],["impl RefUnwindSafe for Label",1,["hotshot_query_service::metrics::Label"]],["impl RefUnwindSafe for Options",1,["hotshot_query_service::node::Options"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::node::Error"]],["impl RefUnwindSafe for RequestSnafu",1,["hotshot_query_service::node::RequestSnafu"]],["impl RefUnwindSafe for QuerySnafu",1,["hotshot_query_service::node::QuerySnafu"]],["impl<__T0> RefUnwindSafe for QueryProposalsSnafu<__T0>where\n __T0: RefUnwindSafe,",1,["hotshot_query_service::node::QueryProposalsSnafu"]],["impl RefUnwindSafe for InvalidSignatureKeySnafu",1,["hotshot_query_service::node::InvalidSignatureKeySnafu"]],["impl<__T0, __T1> RefUnwindSafe for CustomSnafu<__T0, __T1>where\n __T0: RefUnwindSafe,\n __T1: RefUnwindSafe,",1,["hotshot_query_service::node::CustomSnafu"]],["impl RefUnwindSafe for MempoolQueryData",1,["hotshot_query_service::status::query_data::MempoolQueryData"]],["impl RefUnwindSafe for Options",1,["hotshot_query_service::status::Options"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::status::Error"]],["impl RefUnwindSafe for QueryError",1,["hotshot_query_service::QueryError"]],["impl RefUnwindSafe for NotFoundSnafu",1,["hotshot_query_service::NotFoundSnafu"]],["impl RefUnwindSafe for MissingSnafu",1,["hotshot_query_service::MissingSnafu"]],["impl<__T0> RefUnwindSafe for Snafu<__T0>where\n __T0: RefUnwindSafe,",1,["hotshot_query_service::Snafu"]],["impl RefUnwindSafe for Options",1,["hotshot_query_service::Options"]]] +"hotshot_query_service":[["impl<Types> RefUnwindSafe for LeafId<Types>",1,["hotshot_query_service::availability::data_source::LeafId"]],["impl<Types> RefUnwindSafe for BlockId<Types>",1,["hotshot_query_service::availability::data_source::BlockId"]],["impl<T> !RefUnwindSafe for Fetch<T>",1,["hotshot_query_service::availability::fetch::Fetch"]],["impl<Types> RefUnwindSafe for LeafQueryData<Types>where\n Types: RefUnwindSafe,\n <Types as NodeType>::BlockHeader: RefUnwindSafe,\n <Types as NodeType>::BlockPayload: RefUnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QCType: RefUnwindSafe,\n <Types as NodeType>::SignatureKey: RefUnwindSafe,\n <Types as NodeType>::Time: RefUnwindSafe,",1,["hotshot_query_service::availability::query_data::LeafQueryData"]],["impl<Types> RefUnwindSafe for InconsistentLeafError<Types>",1,["hotshot_query_service::availability::query_data::InconsistentLeafError"]],["impl<Types> RefUnwindSafe for BlockQueryData<Types>where\n <Types as NodeType>::BlockHeader: RefUnwindSafe,\n <Types as NodeType>::BlockPayload: RefUnwindSafe,",1,["hotshot_query_service::availability::query_data::BlockQueryData"]],["impl<Types> RefUnwindSafe for PayloadQueryData<Types>where\n <Types as NodeType>::BlockPayload: RefUnwindSafe,",1,["hotshot_query_service::availability::query_data::PayloadQueryData"]],["impl<Types> RefUnwindSafe for TransactionQueryData<Types>where\n <<Types as NodeType>::BlockPayload as QueryablePayload>::InclusionProof: RefUnwindSafe,\n <Types as NodeType>::Transaction: RefUnwindSafe,",1,["hotshot_query_service::availability::query_data::TransactionQueryData"]],["impl RefUnwindSafe for Options",1,["hotshot_query_service::availability::Options"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::availability::Error"]],["impl RefUnwindSafe for RequestSnafu",1,["hotshot_query_service::availability::RequestSnafu"]],["impl<__T0> RefUnwindSafe for FetchLeafSnafu<__T0>where\n __T0: RefUnwindSafe,",1,["hotshot_query_service::availability::FetchLeafSnafu"]],["impl<__T0> RefUnwindSafe for FetchBlockSnafu<__T0>where\n __T0: RefUnwindSafe,",1,["hotshot_query_service::availability::FetchBlockSnafu"]],["impl<__T0> RefUnwindSafe for FetchTransactionSnafu<__T0>where\n __T0: RefUnwindSafe,",1,["hotshot_query_service::availability::FetchTransactionSnafu"]],["impl<__T0, __T1> RefUnwindSafe for InvalidTransactionIndexSnafu<__T0, __T1>where\n __T0: RefUnwindSafe,\n __T1: RefUnwindSafe,",1,["hotshot_query_service::availability::InvalidTransactionIndexSnafu"]],["impl<__T0, __T1> RefUnwindSafe for CustomSnafu<__T0, __T1>where\n __T0: RefUnwindSafe,\n __T1: RefUnwindSafe,",1,["hotshot_query_service::availability::CustomSnafu"]],["impl<D, U> RefUnwindSafe for ExtensibleDataSource<D, U>where\n D: RefUnwindSafe,\n U: RefUnwindSafe,",1,["hotshot_query_service::data_source::extension::ExtensibleDataSource"]],["impl<Types, S, P> RefUnwindSafe for Builder<Types, S, P>where\n P: RefUnwindSafe,\n S: RefUnwindSafe,\n Types: RefUnwindSafe,",1,["hotshot_query_service::data_source::fetching::Builder"]],["impl<Types, S, P> !RefUnwindSafe for FetchingDataSource<Types, S, P>",1,["hotshot_query_service::data_source::fetching::FetchingDataSource"]],["impl<'a, Types, S> !RefUnwindSafe for StorageReadGuard<'a, Types, S>",1,["hotshot_query_service::data_source::fetching::StorageReadGuard"]],["impl<'a, Types, S> !RefUnwindSafe for StorageWriteGuard<'a, Types, S>",1,["hotshot_query_service::data_source::fetching::StorageWriteGuard"]],["impl<Types> RefUnwindSafe for BlockRequest<Types>",1,["hotshot_query_service::data_source::fetching::BlockRequest"]],["impl !RefUnwindSafe for MetricsDataSource",1,["hotshot_query_service::data_source::metrics::MetricsDataSource"]],["impl<Types> RefUnwindSafe for FileSystemStorage<Types>where\n Types: RefUnwindSafe,\n <Types as NodeType>::BlockHeader: RefUnwindSafe,\n <Types as NodeType>::BlockPayload: RefUnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QCType: RefUnwindSafe,\n <Types as NodeType>::SignatureKey: RefUnwindSafe,\n <Types as NodeType>::Time: RefUnwindSafe,\n <<Types as NodeType>::BlockPayload as QueryablePayload>::TransactionIndex: RefUnwindSafe,",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorage"]],["impl RefUnwindSafe for Config",1,["hotshot_query_service::data_source::storage::sql::Config"]],["impl !RefUnwindSafe for SqlStorage",1,["hotshot_query_service::data_source::storage::sql::SqlStorage"]],["impl<'a> !RefUnwindSafe for Transaction<'a>",1,["hotshot_query_service::data_source::storage::sql::Transaction"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::error::Error"]],["impl<Types> !RefUnwindSafe for AnyProvider<Types>",1,["hotshot_query_service::fetching::provider::any::AnyProvider"]],["impl !RefUnwindSafe for QueryServiceProvider",1,["hotshot_query_service::fetching::provider::query_service::QueryServiceProvider"]],["impl RefUnwindSafe for NoFetching",1,["hotshot_query_service::fetching::provider::NoFetching"]],["impl RefUnwindSafe for PayloadRequest",1,["hotshot_query_service::fetching::request::PayloadRequest"]],["impl RefUnwindSafe for LeafRequest",1,["hotshot_query_service::fetching::request::LeafRequest"]],["impl<T, C> !RefUnwindSafe for Fetcher<T, C>",1,["hotshot_query_service::fetching::Fetcher"]],["impl !RefUnwindSafe for MetricsError",1,["hotshot_query_service::metrics::MetricsError"]],["impl !RefUnwindSafe for PrometheusMetrics",1,["hotshot_query_service::metrics::PrometheusMetrics"]],["impl RefUnwindSafe for Counter",1,["hotshot_query_service::metrics::Counter"]],["impl RefUnwindSafe for Gauge",1,["hotshot_query_service::metrics::Gauge"]],["impl RefUnwindSafe for Histogram",1,["hotshot_query_service::metrics::Histogram"]],["impl RefUnwindSafe for Label",1,["hotshot_query_service::metrics::Label"]],["impl RefUnwindSafe for Options",1,["hotshot_query_service::node::Options"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::node::Error"]],["impl RefUnwindSafe for RequestSnafu",1,["hotshot_query_service::node::RequestSnafu"]],["impl RefUnwindSafe for QuerySnafu",1,["hotshot_query_service::node::QuerySnafu"]],["impl<__T0> RefUnwindSafe for QueryProposalsSnafu<__T0>where\n __T0: RefUnwindSafe,",1,["hotshot_query_service::node::QueryProposalsSnafu"]],["impl RefUnwindSafe for InvalidSignatureKeySnafu",1,["hotshot_query_service::node::InvalidSignatureKeySnafu"]],["impl<__T0, __T1> RefUnwindSafe for CustomSnafu<__T0, __T1>where\n __T0: RefUnwindSafe,\n __T1: RefUnwindSafe,",1,["hotshot_query_service::node::CustomSnafu"]],["impl RefUnwindSafe for MempoolQueryData",1,["hotshot_query_service::status::query_data::MempoolQueryData"]],["impl RefUnwindSafe for Options",1,["hotshot_query_service::status::Options"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::status::Error"]],["impl RefUnwindSafe for QueryError",1,["hotshot_query_service::QueryError"]],["impl RefUnwindSafe for NotFoundSnafu",1,["hotshot_query_service::NotFoundSnafu"]],["impl RefUnwindSafe for MissingSnafu",1,["hotshot_query_service::MissingSnafu"]],["impl<__T0> RefUnwindSafe for Snafu<__T0>where\n __T0: RefUnwindSafe,",1,["hotshot_query_service::Snafu"]],["impl RefUnwindSafe for Options",1,["hotshot_query_service::Options"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js index bbad45916..e79d7d51c 100644 --- a/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js +++ b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl<Types> UnwindSafe for LeafId<Types>",1,["hotshot_query_service::availability::data_source::LeafId"]],["impl<Types> UnwindSafe for BlockId<Types>",1,["hotshot_query_service::availability::data_source::BlockId"]],["impl<T> !UnwindSafe for Fetch<T>",1,["hotshot_query_service::availability::fetch::Fetch"]],["impl<Types> UnwindSafe for LeafQueryData<Types>where\n Types: UnwindSafe,\n <Types as NodeType>::BlockHeader: UnwindSafe,\n <Types as NodeType>::BlockPayload: UnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QCType: UnwindSafe,\n <Types as NodeType>::SignatureKey: UnwindSafe,\n <Types as NodeType>::Time: UnwindSafe,",1,["hotshot_query_service::availability::query_data::LeafQueryData"]],["impl<Types> UnwindSafe for InconsistentLeafError<Types>",1,["hotshot_query_service::availability::query_data::InconsistentLeafError"]],["impl<Types> UnwindSafe for BlockQueryData<Types>where\n <Types as NodeType>::BlockHeader: UnwindSafe,\n <Types as NodeType>::BlockPayload: UnwindSafe,",1,["hotshot_query_service::availability::query_data::BlockQueryData"]],["impl<Types> UnwindSafe for PayloadQueryData<Types>where\n <Types as NodeType>::BlockPayload: UnwindSafe,",1,["hotshot_query_service::availability::query_data::PayloadQueryData"]],["impl<Types> UnwindSafe for TransactionQueryData<Types>where\n <<Types as NodeType>::BlockPayload as QueryablePayload>::InclusionProof: UnwindSafe,\n <Types as NodeType>::Transaction: UnwindSafe,",1,["hotshot_query_service::availability::query_data::TransactionQueryData"]],["impl UnwindSafe for Options",1,["hotshot_query_service::availability::Options"]],["impl UnwindSafe for Error",1,["hotshot_query_service::availability::Error"]],["impl UnwindSafe for RequestSnafu",1,["hotshot_query_service::availability::RequestSnafu"]],["impl<__T0> UnwindSafe for FetchLeafSnafu<__T0>where\n __T0: UnwindSafe,",1,["hotshot_query_service::availability::FetchLeafSnafu"]],["impl<__T0> UnwindSafe for FetchBlockSnafu<__T0>where\n __T0: UnwindSafe,",1,["hotshot_query_service::availability::FetchBlockSnafu"]],["impl<__T0> UnwindSafe for FetchTransactionSnafu<__T0>where\n __T0: UnwindSafe,",1,["hotshot_query_service::availability::FetchTransactionSnafu"]],["impl<__T0, __T1> UnwindSafe for InvalidTransactionIndexSnafu<__T0, __T1>where\n __T0: UnwindSafe,\n __T1: UnwindSafe,",1,["hotshot_query_service::availability::InvalidTransactionIndexSnafu"]],["impl<__T0, __T1> UnwindSafe for CustomSnafu<__T0, __T1>where\n __T0: UnwindSafe,\n __T1: UnwindSafe,",1,["hotshot_query_service::availability::CustomSnafu"]],["impl<D, U> UnwindSafe for ExtensibleDataSource<D, U>where\n D: UnwindSafe,\n U: UnwindSafe,",1,["hotshot_query_service::data_source::extension::ExtensibleDataSource"]],["impl<Types, S, P> !UnwindSafe for FetchingDataSource<Types, S, P>",1,["hotshot_query_service::data_source::fetching::FetchingDataSource"]],["impl !UnwindSafe for MetricsDataSource",1,["hotshot_query_service::data_source::metrics::MetricsDataSource"]],["impl<Types> UnwindSafe for FileSystemStorage<Types>where\n Types: UnwindSafe,\n <Types as NodeType>::BlockHeader: UnwindSafe,\n <Types as NodeType>::BlockPayload: UnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QCType: UnwindSafe,\n <Types as NodeType>::SignatureKey: UnwindSafe,\n <Types as NodeType>::Time: UnwindSafe,\n <<Types as NodeType>::BlockPayload as QueryablePayload>::TransactionIndex: UnwindSafe,",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorage"]],["impl UnwindSafe for Config",1,["hotshot_query_service::data_source::storage::sql::Config"]],["impl !UnwindSafe for SqlStorage",1,["hotshot_query_service::data_source::storage::sql::SqlStorage"]],["impl<'a> !UnwindSafe for Transaction<'a>",1,["hotshot_query_service::data_source::storage::sql::Transaction"]],["impl UnwindSafe for Error",1,["hotshot_query_service::error::Error"]],["impl<Types> !UnwindSafe for AnyProvider<Types>",1,["hotshot_query_service::fetching::provider::any::AnyProvider"]],["impl !UnwindSafe for QueryServiceProvider",1,["hotshot_query_service::fetching::provider::query_service::QueryServiceProvider"]],["impl UnwindSafe for NoFetching",1,["hotshot_query_service::fetching::provider::NoFetching"]],["impl UnwindSafe for PayloadRequest",1,["hotshot_query_service::fetching::request::PayloadRequest"]],["impl UnwindSafe for LeafRequest",1,["hotshot_query_service::fetching::request::LeafRequest"]],["impl<T, C> !UnwindSafe for Fetcher<T, C>",1,["hotshot_query_service::fetching::Fetcher"]],["impl !UnwindSafe for MetricsError",1,["hotshot_query_service::metrics::MetricsError"]],["impl !UnwindSafe for PrometheusMetrics",1,["hotshot_query_service::metrics::PrometheusMetrics"]],["impl UnwindSafe for Counter",1,["hotshot_query_service::metrics::Counter"]],["impl UnwindSafe for Gauge",1,["hotshot_query_service::metrics::Gauge"]],["impl UnwindSafe for Histogram",1,["hotshot_query_service::metrics::Histogram"]],["impl UnwindSafe for Label",1,["hotshot_query_service::metrics::Label"]],["impl UnwindSafe for Options",1,["hotshot_query_service::node::Options"]],["impl UnwindSafe for Error",1,["hotshot_query_service::node::Error"]],["impl UnwindSafe for RequestSnafu",1,["hotshot_query_service::node::RequestSnafu"]],["impl UnwindSafe for QuerySnafu",1,["hotshot_query_service::node::QuerySnafu"]],["impl<__T0> UnwindSafe for QueryProposalsSnafu<__T0>where\n __T0: UnwindSafe,",1,["hotshot_query_service::node::QueryProposalsSnafu"]],["impl UnwindSafe for InvalidSignatureKeySnafu",1,["hotshot_query_service::node::InvalidSignatureKeySnafu"]],["impl<__T0, __T1> UnwindSafe for CustomSnafu<__T0, __T1>where\n __T0: UnwindSafe,\n __T1: UnwindSafe,",1,["hotshot_query_service::node::CustomSnafu"]],["impl UnwindSafe for MempoolQueryData",1,["hotshot_query_service::status::query_data::MempoolQueryData"]],["impl UnwindSafe for Options",1,["hotshot_query_service::status::Options"]],["impl UnwindSafe for Error",1,["hotshot_query_service::status::Error"]],["impl UnwindSafe for QueryError",1,["hotshot_query_service::QueryError"]],["impl UnwindSafe for NotFoundSnafu",1,["hotshot_query_service::NotFoundSnafu"]],["impl UnwindSafe for MissingSnafu",1,["hotshot_query_service::MissingSnafu"]],["impl<__T0> UnwindSafe for Snafu<__T0>where\n __T0: UnwindSafe,",1,["hotshot_query_service::Snafu"]],["impl UnwindSafe for Options",1,["hotshot_query_service::Options"]]] +"hotshot_query_service":[["impl<Types> UnwindSafe for LeafId<Types>",1,["hotshot_query_service::availability::data_source::LeafId"]],["impl<Types> UnwindSafe for BlockId<Types>",1,["hotshot_query_service::availability::data_source::BlockId"]],["impl<T> !UnwindSafe for Fetch<T>",1,["hotshot_query_service::availability::fetch::Fetch"]],["impl<Types> UnwindSafe for LeafQueryData<Types>where\n Types: UnwindSafe,\n <Types as NodeType>::BlockHeader: UnwindSafe,\n <Types as NodeType>::BlockPayload: UnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QCType: UnwindSafe,\n <Types as NodeType>::SignatureKey: UnwindSafe,\n <Types as NodeType>::Time: UnwindSafe,",1,["hotshot_query_service::availability::query_data::LeafQueryData"]],["impl<Types> UnwindSafe for InconsistentLeafError<Types>",1,["hotshot_query_service::availability::query_data::InconsistentLeafError"]],["impl<Types> UnwindSafe for BlockQueryData<Types>where\n <Types as NodeType>::BlockHeader: UnwindSafe,\n <Types as NodeType>::BlockPayload: UnwindSafe,",1,["hotshot_query_service::availability::query_data::BlockQueryData"]],["impl<Types> UnwindSafe for PayloadQueryData<Types>where\n <Types as NodeType>::BlockPayload: UnwindSafe,",1,["hotshot_query_service::availability::query_data::PayloadQueryData"]],["impl<Types> UnwindSafe for TransactionQueryData<Types>where\n <<Types as NodeType>::BlockPayload as QueryablePayload>::InclusionProof: UnwindSafe,\n <Types as NodeType>::Transaction: UnwindSafe,",1,["hotshot_query_service::availability::query_data::TransactionQueryData"]],["impl UnwindSafe for Options",1,["hotshot_query_service::availability::Options"]],["impl UnwindSafe for Error",1,["hotshot_query_service::availability::Error"]],["impl UnwindSafe for RequestSnafu",1,["hotshot_query_service::availability::RequestSnafu"]],["impl<__T0> UnwindSafe for FetchLeafSnafu<__T0>where\n __T0: UnwindSafe,",1,["hotshot_query_service::availability::FetchLeafSnafu"]],["impl<__T0> UnwindSafe for FetchBlockSnafu<__T0>where\n __T0: UnwindSafe,",1,["hotshot_query_service::availability::FetchBlockSnafu"]],["impl<__T0> UnwindSafe for FetchTransactionSnafu<__T0>where\n __T0: UnwindSafe,",1,["hotshot_query_service::availability::FetchTransactionSnafu"]],["impl<__T0, __T1> UnwindSafe for InvalidTransactionIndexSnafu<__T0, __T1>where\n __T0: UnwindSafe,\n __T1: UnwindSafe,",1,["hotshot_query_service::availability::InvalidTransactionIndexSnafu"]],["impl<__T0, __T1> UnwindSafe for CustomSnafu<__T0, __T1>where\n __T0: UnwindSafe,\n __T1: UnwindSafe,",1,["hotshot_query_service::availability::CustomSnafu"]],["impl<D, U> UnwindSafe for ExtensibleDataSource<D, U>where\n D: UnwindSafe,\n U: UnwindSafe,",1,["hotshot_query_service::data_source::extension::ExtensibleDataSource"]],["impl<Types, S, P> UnwindSafe for Builder<Types, S, P>where\n P: UnwindSafe,\n S: UnwindSafe,\n Types: UnwindSafe,",1,["hotshot_query_service::data_source::fetching::Builder"]],["impl<Types, S, P> !UnwindSafe for FetchingDataSource<Types, S, P>",1,["hotshot_query_service::data_source::fetching::FetchingDataSource"]],["impl<'a, Types, S> !UnwindSafe for StorageReadGuard<'a, Types, S>",1,["hotshot_query_service::data_source::fetching::StorageReadGuard"]],["impl<'a, Types, S> !UnwindSafe for StorageWriteGuard<'a, Types, S>",1,["hotshot_query_service::data_source::fetching::StorageWriteGuard"]],["impl<Types> UnwindSafe for BlockRequest<Types>",1,["hotshot_query_service::data_source::fetching::BlockRequest"]],["impl !UnwindSafe for MetricsDataSource",1,["hotshot_query_service::data_source::metrics::MetricsDataSource"]],["impl<Types> UnwindSafe for FileSystemStorage<Types>where\n Types: UnwindSafe,\n <Types as NodeType>::BlockHeader: UnwindSafe,\n <Types as NodeType>::BlockPayload: UnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QCType: UnwindSafe,\n <Types as NodeType>::SignatureKey: UnwindSafe,\n <Types as NodeType>::Time: UnwindSafe,\n <<Types as NodeType>::BlockPayload as QueryablePayload>::TransactionIndex: UnwindSafe,",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorage"]],["impl UnwindSafe for Config",1,["hotshot_query_service::data_source::storage::sql::Config"]],["impl !UnwindSafe for SqlStorage",1,["hotshot_query_service::data_source::storage::sql::SqlStorage"]],["impl<'a> !UnwindSafe for Transaction<'a>",1,["hotshot_query_service::data_source::storage::sql::Transaction"]],["impl UnwindSafe for Error",1,["hotshot_query_service::error::Error"]],["impl<Types> !UnwindSafe for AnyProvider<Types>",1,["hotshot_query_service::fetching::provider::any::AnyProvider"]],["impl !UnwindSafe for QueryServiceProvider",1,["hotshot_query_service::fetching::provider::query_service::QueryServiceProvider"]],["impl UnwindSafe for NoFetching",1,["hotshot_query_service::fetching::provider::NoFetching"]],["impl UnwindSafe for PayloadRequest",1,["hotshot_query_service::fetching::request::PayloadRequest"]],["impl UnwindSafe for LeafRequest",1,["hotshot_query_service::fetching::request::LeafRequest"]],["impl<T, C> !UnwindSafe for Fetcher<T, C>",1,["hotshot_query_service::fetching::Fetcher"]],["impl !UnwindSafe for MetricsError",1,["hotshot_query_service::metrics::MetricsError"]],["impl !UnwindSafe for PrometheusMetrics",1,["hotshot_query_service::metrics::PrometheusMetrics"]],["impl UnwindSafe for Counter",1,["hotshot_query_service::metrics::Counter"]],["impl UnwindSafe for Gauge",1,["hotshot_query_service::metrics::Gauge"]],["impl UnwindSafe for Histogram",1,["hotshot_query_service::metrics::Histogram"]],["impl UnwindSafe for Label",1,["hotshot_query_service::metrics::Label"]],["impl UnwindSafe for Options",1,["hotshot_query_service::node::Options"]],["impl UnwindSafe for Error",1,["hotshot_query_service::node::Error"]],["impl UnwindSafe for RequestSnafu",1,["hotshot_query_service::node::RequestSnafu"]],["impl UnwindSafe for QuerySnafu",1,["hotshot_query_service::node::QuerySnafu"]],["impl<__T0> UnwindSafe for QueryProposalsSnafu<__T0>where\n __T0: UnwindSafe,",1,["hotshot_query_service::node::QueryProposalsSnafu"]],["impl UnwindSafe for InvalidSignatureKeySnafu",1,["hotshot_query_service::node::InvalidSignatureKeySnafu"]],["impl<__T0, __T1> UnwindSafe for CustomSnafu<__T0, __T1>where\n __T0: UnwindSafe,\n __T1: UnwindSafe,",1,["hotshot_query_service::node::CustomSnafu"]],["impl UnwindSafe for MempoolQueryData",1,["hotshot_query_service::status::query_data::MempoolQueryData"]],["impl UnwindSafe for Options",1,["hotshot_query_service::status::Options"]],["impl UnwindSafe for Error",1,["hotshot_query_service::status::Error"]],["impl UnwindSafe for QueryError",1,["hotshot_query_service::QueryError"]],["impl UnwindSafe for NotFoundSnafu",1,["hotshot_query_service::NotFoundSnafu"]],["impl UnwindSafe for MissingSnafu",1,["hotshot_query_service::MissingSnafu"]],["impl<__T0> UnwindSafe for Snafu<__T0>where\n __T0: UnwindSafe,",1,["hotshot_query_service::Snafu"]],["impl UnwindSafe for Options",1,["hotshot_query_service::Options"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/hotshot_query_service/data_source/fetching/trait.AvailabilityProvider.js b/trait.impl/hotshot_query_service/data_source/fetching/trait.AvailabilityProvider.js new file mode 100644 index 000000000..146940164 --- /dev/null +++ b/trait.impl/hotshot_query_service/data_source/fetching/trait.AvailabilityProvider.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"hotshot_query_service":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/serde/de/trait.Deserialize.js b/trait.impl/serde/de/trait.Deserialize.js index b28d718b8..aa93d6ff9 100644 --- a/trait.impl/serde/de/trait.Deserialize.js +++ b/trait.impl/serde/de/trait.Deserialize.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl<'de> Deserialize<'de> for QueryError"],["impl<'de, Types: NodeType> Deserialize<'de> for LeafQueryData<Types>"],["impl<'de> Deserialize<'de> for Error"],["impl<'de> Deserialize<'de> for Error"],["impl<'de, Types: NodeType> Deserialize<'de> for PayloadQueryData<Types>"],["impl<'de, Types: NodeType> Deserialize<'de> for BlockQueryData<Types>"],["impl<'de> Deserialize<'de> for Error"],["impl<'de, Types: NodeType> Deserialize<'de> for TransactionQueryData<Types>where\n Payload<Types>: QueryablePayload,"],["impl<'de> Deserialize<'de> for MempoolQueryData"],["impl<'de> Deserialize<'de> for Error"]] +"hotshot_query_service":[["impl<'de> Deserialize<'de> for Error"],["impl<'de, Types: NodeType> Deserialize<'de> for TransactionQueryData<Types>where\n Payload<Types>: QueryablePayload,"],["impl<'de> Deserialize<'de> for MempoolQueryData"],["impl<'de, Types: NodeType> Deserialize<'de> for PayloadQueryData<Types>"],["impl<'de, Types: NodeType> Deserialize<'de> for BlockQueryData<Types>"],["impl<'de> Deserialize<'de> for Error"],["impl<'de> Deserialize<'de> for QueryError"],["impl<'de> Deserialize<'de> for Error"],["impl<'de, Types: NodeType> Deserialize<'de> for LeafQueryData<Types>"],["impl<'de> Deserialize<'de> for Error"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/serde/ser/trait.Serialize.js b/trait.impl/serde/ser/trait.Serialize.js index 942987bec..4430e6968 100644 --- a/trait.impl/serde/ser/trait.Serialize.js +++ b/trait.impl/serde/ser/trait.Serialize.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl Serialize for QueryError"],["impl Serialize for Error"],["impl Serialize for MempoolQueryData"],["impl Serialize for Error"],["impl<Types: NodeType> Serialize for BlockQueryData<Types>"],["impl<Types: NodeType> Serialize for LeafQueryData<Types>"],["impl Serialize for Error"],["impl Serialize for Error"],["impl<Types: NodeType> Serialize for TransactionQueryData<Types>where\n Payload<Types>: QueryablePayload,"],["impl<Types: NodeType> Serialize for PayloadQueryData<Types>"]] +"hotshot_query_service":[["impl Serialize for MempoolQueryData"],["impl Serialize for Error"],["impl<Types: NodeType> Serialize for TransactionQueryData<Types>where\n Payload<Types>: QueryablePayload,"],["impl<Types: NodeType> Serialize for LeafQueryData<Types>"],["impl Serialize for Error"],["impl Serialize for Error"],["impl Serialize for QueryError"],["impl<Types: NodeType> Serialize for PayloadQueryData<Types>"],["impl<Types: NodeType> Serialize for BlockQueryData<Types>"],["impl Serialize for Error"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/snafu/trait.ErrorCompat.js b/trait.impl/snafu/trait.ErrorCompat.js index fa81f9679..86cc788ad 100644 --- a/trait.impl/snafu/trait.ErrorCompat.js +++ b/trait.impl/snafu/trait.ErrorCompat.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl ErrorCompat for Error"],["impl ErrorCompat for MetricsError"],["impl ErrorCompat for QueryError"],["impl<Types: NodeType> ErrorCompat for InconsistentLeafError<Types>"],["impl ErrorCompat for Error"],["impl ErrorCompat for Error"],["impl ErrorCompat for Error"]] +"hotshot_query_service":[["impl ErrorCompat for Error"],["impl ErrorCompat for QueryError"],["impl ErrorCompat for Error"],["impl ErrorCompat for Error"],["impl ErrorCompat for Error"],["impl<Types: NodeType> ErrorCompat for InconsistentLeafError<Types>"],["impl ErrorCompat for MetricsError"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/snafu/trait.IntoError.js b/trait.impl/snafu/trait.IntoError.js index edb85cdb3..a16af0f3d 100644 --- a/trait.impl/snafu/trait.IntoError.js +++ b/trait.impl/snafu/trait.IntoError.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"hotshot_query_service":[["impl<__T0> IntoError<Error> for QueryProposalsSnafu<__T0>where\n Error: Error + ErrorCompat,\n __T0: Into<String>,"],["impl IntoError<QueryError> for NotFoundSnafuwhere\n QueryError: Error + ErrorCompat,"],["impl<__T0, __T1> IntoError<Error> for InvalidTransactionIndexSnafu<__T0, __T1>where\n Error: Error + ErrorCompat,\n __T0: Into<u64>,\n __T1: Into<u64>,"],["impl<__T0, __T1> IntoError<Error> for CustomSnafu<__T0, __T1>where\n Error: Error + ErrorCompat,\n __T0: Into<String>,\n __T1: Into<StatusCode>,"],["impl IntoError<QueryError> for MissingSnafuwhere\n QueryError: Error + ErrorCompat,"],["impl<__T0> IntoError<Error> for FetchTransactionSnafu<__T0>where\n Error: Error + ErrorCompat,\n __T0: Into<String>,"],["impl<__T0> IntoError<Error> for FetchBlockSnafu<__T0>where\n Error: Error + ErrorCompat,\n __T0: Into<String>,"],["impl IntoError<Error> for RequestSnafuwhere\n Error: Error + ErrorCompat,"],["impl<__T0> IntoError<Error> for FetchLeafSnafu<__T0>where\n Error: Error + ErrorCompat,\n __T0: Into<String>,"],["impl<__T0> IntoError<QueryError> for Snafu<__T0>where\n QueryError: Error + ErrorCompat,\n __T0: Into<String>,"],["impl IntoError<Error> for QuerySnafuwhere\n Error: Error + ErrorCompat,"],["impl IntoError<Error> for RequestSnafuwhere\n Error: Error + ErrorCompat,"],["impl IntoError<Error> for InvalidSignatureKeySnafuwhere\n Error: Error + ErrorCompat,"],["impl<__T0, __T1> IntoError<Error> for CustomSnafu<__T0, __T1>where\n Error: Error + ErrorCompat,\n __T0: Into<String>,\n __T1: Into<StatusCode>,"]] +"hotshot_query_service":[["impl<__T0> IntoError<Error> for FetchLeafSnafu<__T0>where\n Error: Error + ErrorCompat,\n __T0: Into<String>,"],["impl<__T0> IntoError<Error> for QueryProposalsSnafu<__T0>where\n Error: Error + ErrorCompat,\n __T0: Into<String>,"],["impl<__T0, __T1> IntoError<Error> for CustomSnafu<__T0, __T1>where\n Error: Error + ErrorCompat,\n __T0: Into<String>,\n __T1: Into<StatusCode>,"],["impl IntoError<Error> for QuerySnafuwhere\n Error: Error + ErrorCompat,"],["impl IntoError<Error> for RequestSnafuwhere\n Error: Error + ErrorCompat,"],["impl IntoError<Error> for InvalidSignatureKeySnafuwhere\n Error: Error + ErrorCompat,"],["impl<__T0> IntoError<QueryError> for Snafu<__T0>where\n QueryError: Error + ErrorCompat,\n __T0: Into<String>,"],["impl<__T0, __T1> IntoError<Error> for InvalidTransactionIndexSnafu<__T0, __T1>where\n Error: Error + ErrorCompat,\n __T0: Into<u64>,\n __T1: Into<u64>,"],["impl<__T0> IntoError<Error> for FetchTransactionSnafu<__T0>where\n Error: Error + ErrorCompat,\n __T0: Into<String>,"],["impl IntoError<QueryError> for NotFoundSnafuwhere\n QueryError: Error + ErrorCompat,"],["impl<__T0, __T1> IntoError<Error> for CustomSnafu<__T0, __T1>where\n Error: Error + ErrorCompat,\n __T0: Into<String>,\n __T1: Into<StatusCode>,"],["impl IntoError<Error> for RequestSnafuwhere\n Error: Error + ErrorCompat,"],["impl IntoError<QueryError> for MissingSnafuwhere\n QueryError: Error + ErrorCompat,"],["impl<__T0> IntoError<Error> for FetchBlockSnafu<__T0>where\n Error: Error + ErrorCompat,\n __T0: Into<String>,"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/type.impl/hotshot_query_service/data_source/fetching/struct.Builder.js b/type.impl/hotshot_query_service/data_source/fetching/struct.Builder.js new file mode 100644 index 000000000..cb2e2bfb9 --- /dev/null +++ b/type.impl/hotshot_query_service/data_source/fetching/struct.Builder.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"hotshot_query_service":[["
    source§

    impl<Types, S, P> Builder<Types, S, P>

    source

    pub fn new(storage: S, provider: P) -> Self

    Construct a new builder with the given storage and fetcher and the default options.

    \n
    source

    pub fn with_retry_delay(self, retry_delay: Duration) -> Self

    Set the maximum delay between retries of fetches.

    \n
    source

    pub fn with_range_chunk_size(self, range_chunk_size: usize) -> Self

    Set the number of items to process at a time when loading a range or stream.

    \n

    This determines:

    \n
      \n
    • The number of objects to load from storage in a single request
    • \n
    • The number of objects to buffer in memory per request/stream
    • \n
    • The number of concurrent notification subscriptions per request/stream
    • \n
    \n
    source

    pub fn with_minor_scan_interval(self, interval: Duration) -> Self

    Set the time interval between minor proactive fetching scans.

    \n

    See proactive fetching.

    \n
    source

    pub fn with_major_scan_interval(self, interval: usize) -> Self

    Set the interval (denominated in minor scans) between\nmajor proactive fetching scans.

    \n

    See proactive fetching.

    \n
    source

    pub fn with_proactive_range_chunk_size(self, range_chunk_size: usize) -> Self

    Set the number of items to process at a time when scanning for proactive fetching.

    \n

    This is similar to Self::with_range_chunk_size, but only affects the chunk size for\nproactive fetching scans, not for normal subscription streams. This can be useful to tune\nthe proactive scanner to be more or less greedy with the lock on persistent storage.

    \n

    By default (i.e. if this method is not called) the proactive range chunk size will be set to\nwhatever the normal range chunk size is.

    \n
    source

    pub fn disable_proactive_fetching(self) -> Self

    Run without proactive fetching.

    \n

    This can reduce load on the CPU and the database, but increases the probability that\nrequests will fail due to missing resources. If resources are constrained, it is recommended\nto run with rare proactive fetching (see\nwith_major_scan_interval,\nwith_minor_scan_interval), rather than disabling it\nentirely.

    \n
    ",0,"hotshot_query_service::data_source::sql::Builder"],["
    source§

    impl<Types, S, P> Builder<Types, S, P>where\n Types: NodeType,\n Payload<Types>: QueryablePayload,\n S: NodeDataSource<Types> + UpdateNodeData<Types> + AvailabilityStorage<Types> + VersionedDataSource + 'static,\n P: AvailabilityProvider<Types>,

    source

    pub async fn build(self) -> Result<FetchingDataSource<Types, S, P>>

    Build a FetchingDataSource with these options.

    \n
    ",0,"hotshot_query_service::data_source::sql::Builder"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/type.impl/hotshot_query_service/data_source/fetching/struct.FetchingDataSource.js b/type.impl/hotshot_query_service/data_source/fetching/struct.FetchingDataSource.js new file mode 100644 index 000000000..7fb2c4a8f --- /dev/null +++ b/type.impl/hotshot_query_service/data_source/fetching/struct.FetchingDataSource.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"hotshot_query_service":[["
    source§

    impl<Types, S, P> FetchingDataSource<Types, S, P>where\n Types: NodeType,\n Payload<Types>: QueryablePayload,\n S: NodeDataSource<Types> + UpdateNodeData<Types> + AvailabilityStorage<Types> + VersionedDataSource + 'static,\n P: AvailabilityProvider<Types>,

    source

    pub fn builder(storage: S, provider: P) -> Builder<Types, S, P>

    Build a FetchingDataSource with the given storage and provider.

    \n
    ",0,"hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"],["
    source§

    impl<Types, S, P> FetchingDataSource<Types, S, P>where\n Types: NodeType,

    source

    pub async fn storage(&self) -> StorageReadGuard<'_, Types, S>

    Obtain direct, read-only access to the underlying local storage.

    \n
    source

    pub async fn storage_mut(&self) -> StorageWriteGuard<'_, Types, S>

    Obtain direct, mutable access the underlying local storage.

    \n
    ",0,"hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"],["
    source§

    impl<Types, S, P> AvailabilityDataSource<Types> for FetchingDataSource<Types, S, P>where\n Types: NodeType,\n Payload<Types>: QueryablePayload,\n S: AvailabilityStorage<Types> + 'static,\n P: AvailabilityProvider<Types>,

    §

    type LeafRange<R> = Pin<Box<dyn Stream<Item = Fetch<LeafQueryData<Types>>> + Send>>\nwhere\n R: RangeBounds<usize> + Send

    §

    type BlockRange<R> = Pin<Box<dyn Stream<Item = Fetch<BlockQueryData<Types>>> + Send>>\nwhere\n R: RangeBounds<usize> + Send

    §

    type PayloadRange<R> = Pin<Box<dyn Stream<Item = Fetch<PayloadQueryData<Types>>> + Send>>\nwhere\n R: RangeBounds<usize> + Send

    source§

    fn get_leaf<'life0, 'async_trait, ID>(\n &'life0 self,\n id: ID\n) -> Pin<Box<dyn Future<Output = Fetch<LeafQueryData<Types>>> + Send + 'async_trait>>where\n ID: Into<LeafId<Types>> + Send + Sync + 'async_trait,\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn get_block<'life0, 'async_trait, ID>(\n &'life0 self,\n id: ID\n) -> Pin<Box<dyn Future<Output = Fetch<BlockQueryData<Types>>> + Send + 'async_trait>>where\n ID: Into<BlockId<Types>> + Send + Sync + 'async_trait,\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn get_payload<'life0, 'async_trait, ID>(\n &'life0 self,\n id: ID\n) -> Pin<Box<dyn Future<Output = Fetch<PayloadQueryData<Types>>> + Send + 'async_trait>>where\n ID: Into<BlockId<Types>> + Send + Sync + 'async_trait,\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn get_leaf_range<'life0, 'async_trait, R>(\n &'life0 self,\n range: R\n) -> Pin<Box<dyn Future<Output = Self::LeafRange<R>> + Send + 'async_trait>>where\n R: RangeBounds<usize> + Send + 'static + 'async_trait,\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn get_block_range<'life0, 'async_trait, R>(\n &'life0 self,\n range: R\n) -> Pin<Box<dyn Future<Output = Self::BlockRange<R>> + Send + 'async_trait>>where\n R: RangeBounds<usize> + Send + 'static + 'async_trait,\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn get_payload_range<'life0, 'async_trait, R>(\n &'life0 self,\n range: R\n) -> Pin<Box<dyn Future<Output = Self::PayloadRange<R>> + Send + 'async_trait>>where\n R: RangeBounds<usize> + Send + 'static + 'async_trait,\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn get_block_with_transaction<'life0, 'async_trait>(\n &'life0 self,\n hash: TransactionHash<Types>\n) -> Pin<Box<dyn Future<Output = Fetch<(BlockQueryData<Types>, TransactionIndex<Types>)>> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,

    Returns the block containing a transaction with the given hash and the transaction’s\nposition in the block.
    source§

    fn subscribe_blocks<'life0, 'async_trait>(\n &'life0 self,\n from: usize\n) -> Pin<Box<dyn Future<Output = BoxStream<'static, BlockQueryData<Types>>> + Send + 'async_trait>>where\n Self: Sync + 'async_trait,\n 'life0: 'async_trait,

    source§

    fn subscribe_payloads<'life0, 'async_trait>(\n &'life0 self,\n from: usize\n) -> Pin<Box<dyn Future<Output = BoxStream<'static, PayloadQueryData<Types>>> + Send + 'async_trait>>where\n Self: Sync + 'async_trait,\n 'life0: 'async_trait,

    source§

    fn subscribe_leaves<'life0, 'async_trait>(\n &'life0 self,\n from: usize\n) -> Pin<Box<dyn Future<Output = BoxStream<'static, LeafQueryData<Types>>> + Send + 'async_trait>>where\n Self: Sync + 'async_trait,\n 'life0: 'async_trait,

    ","AvailabilityDataSource","hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"],["
    source§

    impl<Types, S, P> NodeDataSource<Types> for FetchingDataSource<Types, S, P>where\n Types: NodeType,\n S: NodeDataSource<Types> + Send + Sync,\n P: Send + Sync,

    source§

    fn block_height<'life0, 'async_trait>(\n &'life0 self\n) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn get_proposals<'life0, 'life1, 'async_trait>(\n &'life0 self,\n proposer: &'life1 SignatureKey<Types>,\n limit: Option<usize>\n) -> Pin<Box<dyn Future<Output = QueryResult<Vec<LeafQueryData<Types>>>> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,\n 'life1: 'async_trait,

    source§

    fn count_proposals<'life0, 'life1, 'async_trait>(\n &'life0 self,\n proposer: &'life1 SignatureKey<Types>\n) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,\n 'life1: 'async_trait,

    ","NodeDataSource","hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"],["
    source§

    impl<Types, S, P> VersionedDataSource for FetchingDataSource<Types, S, P>where\n Types: NodeType,\n S: VersionedDataSource + Send + Sync,\n P: Send + Sync,

    §

    type Error = <S as VersionedDataSource>::Error

    source§

    fn commit<'life0, 'async_trait>(\n &'life0 mut self\n) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,

    Atomically commit to all outstanding modifications to the data. Read more
    source§

    fn revert<'life0, 'async_trait>(\n &'life0 mut self\n) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,

    Erase all oustanding modifications to the data. Read more
    ","VersionedDataSource","hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"],["
    source§

    impl<Types, S, P> StatusDataSource for FetchingDataSource<Types, S, P>where\n Types: NodeType,\n S: NodeDataSource<Types> + Send + Sync,\n P: Send + Sync,

    source§

    fn block_height<'life0, 'async_trait>(\n &'life0 self\n) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn metrics(&self) -> &PrometheusMetrics

    source§

    fn consensus_metrics(&self) -> QueryResult<PrometheusMetrics>

    source§

    fn mempool_info<'life0, 'async_trait>(\n &'life0 self\n) -> Pin<Box<dyn Future<Output = QueryResult<MempoolQueryData>> + Send + 'async_trait>>where\n Self: Sync + 'async_trait,\n 'life0: 'async_trait,

    source§

    fn success_rate<'life0, 'async_trait>(\n &'life0 self\n) -> Pin<Box<dyn Future<Output = QueryResult<f64>> + Send + 'async_trait>>where\n Self: Sync + 'async_trait,\n 'life0: 'async_trait,

    ","StatusDataSource","hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"],["
    source§

    impl<Types, S, P> Clone for FetchingDataSource<Types, S, P>where\n Types: NodeType,

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"],["
    source§

    impl<Types, S, P> UpdateAvailabilityData<Types> for FetchingDataSource<Types, S, P>where\n Types: NodeType,\n Payload<Types>: QueryablePayload,\n S: UpdateAvailabilityData<Types> + Send + Sync,\n P: Send + Sync,

    §

    type Error = <S as UpdateAvailabilityData<Types>>::Error

    source§

    fn insert_leaf<'life0, 'async_trait>(\n &'life0 mut self,\n leaf: LeafQueryData<Types>\n) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn insert_block<'life0, 'async_trait>(\n &'life0 mut self,\n block: BlockQueryData<Types>\n) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,

    ","UpdateAvailabilityData","hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"],["
    source§

    impl<Types, S, P> UpdateNodeData<Types> for FetchingDataSource<Types, S, P>where\n Types: NodeType,\n S: UpdateNodeData<Types> + Send + Sync,\n P: Send + Sync,

    §

    type Error = <S as UpdateNodeData<Types>>::Error

    source§

    fn insert_leaf<'life0, 'async_trait>(\n &'life0 mut self,\n leaf: LeafQueryData<Types>\n) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,

    ","UpdateNodeData","hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"],["
    source§

    impl<Types, S, P> Debug for FetchingDataSource<Types, S, P>where\n Types: NodeType,\n S: Debug,\n P: Debug,

    source§

    fn fmt(&self, __f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Debug","hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/type.impl/hotshot_query_service/data_source/struct.FetchingDataSource.js b/type.impl/hotshot_query_service/data_source/struct.FetchingDataSource.js deleted file mode 100644 index 7e8033905..000000000 --- a/type.impl/hotshot_query_service/data_source/struct.FetchingDataSource.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var type_impls = { -"hotshot_query_service":[["
    source§

    impl<Types, S, P> FetchingDataSource<Types, S, P>where\n Types: NodeType,\n Payload<Types>: QueryablePayload,\n S: NodeDataSource<Types> + UpdateNodeData<Types> + AvailabilityStorage<Types> + VersionedDataSource,\n P: Send + Sync,

    source

    pub async fn new(storage: S, provider: P) -> Result<Self>

    Create a data source with local storage and a remote data availability provider.

    \n
    source

    pub async fn with_retry_delay(\n storage: S,\n provider: P,\n delay: Option<Duration>\n) -> Result<Self>

    ",0,"hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"],["
    source§

    impl<Types, S, P> FetchingDataSource<Types, S, P>where\n Types: NodeType,

    source

    pub async fn storage(&self) -> StorageReadGuard<'_, Types, S>

    Obtain direct, read-only access to the underlying local storage.

    \n
    source

    pub async fn storage_mut(&self) -> StorageWriteGuard<'_, Types, S>

    Obtain direct, mutable access the underlying local storage.

    \n
    ",0,"hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"],["
    source§

    impl<Types, S, P> StatusDataSource for FetchingDataSource<Types, S, P>where\n Types: NodeType,\n S: NodeDataSource<Types> + Send + Sync,\n P: Send + Sync,

    source§

    fn block_height<'life0, 'async_trait>(\n &'life0 self\n) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn metrics(&self) -> &PrometheusMetrics

    source§

    fn consensus_metrics(&self) -> QueryResult<PrometheusMetrics>

    source§

    fn mempool_info<'life0, 'async_trait>(\n &'life0 self\n) -> Pin<Box<dyn Future<Output = QueryResult<MempoolQueryData>> + Send + 'async_trait>>where\n Self: Sync + 'async_trait,\n 'life0: 'async_trait,

    source§

    fn success_rate<'life0, 'async_trait>(\n &'life0 self\n) -> Pin<Box<dyn Future<Output = QueryResult<f64>> + Send + 'async_trait>>where\n Self: Sync + 'async_trait,\n 'life0: 'async_trait,

    ","StatusDataSource","hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"],["
    source§

    impl<Types, S, P> VersionedDataSource for FetchingDataSource<Types, S, P>where\n Types: NodeType,\n S: VersionedDataSource + Send + Sync,\n P: Send + Sync,

    §

    type Error = <S as VersionedDataSource>::Error

    source§

    fn commit<'life0, 'async_trait>(\n &'life0 mut self\n) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,

    Atomically commit to all outstanding modifications to the data. Read more
    source§

    fn revert<'life0, 'async_trait>(\n &'life0 mut self\n) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,

    Erase all oustanding modifications to the data. Read more
    ","VersionedDataSource","hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"],["
    source§

    impl<Types, S, P> Debug for FetchingDataSource<Types, S, P>where\n Types: NodeType,\n S: Debug,\n P: Debug,

    source§

    fn fmt(&self, __f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Debug","hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"],["
    source§

    impl<Types, S, P> UpdateAvailabilityData<Types> for FetchingDataSource<Types, S, P>where\n Types: NodeType,\n Payload<Types>: QueryablePayload,\n S: UpdateAvailabilityData<Types> + Send + Sync,\n P: Send + Sync,

    §

    type Error = <S as UpdateAvailabilityData<Types>>::Error

    source§

    fn insert_leaf<'life0, 'async_trait>(\n &'life0 mut self,\n leaf: LeafQueryData<Types>\n) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn insert_block<'life0, 'async_trait>(\n &'life0 mut self,\n block: BlockQueryData<Types>\n) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,

    ","UpdateAvailabilityData","hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"],["
    source§

    impl<Types, S, P> NodeDataSource<Types> for FetchingDataSource<Types, S, P>where\n Types: NodeType,\n S: NodeDataSource<Types> + Send + Sync,\n P: Send + Sync,

    source§

    fn block_height<'life0, 'async_trait>(\n &'life0 self\n) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn get_proposals<'life0, 'life1, 'async_trait>(\n &'life0 self,\n proposer: &'life1 SignatureKey<Types>,\n limit: Option<usize>\n) -> Pin<Box<dyn Future<Output = QueryResult<Vec<LeafQueryData<Types>>>> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,\n 'life1: 'async_trait,

    source§

    fn count_proposals<'life0, 'life1, 'async_trait>(\n &'life0 self,\n proposer: &'life1 SignatureKey<Types>\n) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,\n 'life1: 'async_trait,

    ","NodeDataSource","hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"],["
    source§

    impl<Types, S, P> AvailabilityDataSource<Types> for FetchingDataSource<Types, S, P>where\n Types: NodeType,\n Payload<Types>: QueryablePayload,\n S: AvailabilityStorage<Types> + 'static,\n P: AvailabilityProvider<Types>,

    §

    type LeafRange<R> = Pin<Box<dyn Stream<Item = Fetch<LeafQueryData<Types>>> + Send>>\nwhere\n R: RangeBounds<usize> + Send

    §

    type BlockRange<R> = Pin<Box<dyn Stream<Item = Fetch<BlockQueryData<Types>>> + Send>>\nwhere\n R: RangeBounds<usize> + Send

    §

    type PayloadRange<R> = Pin<Box<dyn Stream<Item = Fetch<PayloadQueryData<Types>>> + Send>>\nwhere\n R: RangeBounds<usize> + Send

    source§

    fn get_leaf<'life0, 'async_trait, ID>(\n &'life0 self,\n id: ID\n) -> Pin<Box<dyn Future<Output = Fetch<LeafQueryData<Types>>> + Send + 'async_trait>>where\n ID: Into<LeafId<Types>> + Send + Sync + 'async_trait,\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn get_block<'life0, 'async_trait, ID>(\n &'life0 self,\n id: ID\n) -> Pin<Box<dyn Future<Output = Fetch<BlockQueryData<Types>>> + Send + 'async_trait>>where\n ID: Into<BlockId<Types>> + Send + Sync + 'async_trait,\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn get_payload<'life0, 'async_trait, ID>(\n &'life0 self,\n id: ID\n) -> Pin<Box<dyn Future<Output = Fetch<PayloadQueryData<Types>>> + Send + 'async_trait>>where\n ID: Into<BlockId<Types>> + Send + Sync + 'async_trait,\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn get_leaf_range<'life0, 'async_trait, R>(\n &'life0 self,\n range: R\n) -> Pin<Box<dyn Future<Output = Self::LeafRange<R>> + Send + 'async_trait>>where\n R: RangeBounds<usize> + Send + 'static + 'async_trait,\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn get_block_range<'life0, 'async_trait, R>(\n &'life0 self,\n range: R\n) -> Pin<Box<dyn Future<Output = Self::BlockRange<R>> + Send + 'async_trait>>where\n R: RangeBounds<usize> + Send + 'static + 'async_trait,\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn get_payload_range<'life0, 'async_trait, R>(\n &'life0 self,\n range: R\n) -> Pin<Box<dyn Future<Output = Self::PayloadRange<R>> + Send + 'async_trait>>where\n R: RangeBounds<usize> + Send + 'static + 'async_trait,\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn get_block_with_transaction<'life0, 'async_trait>(\n &'life0 self,\n hash: TransactionHash<Types>\n) -> Pin<Box<dyn Future<Output = Fetch<(BlockQueryData<Types>, TransactionIndex<Types>)>> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,

    Returns the block containing a transaction with the given hash and the transaction’s\nposition in the block.
    source§

    fn subscribe_blocks<'life0, 'async_trait>(\n &'life0 self,\n from: usize\n) -> Pin<Box<dyn Future<Output = BoxStream<'static, BlockQueryData<Types>>> + Send + 'async_trait>>where\n Self: Sync + 'async_trait,\n 'life0: 'async_trait,

    source§

    fn subscribe_payloads<'life0, 'async_trait>(\n &'life0 self,\n from: usize\n) -> Pin<Box<dyn Future<Output = BoxStream<'static, PayloadQueryData<Types>>> + Send + 'async_trait>>where\n Self: Sync + 'async_trait,\n 'life0: 'async_trait,

    source§

    fn subscribe_leaves<'life0, 'async_trait>(\n &'life0 self,\n from: usize\n) -> Pin<Box<dyn Future<Output = BoxStream<'static, LeafQueryData<Types>>> + Send + 'async_trait>>where\n Self: Sync + 'async_trait,\n 'life0: 'async_trait,

    ","AvailabilityDataSource","hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"],["
    source§

    impl<Types, S, P> Clone for FetchingDataSource<Types, S, P>where\n Types: NodeType,

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"],["
    source§

    impl<Types, S, P> UpdateNodeData<Types> for FetchingDataSource<Types, S, P>where\n Types: NodeType,\n S: UpdateNodeData<Types> + Send + Sync,\n P: Send + Sync,

    §

    type Error = <S as UpdateNodeData<Types>>::Error

    source§

    fn insert_leaf<'life0, 'async_trait>(\n &'life0 mut self,\n leaf: LeafQueryData<Types>\n) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where\n Self: 'async_trait,\n 'life0: 'async_trait,

    ","UpdateNodeData","hotshot_query_service::data_source::fs::FileSystemDataSource","hotshot_query_service::data_source::sql::SqlDataSource"]] -};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file