diff --git a/README.md b/README.md index 4c5fdf9..4e49ab4 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,20 @@ -# Transaction Village +# [Transaction Village](https://github.com/mlabs-haskell/tx-village) ## Packages -- [ledger-sim](./ledger-sim/) - Haskell based Ledger simulator -- [tx-bakery](./tx-bakery) - Transaction Bakery - Rust based transaction builder +- [tx-bakery](https://github.com/mlabs-haskell/tx-village/tree/main/tx-indexer) - Transaction Bakery - Rust based transaction builder library -- [tx-indexer](./tx-indexer/) - Transaction Indexer - Rust based chain follower +- [tx-indexer](https://github.com/mlabs-haskell/tx-village/tree/main/tx-indexer) - Transaction Indexer - Rust based chain follower and indexer -## Documents - -- [Contributing guideline](/CONTRIBUTING.md) -- [License](/LICENSE) - - ## API References - [tx-bakery](./artifacts/tx-bakery/tx_bakery/index.html) - [tx-bakery-ogmios](./artifacts/tx-bakery-ogmios/tx_bakery_ogmios/index.html) - [tx-bakery-plutip](./artifacts/tx-bakery-plutip/tx_bakery_plutip/index.html) +- [tx-indexer](./artifacts/tx-indexer/tx_indexer/index.html) + +## Documents + +- [Contributing guideline](https://github.com/mlabs-haskell/tx-village/blob/main/CONTRIBUTING.md) +- [License](https://github.com/mlabs-haskell/tx-village/blob/main/LICENSE) diff --git a/artifacts/tx-indexer/.lock b/artifacts/tx-indexer/.lock new file mode 100644 index 0000000..e69de29 diff --git a/artifacts/tx-indexer/crates.js b/artifacts/tx-indexer/crates.js new file mode 100644 index 0000000..08d80c1 --- /dev/null +++ b/artifacts/tx-indexer/crates.js @@ -0,0 +1 @@ +window.ALL_CRATES = ["tx_indexer"]; \ No newline at end of file diff --git a/artifacts/tx-indexer/help.html b/artifacts/tx-indexer/help.html new file mode 100644 index 0000000..6347211 --- /dev/null +++ b/artifacts/tx-indexer/help.html @@ -0,0 +1,2 @@ +Help +

Rustdoc help

Back
\ No newline at end of file diff --git a/artifacts/tx-indexer/search-index.js b/artifacts/tx-indexer/search-index.js new file mode 100644 index 0000000..c20438e --- /dev/null +++ b/artifacts/tx-indexer/search-index.js @@ -0,0 +1,5 @@ +var searchIndex = new Map(JSON.parse('[\ +["tx_indexer",{"doc":"","t":"FCNNCCCCONCNCNOONNNNNNNNNFNNNNNNNNNNNNNNNNNNNPPGGFGPPPFPPNNNNNNNNNNNNNNNNNNNCNNNNONNNNNNNNNNNNONNNNNONOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOHHCCFFPPFFFGFFPFFGPFFFFFFFPPFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNOONNNNNNNNNNNNNNNNNNNNNNNNNNPGKPPPNNNMNNNNNNNNNNFNNONNNNNNNNNNNNCCCRKPGNNNNMNNNNNNNNNNNGFPPPFNNNOONNNNNNNNNNNNNNNNNNNNNONNNNNNOONNNOOHOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOFNOONNNNNNNNOONNNNNNNNNNFNNNNNONNNNNOOONNNNNNNNNN","n":["TxIndexer","aux","borrow","borrow_mut","config","database","error","filter","filter_handle","from","handler","into","progress_tracker","run","sink_handle","source_handle","to_pla","try_from","try_into","try_to_csl","try_to_csl_with","try_to_pla","try_to_pla_with","type_id","vzip","ParseCurrencySymbol","__clone_box","borrow","borrow_mut","clone","clone_into","fmt","from","from_str","into","to_owned","to_pla","try_from","try_into","try_to_csl","try_to_csl_with","try_to_pla","try_to_pla_with","type_id","vzip","ConfigPath","MAINNET","NetworkConfig","NetworkName","NetworkNameParseErr","NodeAddress","PREPROD","PREVIEW","TcpAddress","TxIndexerConfig","UnixSocket","WellKnown","__clone_box","__clone_box","__clone_box","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","deprecation_usage","eq","equivalent","equivalent","equivalent","event_filter","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_str","from_str","handler","into","into","into","into","into","network","new","node_address","retry_policy","safe_block_depth","since_slot","to_chain_info","to_magic_arg","to_owned","to_owned","to_owned","to_pla","to_pla","to_pla","to_pla","to_pla","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_to_csl","try_to_csl","try_to_csl","try_to_csl","try_to_csl","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_pla","try_to_pla","try_to_pla","try_to_pla","try_to_pla","try_to_pla_with","try_to_pla_with","try_to_pla_with","try_to_pla_with","try_to_pla_with","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","magic","node_config_path","n2c_config","n2n_config","plutus","sync_progress","Address","AssetQuantity","BigIntConversion","CSLConversionError","ChainPointer","Credential","CurrencySymbol","DBTypeConversionError","DatumHash","Ed25519PubKeyHash","InvariantBroken","OutputDatum","PlutusData","PlutusDataEncodingError","PlutusDataEncodingError","ScriptHash","Slot","StakingCredential","TokenName","TransactionHash","TransactionInput","TransactionOutput","TryFromCSLError","TryFromPLAError","TxInInfo","Value","__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","array_type_info","array_type_info","array_type_info","array_type_info","array_type_info","array_type_info","array_type_info","array_type_info","array_type_info","borrow","borrow","borrow","borrow","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","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","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","clone_into","clone_into","clone_into","clone_into","cmp","compare","decode","decode","decode","decode","decode","decode","decode","decode","decode","decode","decode","decode","decode","decode","decode","decode","decode","decode","encode_by_ref","encode_by_ref","encode_by_ref","encode_by_ref","encode_by_ref","encode_by_ref","encode_by_ref","encode_by_ref","encode_by_ref","encode_by_ref","encode_by_ref","encode_by_ref","encode_by_ref","encode_by_ref","encode_by_ref","encode_by_ref","encode_by_ref","encode_by_ref","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","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","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","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","from","from","from","from","from","from","from","from","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","partial_cmp","produces","produces","produces","produces","produces","produces","produces","produces","produces","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","source","source","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_owned","to_owned","to_owned","to_owned","to_pla","to_pla","to_pla","to_pla","to_pla","to_pla","to_pla","to_pla","to_pla","to_pla","to_pla","to_pla","to_pla","to_pla","to_pla","to_pla","to_pla","to_pla","to_pla","to_pla","to_string","to_string","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_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_into","try_into","try_into","try_into","try_to_csl","try_to_csl","try_to_csl","try_to_csl","try_to_csl","try_to_csl","try_to_csl","try_to_csl","try_to_csl","try_to_csl","try_to_csl","try_to_csl","try_to_csl","try_to_csl","try_to_csl","try_to_csl","try_to_csl","try_to_csl","try_to_csl","try_to_csl","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_pla","try_to_pla","try_to_pla","try_to_pla","try_to_pla","try_to_pla","try_to_pla","try_to_pla","try_to_pla","try_to_pla","try_to_pla","try_to_pla","try_to_pla","try_to_pla","try_to_pla","try_to_pla","try_to_pla","try_to_pla","try_to_pla","try_to_pla","try_to_pla_with","try_to_pla_with","try_to_pla_with","try_to_pla_with","try_to_pla_with","try_to_pla_with","try_to_pla_with","try_to_pla_with","try_to_pla_with","try_to_pla_with","try_to_pla_with","try_to_pla_with","try_to_pla_with","try_to_pla_with","try_to_pla_with","try_to_pla_with","try_to_pla_with","try_to_pla_with","try_to_pla_with","try_to_pla_with","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","type_id","type_id","type_id","type_id","type_info","type_info","type_info","type_info","type_info","type_info","type_info","type_info","type_info","type_info","type_info","type_info","type_info","type_info","type_info","type_info","type_info","type_info","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","SyncProgressTable","__clone_box","block_hash","block_slot","borrow","borrow_mut","clone","clone_into","eq","equivalent","equivalent","equivalent","fmt","from","from_row","get","get_or","into","new","store","to_owned","to_pla","try_from","try_into","try_to_csl","try_to_csl_with","try_to_pla","try_to_pla_with","type_id","vzip","Call","ErrorPolicy","ErrorPolicyProvider","Exit","Retry","Skip","borrow","borrow_mut","from","get_error_policy","into","to_pla","try_from","try_into","try_to_csl","try_to_csl_with","try_to_pla","try_to_pla_with","type_id","vzip","Filter","borrow","borrow_mut","curr_symbols","from","into","to_pla","to_selection_config","try_from","try_into","try_to_csl","try_to_csl_with","try_to_pla","try_to_pla_with","type_id","vzip","callback","chain_event","retry","Error","EventHandler","EventHandlerFailure","Events","borrow","borrow_mut","fmt","from","handle","into","to_pla","to_string","try_from","try_into","try_to_csl","try_to_csl_with","try_to_pla","try_to_pla_with","type_id","vzip","ChainEvent","ChainEventTime","RollbackEvent","SyncProgressEvent","TransactionEvent","TransactionEventRecord","__clone_box","__clone_box","__clone_box","block_hash","block_number","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fee","fmt","fmt","fmt","from","from","from","hash","inputs","into","into","into","mint","outputs","parse_oura_event","plutus_data","size","slot","to_owned","to_owned","to_owned","to_pla","to_pla","to_pla","try_from","try_from","try_from","try_into","try_into","try_into","try_to_csl","try_to_csl","try_to_csl","try_to_csl_with","try_to_csl_with","try_to_csl_with","try_to_pla","try_to_pla","try_to_pla","try_to_pla_with","try_to_pla_with","try_to_pla_with","type_id","type_id","type_id","vzip","vzip","vzip","block_hash","block_hash","block_slot","block_slot","percentage","time","transaction","RetryPolicy","__clone_box","backoff_factor","backoff_unit","borrow","borrow_mut","clone","clone_into","default","fmt","from","into","max_backoff","max_retries","to_owned","to_pla","try_from","try_into","try_to_csl","try_to_csl_with","try_to_pla","try_to_pla_with","type_id","vzip","ProgressTracker","__clone_box","borrow","borrow_mut","clone","clone_into","era_summaries","fmt","from","get_percentage","into","new","since_slot","sync_progress","system_start","to_owned","to_pla","try_from","try_into","try_to_csl","try_to_csl_with","try_to_pla","try_to_pla_with","type_id","vzip"],"q":[[0,"tx_indexer"],[25,"tx_indexer::aux"],[45,"tx_indexer::config"],[158,"tx_indexer::config::NetworkConfig"],[160,"tx_indexer::config::deprecation_usage"],[162,"tx_indexer::database"],[164,"tx_indexer::database::plutus"],[735,"tx_indexer::database::sync_progress"],[765,"tx_indexer::error"],[785,"tx_indexer::filter"],[801,"tx_indexer::handler"],[804,"tx_indexer::handler::callback"],[824,"tx_indexer::handler::chain_event"],[904,"tx_indexer::handler::chain_event::ChainEvent"],[911,"tx_indexer::handler::retry"],[935,"tx_indexer::progress_tracker"],[960,"oura"],[961,"anyhow"],[962,"core::result"],[963,"tx_bakery::utils::pla_to_csl"],[964,"tx_bakery::utils::csl_to_pla"],[965,"core::any"],[966,"dyn_clone::sealed"],[967,"core::fmt"],[968,"core::fmt"],[969,"core::option"],[970,"oura::utils"],[971,"anyhow"],[972,"oura::sources::common"],[973,"oura::sources::n2n::setup"],[974,"sqlx_postgres::type_info"],[975,"core::cmp"],[976,"core::error"],[977,"alloc::boxed"],[978,"sqlx_postgres::value"],[979,"sqlx_core::encode"],[980,"sqlx_core::error"],[981,"sqlx_postgres::arguments"],[982,"plutus_ledger_api::v1::value"],[983,"plutus_ledger_api::v1::value"],[984,"plutus_ledger_api::v1::crypto"],[985,"plutus_ledger_api::v1::script"],[986,"plutus_ledger_api::v1::datum"],[987,"cardano_serialization_lib::error"],[988,"plutus_ledger_api::v1::address"],[989,"plutus_ledger_api::plutus_data"],[990,"plutus_ledger_api::v1::address"],[991,"plutus_ledger_api::v1::value"],[992,"plutus_ledger_api::v2::transaction"],[993,"plutus_ledger_api::v2::transaction"],[994,"sqlx_postgres::connection"],[995,"sqlx_core::error"],[996,"core::future::future"],[997,"oura::model"]],"d":["","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","Typed network magic restricted to specific networks fully …","","Simple description on how to connect to a local or remote …","","","Hostname and port number for TCP connection to remote node","","Path to Unix node.socket","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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).","","","","Retry policy - how much to retry for each event callback …","Minimum depth a block has to be from the tip for it to be …","Slot number and hash as hex string (optional). If not …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Address","AssetQuantity","","","ChainPointer","Credential","CurrencySymbol","","DatumHash","Ed25519PubKeyHash","","OutputDatum","","PlutusData","","ScriptHash","Slot","StakingCredential","TokenName","TransactionHash","TransactionInput","TransactionOutput","","","TxInInfo","Value","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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 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).","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).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Obtain the sync status of the DB","","Calls U::from(self).","","Save a new entity to the database.","","","","","","","","","","","Indicate that the event handler should call given error …","Specify what the indexer event handler should do for …","Trait that can be implemented for custom error types. …","Indicate that the event handler should exit with error.","Indicate the callback operation should be retried. Also …","Indicate that the error should be ignored, go to next …","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","Interesting transaction components to look for when …","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","Chain events that the indexer is configured to produce.","Indication of when an event happened in the context of the …","Rollback event occurred","Chain syncronisation progressed","A filtered transaction was confirmed","Details on an transaction event (excluding unnecessary …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Influence retrying behavior. i.e How many times and how …","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","A progress tracker holds information about the chain info …","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","",""],"i":[0,0,2,2,0,0,0,0,2,2,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,16,0,0,0,0,16,16,21,0,21,17,16,17,18,1,21,16,17,18,1,21,16,17,18,16,17,18,16,17,18,0,18,18,18,18,1,16,16,17,18,18,1,21,16,17,18,16,16,1,1,21,16,17,18,1,1,1,1,1,1,17,17,16,17,18,1,21,16,17,18,16,18,1,21,16,17,18,1,21,16,17,18,1,21,16,17,18,1,21,16,17,18,1,21,16,17,18,1,21,16,17,18,1,21,16,17,18,1,21,16,17,18,99,99,0,0,0,0,0,0,61,62,0,0,0,0,0,0,61,0,0,0,61,0,0,0,0,0,0,0,62,62,0,0,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,44,45,46,47,48,50,51,52,53,61,36,37,38,39,40,41,42,62,43,44,45,46,47,48,49,50,51,52,53,61,36,37,38,39,40,41,42,62,43,44,45,46,47,48,49,50,51,52,53,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,42,42,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,36,36,36,37,37,37,38,38,38,39,39,39,40,40,40,41,41,41,42,42,42,43,43,43,44,44,44,45,45,45,46,46,46,47,47,47,48,48,48,49,49,49,50,50,50,51,51,51,52,52,52,53,53,53,61,61,36,37,38,39,40,41,42,62,62,43,44,45,46,47,48,49,50,51,52,53,61,61,36,36,37,37,38,38,39,39,40,40,41,41,42,42,62,62,62,62,43,44,44,45,46,47,48,49,50,51,52,53,61,36,37,38,39,40,41,42,62,43,44,45,46,47,48,49,50,51,52,53,42,36,37,38,39,40,41,42,43,49,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,61,62,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,61,36,37,38,39,40,41,42,62,43,44,45,46,47,48,49,50,51,52,53,61,62,61,36,37,38,39,40,41,42,62,43,43,44,45,45,46,46,47,47,48,48,49,49,50,50,51,51,52,52,53,53,61,36,37,38,39,40,41,42,62,43,44,45,46,47,48,49,50,51,52,53,61,36,37,38,39,40,41,42,62,43,44,45,46,47,48,49,50,51,52,53,61,36,37,38,39,40,41,42,62,43,44,45,46,47,48,49,50,51,52,53,61,36,37,38,39,40,41,42,62,43,44,45,46,47,48,49,50,51,52,53,61,36,37,38,39,40,41,42,62,43,44,45,46,47,48,49,50,51,52,53,61,36,37,38,39,40,41,42,62,43,44,45,46,47,48,49,50,51,52,53,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,61,36,37,38,39,40,41,42,62,43,44,45,46,47,48,49,50,51,52,53,0,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,87,0,0,87,87,87,87,87,87,86,87,87,87,87,87,87,87,87,87,87,0,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,0,0,0,5,0,89,0,89,89,89,89,5,89,89,89,89,89,89,89,89,89,89,89,0,0,91,91,91,0,94,91,95,94,94,94,91,95,94,91,95,94,91,95,94,91,95,94,91,95,94,94,94,95,95,95,95,94,91,95,94,91,95,95,95,94,91,95,95,95,0,95,95,94,94,91,95,94,91,95,94,91,95,94,91,95,94,91,95,94,91,95,94,91,95,94,91,95,94,91,95,94,91,95,100,101,100,101,101,102,102,0,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,0,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97],"f":"``{ce{}{}}0`````{cc{}}`1`{{{b{c}}}{{h{df}}}j}``2{c{{l{e}}}{}{}}0{c{{l{en}}}{}{}}0{c{{l{eA`}}}{}{}}0{cAb{}}6`{{cAd}Af{}}77{AhAh}{{ce}Af{}{}}{{AhAj}Al}9{An{{l{Ahc}}}{}};;;8877665;````````````444;;;;;;;;;;{B`B`}{BbBb}{BdBd}555`{{BdBd}Bf}{{ce}Bf{}{}}00`{{B`Aj}{{l{AfBh}}}}{{B`Aj}Al}{{BbAj}Al}{{BdAj}Al}0{cc{}}0000{An{{l{c}}}{}}{An{{l{B`c}}}{}}`{ce{}{}}0000`{{cBjBb{Cb{{C`{BlBn}}}}CdCfCh}{{b{c}}}j}````{Bb{{l{CjCl}}}}{BbCn}33333333{cBn{}}0{c{{l{e}}}{}{}}000000000{c{{l{en}}}{}{}}000000000{c{{l{eA`}}}{}{}}000000000{cAb{}}000088888``{{D`Cn{Cb{{C`{BlBn}}}}Cd}Db}{{D`Cn{Cb{{C`{BlBn}}}}Cd}Dd}````````````````````````````{{cAd}Af{}}00000000000000000{{}Df}00000000<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<{DhDh}{DjDj}{DlDl}{DnDn}{E`E`}{EbEb}{EdEd}{EfEf}{EhEh}{EjEj}{ElEl}{EnEn}{F`F`}{FbFb}{FdFd}{FfFf}{FhFh}{FjFj}{{ce}Af{}{}}00000000000000000{{EdEd}Fl}{{ce}Fl{}{}}{{}{{l{Dh{G`{Fn}}}}}}{{}{{l{Dj{G`{Fn}}}}}}{{}{{l{Dl{G`{Fn}}}}}}{{}{{l{Dn{G`{Fn}}}}}}{{}{{l{E`{G`{Fn}}}}}}{{}{{l{Eb{G`{Fn}}}}}}{{}{{l{Ed{G`{Fn}}}}}}{{}{{l{Ef{G`{Fn}}}}}}{Gb{{l{Eh{G`{Fn}}}}}}{Gb{{l{Ej{G`{Fn}}}}}}{Gb{{l{El{G`{Fn}}}}}}{Gb{{l{En{G`{Fn}}}}}}{Gb{{l{F`{G`{Fn}}}}}}{{}{{l{Fb{G`{Fn}}}}}}{Gb{{l{Fd{G`{Fn}}}}}}{Gb{{l{Ff{G`{Fn}}}}}}{Gb{{l{Fh{G`{Fn}}}}}}{Gb{{l{Fj{G`{Fn}}}}}}{Dh{{l{GdGf}}}}{Dj{{l{GdGf}}}}{Dl{{l{GdGf}}}}{Dn{{l{GdGf}}}}{E`{{l{GdGf}}}}{Eb{{l{GdGf}}}}{Ed{{l{GdGf}}}}{Ef{{l{GdGf}}}}{{EhGh}{{l{GdGf}}}}{{EjGh}{{l{GdGf}}}}{{ElGh}{{l{GdGf}}}}{{EnGh}{{l{GdGf}}}}{{F`Gh}{{l{GdGf}}}}{Fb{{l{GdGf}}}}{{FdGh}{{l{GdGf}}}}{{FfGh}{{l{GdGf}}}}{{FhGh}{{l{GdGf}}}}{{FjGh}{{l{GdGf}}}}{{DhDh}Bf}{{DjDj}Bf}{{DlDl}Bf}{{DnDn}Bf}{{E`E`}Bf}{{EbEb}Bf}{{EdEd}Bf}{{EfEf}Bf}{{EhEh}Bf}{{EjEj}Bf}{{ElEl}Bf}{{EnEn}Bf}{{F`F`}Bf}{{FbFb}Bf}{{FdFd}Bf}{{FfFf}Bf}{{FhFh}Bf}{{FjFj}Bf}{{ce}Bf{}{}}00000000000000000000000000000000000000000000000000000{{GjAj}Al}0{{DhAj}Al}{{DjAj}Al}{{DlAj}Al}{{DnAj}Al}{{E`Aj}Al}{{EbAj}Al}{{EdAj}Al}{{GlAj}Al}0{{EfAj}Al}{{EhAj}Al}{{EjAj}Al}{{ElAj}Al}{{EnAj}Al}{{F`Aj}Al}{{FbAj}Al}{{FdAj}Al}{{FfAj}Al}{{FhAj}Al}{{FjAj}Al}{cc{}}{GlGj}{GnDh}2{H`Dj}33{HbDl}4{HdDn}5{HfE`}{HhEb}7{BlEd}8{A`Gl}{nGl}:{HjGl};{HlEh}<<<<<<<<<<{ce{}{}}0000000000000000000{{EdEd}{{Cb{Fl}}}}{DhCb}{DjCb}{DlCb}{DnCb}{E`Cb}{EbCb}{EdCb}{EfCb}{FbCb}{DhCd}{DjCd}{DlCd}{DnCd}{E`Cd}{EbCd}{EdCd}{EfCd}{EhCd}{EjCd}{ElCd}{EnCd}{F`Cd}{FbCd}{FdCd}{FfCd}{FhCd}{FjCd}{Gj{{Cb{Fn}}}}{Gl{{Cb{Fn}}}}{ce{}{}}0000000000000000000000000000000000000{cBn{}}0{c{{l{e}}}{}{}}000000000{Hn{{l{Efc}}}{}}11{I`{{l{Ejc}}}{}}2{Ib{{l{Elc}}}{}}{Id{{l{Enc}}}{}}4{{{C`{GnH`If}}}{{l{F`c}}}{}}55{Ih{{l{Fbc}}}{}}{Ij{{l{Fdc}}}{}}77{Il{{l{Ffc}}}{}}{In{{l{Fhc}}}{}}99{J`{{l{Fjc}}}{}}::::::::::::::::::::{c{{l{en}}}{}{}}000000000000000000000000000000000000000{c{{l{eA`}}}{}{}}000000000000000000000000000000000000000{cAb{}}0000000000000000000{{}Df}00000000000000000{ce{}{}}0000000000000000000`{{cAd}Af{}}``11{JbJb}{{ce}Af{}{}}{{JbJb}Bf}{{ce}Bf{}{}}00{{JbAj}Al}{cc{}}{c{{Jd{Jb}}}Jf}{Jh{{l{{Cb{Jb}}Jj}}}}{{Jh{Cb{Bl}}{Cb{Bn}}}{{l{{Cb{{C`{BlBn}}}}Cl}}}}:{{BlBn}{{l{JbCl}}}}{{JbJh}{{l{AfJj}}}}<<{c{{l{e}}}{}{}}0{c{{l{en}}}{}{}}0{c{{l{eA`}}}{}{}}0{cAb{}}{ce{}{}}``````00:{Jl{{Jn{Jl}}}}1155443321`11`;11{CfK`}66554432```````22{{KbAj}{{l{AfBh}}}}={{{j{}{{Kd{c}}}}Kf}{{`{{Kj{}{{Kh{{l{Afc}}}}}}}}}{FnJl}}44{cBn{}}99887765``````{{cAd}Af{}}00``666666{KlKl}{KfKf}{KnKn}{{ce}Af{}{}}00{{KlKl}Bf}{{KfKf}Bf}{{KnKn}Bf}{{ce}Bf{}{}}00000`{{KlAj}Al}{{KfAj}Al}{{KnAj}Al}{cc{}}00``{ce{}{}}00``{{L`{Cb{Lb}}}{{l{{Cb{Kf}}`}}}}```111111{c{{l{e}}}{}{}}00000{c{{l{en}}}{}{}}00000{c{{l{eA`}}}{}{}}00000{cAb{}}00555````````{{cAd}Af{}}``66{ChCh}{{ce}Af{}{}}{{}Ch}{{ChAj}Al};:``::8877665:`4::{LbLb}3`{{LbAj}Al}={{LbBl}{{l{Ld`}}}}={{BlCj}{{l{LbCl}}}}```>><<;;::9>","c":[],"p":[[5,"TxIndexerConfig",45],[5,"TxIndexer",0],[8,"Error",960],[8,"Result",961],[10,"EventHandler",804],[6,"Result",962],[6,"TryFromPLAError",963],[6,"TryFromCSLError",964],[5,"TypeId",965],[5,"Private",966],[1,"unit"],[5,"ParseCurrencySymbol",25],[5,"Formatter",967],[8,"Result",967],[1,"str"],[6,"NetworkName",45],[6,"NetworkConfig",45],[5,"NetworkNameParseErr",45],[1,"bool"],[5,"Error",967],[6,"NodeAddress",45],[1,"u64"],[5,"String",968],[1,"tuple"],[6,"Option",969],[1,"usize"],[5,"Filter",785],[5,"RetryPolicy",911],[5,"ChainWellKnownInfo",970],[5,"Error",961],[5,"MagicArg",971],[5,"AddressArg",971],[5,"Config",972],[5,"Config",973],[5,"PgTypeInfo",974],[5,"CurrencySymbol",164],[5,"TokenName",164],[5,"TransactionHash",164],[5,"Ed25519PubKeyHash",164],[5,"ScriptHash",164],[5,"DatumHash",164],[5,"Slot",164],[5,"PlutusData",164],[5,"Credential",164],[5,"ChainPointer",164],[5,"StakingCredential",164],[5,"Address",164],[5,"AssetQuantity",164],[5,"Value",164],[5,"TransactionInput",164],[5,"OutputDatum",164],[5,"TransactionOutput",164],[5,"TxInInfo",164],[6,"Ordering",975],[10,"Error",976],[5,"Box",977],[5,"PgValueRef",978],[6,"IsNull",979],[8,"BoxDynError",980],[5,"PgArgumentBuffer",981],[6,"DBTypeConversionError",164],[6,"PlutusDataEncodingError",164],[6,"CurrencySymbol",982],[5,"TokenName",982],[5,"TransactionHash",983],[5,"Ed25519PubKeyHash",984],[5,"ScriptHash",985],[5,"DatumHash",986],[5,"JsError",987],[6,"Credential",988],[6,"PlutusData",989],[5,"ChainPointer",988],[6,"StakingCredential",988],[5,"Address",988],[5,"BigInt",990],[5,"Value",982],[5,"TransactionInput",983],[6,"OutputDatum",991],[5,"TransactionOutput",992],[5,"TxInInfo",992],[5,"SyncProgressTable",735],[8,"Result",980],[10,"Row",993],[5,"PgConnection",994],[6,"Error",980],[10,"ErrorPolicyProvider",765],[6,"ErrorPolicy",765],[5,"Config",995],[6,"Events",804],[17,"Error"],[6,"ChainEvent",824],[17,"Output"],[10,"Future",996],[5,"ChainEventTime",824],[5,"TransactionEventRecord",824],[5,"Event",997],[5,"ProgressTracker",935],[1,"f32"],[15,"ConfigPath",158],[15,"RollbackEvent",904],[15,"SyncProgressEvent",904],[15,"TransactionEvent",904]],"b":[[82,"impl-Display-for-NetworkName"],[83,"impl-Debug-for-NetworkName"],[85,"impl-Debug-for-NetworkNameParseErr"],[86,"impl-Display-for-NetworkNameParseErr"],[403,"impl-Debug-for-DBTypeConversionError"],[404,"impl-Display-for-DBTypeConversionError"],[412,"impl-Display-for-PlutusDataEncodingError"],[413,"impl-Debug-for-PlutusDataEncodingError"],[441,"impl-From%3CTryFromCSLError%3E-for-PlutusDataEncodingError"],[442,"impl-From%3CTryFromPLAError%3E-for-PlutusDataEncodingError"],[444,"impl-From%3CJsError%3E-for-PlutusDataEncodingError"]]}]\ +]')); +if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; +else if (window.initSearch) window.initSearch(searchIndex); diff --git a/artifacts/tx-indexer/settings.html b/artifacts/tx-indexer/settings.html new file mode 100644 index 0000000..6de9a26 --- /dev/null +++ b/artifacts/tx-indexer/settings.html @@ -0,0 +1,2 @@ +Settings +

Rustdoc settings

Back
\ No newline at end of file diff --git a/artifacts/tx-indexer/src-files.js b/artifacts/tx-indexer/src-files.js new file mode 100644 index 0000000..f30dbaf --- /dev/null +++ b/artifacts/tx-indexer/src-files.js @@ -0,0 +1,4 @@ +var srcIndex = new Map(JSON.parse('[\ +["tx_indexer",["",[["database",[],["mod.rs","plutus.rs","sync_progress.rs"]],["handler",[],["callback.rs","chain_event.rs","mod.rs","retry.rs"]]],["aux.rs","config.rs","error.rs","filter.rs","from_oura.rs","indexer.rs","lib.rs","progress_tracker.rs"]]]\ +]')); +createSrcSidebar(); diff --git a/artifacts/tx-indexer/src/tx_indexer/aux.rs.html b/artifacts/tx-indexer/src/tx_indexer/aux.rs.html new file mode 100644 index 0000000..1bd8b5a --- /dev/null +++ b/artifacts/tx-indexer/src/tx_indexer/aux.rs.html @@ -0,0 +1,47 @@ +aux.rs - source +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+
use data_encoding::HEXLOWER;
+use plutus_ledger_api::v2::{
+    crypto::LedgerBytes,
+    script::{MintingPolicyHash, ScriptHash},
+    value::CurrencySymbol,
+};
+use std::str::FromStr;
+
+#[derive(Debug, Clone)]
+pub struct ParseCurrencySymbol(pub CurrencySymbol);
+
+impl FromStr for ParseCurrencySymbol {
+    type Err = &'static str;
+
+    fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
+        Ok(ParseCurrencySymbol(CurrencySymbol::NativeToken(
+            MintingPolicyHash(ScriptHash(LedgerBytes(
+                HEXLOWER.decode(&s.to_owned().into_bytes()).unwrap(),
+            ))),
+        )))
+    }
+}
+
\ No newline at end of file diff --git a/artifacts/tx-indexer/src/tx_indexer/config.rs.html b/artifacts/tx-indexer/src/tx_indexer/config.rs.html new file mode 100644 index 0000000..b14ea86 --- /dev/null +++ b/artifacts/tx-indexer/src/tx_indexer/config.rs.html @@ -0,0 +1,389 @@ +config.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
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+
use crate::{
+    filter::Filter,
+    handler::{callback::EventHandler, retry::RetryPolicy},
+};
+use anyhow::anyhow;
+use core::str::FromStr;
+use oura::{sources::MagicArg, utils::ChainWellKnownInfo};
+use std::error::Error;
+use std::fmt;
+use std::fs::File;
+use std::io::BufReader;
+use strum_macros::Display;
+
+pub struct TxIndexerConfig<H: EventHandler> {
+    pub handler: H,
+    pub node_address: NodeAddress,
+    pub network: NetworkConfig,
+    /// Slot number and hash as hex string (optional).
+    /// If not provided, sync will begin from the tip of the chain.
+    pub since_slot: Option<(u64, String)>,
+    /// Minimum depth a block has to be from the tip for it to be considered "confirmed"
+    /// See: https://oura.txpipe.io/v1/advanced/rollback_buffer
+    pub safe_block_depth: usize,
+    // Filter transaction events by specific component(s).
+    pub event_filter: Filter,
+    /// Retry policy - how much to retry for each event callback failure
+    /// This only takes effect on ErrorPolicy for a particular error is `Retry`.
+    /// Once retries are exhausted, the handler will error (same treatment as ErrorPolicy::Exit)
+    pub retry_policy: RetryPolicy,
+}
+
+impl<H: EventHandler> TxIndexerConfig<H> {
+    #[allow(clippy::too_many_arguments)]
+    pub fn new(
+        handler: H,
+        node_address: NodeAddress,
+        network: NetworkConfig,
+        since_slot: Option<(u64, String)>,
+        safe_block_depth: usize,
+        event_filter: Filter,
+        retry_policy: RetryPolicy,
+    ) -> Self {
+        Self {
+            handler,
+            node_address,
+            network,
+            since_slot,
+            safe_block_depth,
+            event_filter,
+            retry_policy,
+        }
+    }
+}
+
+/// Simple description on how to connect to a local or remote node.
+/// Used to build Oura source config.
+pub enum NodeAddress {
+    /// Path to Unix node.socket
+    UnixSocket(String),
+    /// Hostname and port number for TCP connection to remote node
+    TcpAddress(String, u16),
+}
+
+/// Typed network magic restricted to specific networks fully supported by Oura.
+#[derive(Clone, Debug, Display)]
+pub enum NetworkName {
+    PREPROD,
+    PREVIEW,
+    MAINNET,
+}
+
+#[derive(Clone, Debug)]
+pub enum NetworkConfig {
+    ConfigPath {
+        node_config_path: String,
+        magic: u64,
+    },
+    WellKnown(NetworkName),
+}
+
+#[derive(Clone, Debug, PartialEq, Eq)]
+pub struct NetworkNameParseErr;
+
+impl fmt::Display for NetworkNameParseErr {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        "provided string was not `preprod` or `preview` or `mainnet`".fmt(f)
+    }
+}
+impl Error for NetworkNameParseErr {}
+
+impl FromStr for NetworkName {
+    type Err = NetworkNameParseErr;
+    fn from_str(s: &str) -> Result<NetworkName, Self::Err> {
+        match &s.to_lowercase()[..] {
+            "preprod" => Ok(NetworkName::PREPROD),
+            "preview" => Ok(NetworkName::PREVIEW),
+            "mainnet" => Ok(NetworkName::MAINNET),
+            _ => Err(NetworkNameParseErr),
+        }
+    }
+}
+
+impl NetworkConfig {
+    pub fn to_magic_arg(&self) -> MagicArg {
+        MagicArg(match self {
+            NetworkConfig::WellKnown(network_name) => match network_name {
+                NetworkName::PREPROD => pallas::network::miniprotocols::PRE_PRODUCTION_MAGIC,
+                NetworkName::PREVIEW => pallas::network::miniprotocols::PREVIEW_MAGIC,
+                NetworkName::MAINNET => pallas::network::miniprotocols::MAINNET_MAGIC,
+            },
+            NetworkConfig::ConfigPath { magic, .. } => *magic,
+        })
+    }
+
+    pub fn to_chain_info(&self) -> Result<ChainWellKnownInfo, anyhow::Error> {
+        Ok(match self {
+            NetworkConfig::WellKnown(network_name) => match network_name {
+                NetworkName::PREPROD => ChainWellKnownInfo::preprod(),
+                NetworkName::PREVIEW => ChainWellKnownInfo::preview(),
+                NetworkName::MAINNET => ChainWellKnownInfo::mainnet(),
+            },
+            NetworkConfig::ConfigPath {
+                node_config_path, ..
+            } => {
+                let file = File::open(node_config_path.clone())
+                    .map_err(|err| anyhow!("Chain Info not found at given path: {}", err))?;
+                let reader = BufReader::new(file);
+                serde_json::from_reader(reader).expect("Invalid JSON format for ChainWellKnownInfo")
+            }
+        })
+    }
+}
+
+// Encapsulating usage of deprecated stuff (impossible to construct struct without it).
+// This avoids having to put "#![allow(deprecated)]" on the top of this file.
+pub mod deprecation_usage {
+    #![allow(deprecated)]
+
+    use oura::mapper::Config as MapperConfig;
+    use oura::sources::n2c::Config as N2CConfig;
+    use oura::sources::n2n::Config as N2NConfig;
+    use oura::sources::{AddressArg, IntersectArg, MagicArg, PointArg};
+
+    pub fn n2c_config(
+        addr: AddressArg,
+        magic: MagicArg,
+        since_slot: Option<(u64, String)>,
+        safe_block_depth: usize,
+    ) -> N2CConfig {
+        N2CConfig {
+            address: addr,
+            magic: Some(magic),
+            intersect: since_slot
+                .map(|since_slot| IntersectArg::Point(PointArg(since_slot.0, since_slot.1))),
+            mapper: MapperConfig {
+                include_transaction_details: true,
+                ..Default::default()
+            },
+            min_depth: safe_block_depth,
+            retry_policy: None,
+            finalize: None,
+            // Deprecated fields
+            since: None,
+            well_known: None,
+        }
+    }
+
+    pub fn n2n_config(
+        addr: AddressArg,
+        magic: MagicArg,
+        since_slot: Option<(u64, String)>,
+        safe_block_depth: usize,
+    ) -> N2NConfig {
+        N2NConfig {
+            address: addr,
+            magic: Some(magic),
+            intersect: since_slot
+                .map(|since_slot| IntersectArg::Point(PointArg(since_slot.0, since_slot.1))),
+            mapper: MapperConfig {
+                include_transaction_details: true,
+                ..Default::default()
+            },
+            min_depth: safe_block_depth,
+            retry_policy: None,
+            finalize: None,
+            // Deprecated fields
+            since: None,
+            well_known: None,
+        }
+    }
+}
+
+pub use self::deprecation_usage::*;
+
\ No newline at end of file diff --git a/artifacts/tx-indexer/src/tx_indexer/database/mod.rs.html b/artifacts/tx-indexer/src/tx_indexer/database/mod.rs.html new file mode 100644 index 0000000..3ee132c --- /dev/null +++ b/artifacts/tx-indexer/src/tx_indexer/database/mod.rs.html @@ -0,0 +1,7 @@ +mod.rs - source +
1
+2
+
pub mod plutus;
+pub mod sync_progress;
+
\ No newline at end of file diff --git a/artifacts/tx-indexer/src/tx_indexer/database/plutus.rs.html b/artifacts/tx-indexer/src/tx_indexer/database/plutus.rs.html new file mode 100644 index 0000000..f818d4c --- /dev/null +++ b/artifacts/tx-indexer/src/tx_indexer/database/plutus.rs.html @@ -0,0 +1,1327 @@ +plutus.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
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+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
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+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
+
use cardano_serialization_lib as csl;
+use num_bigint::BigInt;
+use plutus_ledger_api as pla;
+use thiserror::Error;
+use tx_bakery::utils::{
+    csl_to_pla::{TryFromCSLError, TryToPLA},
+    pla_to_csl::{TryFromPLAError, TryToCSLWithDef},
+};
+
+#[derive(Error, Debug)]
+pub enum DBTypeConversionError {
+    #[error("Couldn't parse DB type, because some invariants weren't valid: {0}")]
+    InvariantBroken(String),
+
+    #[error("Cannot represent BigInt as PostgreSQL BIGINT type: {0}")]
+    BigIntConversion(num_bigint::TryFromBigIntError<BigInt>),
+
+    #[error(transparent)]
+    PlutusDataEncodingError(#[from] PlutusDataEncodingError),
+}
+
+//////////////////////
+/// CurrencySymbol
+//////////////////////
+
+#[derive(sqlx::Type, Clone, Debug, PartialEq, Eq)]
+#[sqlx(type_name = "Plutus.CurrencySymbol")]
+pub struct CurrencySymbol(pub Vec<u8>);
+
+impl From<pla::v2::value::CurrencySymbol> for CurrencySymbol {
+    fn from(item: pla::v2::value::CurrencySymbol) -> Self {
+        match item {
+            pla::v2::value::CurrencySymbol::Ada => CurrencySymbol(Vec::with_capacity(0)),
+            pla::v2::value::CurrencySymbol::NativeToken(pla::v2::script::MintingPolicyHash(
+                pla::v2::script::ScriptHash(pla::v2::crypto::LedgerBytes(bytes)),
+            )) => CurrencySymbol(bytes),
+        }
+    }
+}
+
+impl From<CurrencySymbol> for pla::v2::value::CurrencySymbol {
+    fn from(item: CurrencySymbol) -> Self {
+        let CurrencySymbol(bytes) = item;
+        if bytes.is_empty() {
+            pla::v2::value::CurrencySymbol::Ada
+        } else {
+            pla::v2::value::CurrencySymbol::NativeToken(pla::v2::script::MintingPolicyHash(
+                pla::v2::script::ScriptHash(pla::v2::crypto::LedgerBytes(bytes)),
+            ))
+        }
+    }
+}
+
+//////////////////////
+/// TokenName
+//////////////////////
+
+#[derive(sqlx::Type, Clone, Debug, PartialEq, Eq)]
+#[sqlx(type_name = "Plutus.TokenName")]
+pub struct TokenName(pub Vec<u8>);
+
+impl From<pla::v2::value::TokenName> for TokenName {
+    fn from(item: pla::v2::value::TokenName) -> Self {
+        TokenName(item.0 .0)
+    }
+}
+
+impl From<TokenName> for pla::v2::value::TokenName {
+    fn from(item: TokenName) -> Self {
+        pla::v2::value::TokenName(pla::v2::crypto::LedgerBytes(item.0))
+    }
+}
+
+//////////////////////
+/// TransactionHash
+//////////////////////
+
+#[derive(sqlx::Type, Clone, Debug, PartialEq, Eq)]
+#[sqlx(type_name = "Plutus.TransactionHash")]
+pub struct TransactionHash(pub Vec<u8>);
+
+impl From<pla::v2::transaction::TransactionHash> for TransactionHash {
+    fn from(item: pla::v2::transaction::TransactionHash) -> Self {
+        TransactionHash(item.0 .0)
+    }
+}
+
+impl From<TransactionHash> for pla::v2::transaction::TransactionHash {
+    fn from(item: TransactionHash) -> Self {
+        pla::v2::transaction::TransactionHash(pla::v2::crypto::LedgerBytes(item.0))
+    }
+}
+
+//////////////////////
+/// Ed25519PubKeyHash
+//////////////////////
+
+#[derive(sqlx::Type, Clone, Debug, PartialEq, Eq)]
+#[sqlx(type_name = "Plutus.Ed25519PubKeyHash")]
+pub struct Ed25519PubKeyHash(pub Vec<u8>);
+
+impl From<pla::v2::crypto::Ed25519PubKeyHash> for Ed25519PubKeyHash {
+    fn from(item: pla::v2::crypto::Ed25519PubKeyHash) -> Self {
+        Ed25519PubKeyHash(item.0 .0)
+    }
+}
+
+impl From<Ed25519PubKeyHash> for pla::v2::crypto::Ed25519PubKeyHash {
+    fn from(item: Ed25519PubKeyHash) -> Self {
+        pla::v2::crypto::Ed25519PubKeyHash(pla::v2::crypto::LedgerBytes(item.0))
+    }
+}
+
+//////////////////////
+/// ScriptHash
+//////////////////////
+
+#[derive(sqlx::Type, Clone, Debug, PartialEq, Eq)]
+#[sqlx(type_name = "Plutus.ScriptHash")]
+pub struct ScriptHash(pub Vec<u8>);
+
+impl From<pla::v2::script::ScriptHash> for ScriptHash {
+    fn from(item: pla::v2::script::ScriptHash) -> Self {
+        ScriptHash(item.0 .0)
+    }
+}
+
+impl From<ScriptHash> for pla::v2::script::ScriptHash {
+    fn from(item: ScriptHash) -> Self {
+        pla::v2::script::ScriptHash(pla::v2::crypto::LedgerBytes(item.0))
+    }
+}
+
+//////////////////////
+/// DatumHash
+//////////////////////
+
+#[derive(sqlx::Type, Clone, Debug, PartialEq, Eq)]
+#[sqlx(type_name = "Plutus.DatumHash")]
+pub struct DatumHash(pub Vec<u8>);
+
+impl From<pla::v2::datum::DatumHash> for DatumHash {
+    fn from(item: pla::v2::datum::DatumHash) -> Self {
+        DatumHash(item.0 .0)
+    }
+}
+
+impl From<DatumHash> for pla::v2::datum::DatumHash {
+    fn from(item: DatumHash) -> Self {
+        pla::v2::datum::DatumHash(pla::v2::crypto::LedgerBytes(item.0))
+    }
+}
+
+//////////////////////
+/// Slot
+//////////////////////
+
+#[derive(sqlx::Type, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
+#[sqlx(type_name = "Plutus.Slot")]
+pub struct Slot(pub i64);
+
+impl From<u64> for Slot {
+    fn from(item: u64) -> Self {
+        Slot(item as i64)
+    }
+}
+
+impl From<&Slot> for u64 {
+    fn from(item: &Slot) -> Self {
+        item.0 as u64
+    }
+}
+
+//////////////////////
+/// PlutusData
+//////////////////////
+
+#[derive(Error, Debug)]
+pub enum PlutusDataEncodingError {
+    #[error(transparent)]
+    CSLConversionError(#[from] csl::error::JsError),
+
+    #[error(transparent)]
+    TryFromPLAError(#[from] TryFromPLAError),
+
+    #[error(transparent)]
+    TryFromCSLError(#[from] TryFromCSLError),
+}
+
+#[derive(sqlx::Type, Clone, Debug, PartialEq, Eq)]
+#[sqlx(type_name = "Plutus.PlutusData")]
+pub struct PlutusData(pub serde_json::Value);
+
+impl TryFrom<pla::plutus_data::PlutusData> for PlutusData {
+    type Error = DBTypeConversionError;
+
+    fn try_from(item: pla::plutus_data::PlutusData) -> Result<Self, Self::Error> {
+        Ok(PlutusData(
+            csl::plutus::decode_plutus_datum_to_json_value(
+                &item
+                    .try_to_csl()
+                    .map_err(PlutusDataEncodingError::TryFromPLAError)?,
+                csl::plutus::PlutusDatumSchema::DetailedSchema,
+            )
+            .map_err(PlutusDataEncodingError::CSLConversionError)?,
+        ))
+    }
+}
+
+impl TryFrom<PlutusData> for pla::plutus_data::PlutusData {
+    type Error = DBTypeConversionError;
+
+    fn try_from(item: PlutusData) -> Result<Self, Self::Error> {
+        Ok(csl::plutus::encode_json_value_to_plutus_datum(
+            item.0,
+            csl::plutus::PlutusDatumSchema::DetailedSchema,
+        )
+        .map_err(PlutusDataEncodingError::CSLConversionError)?
+        .try_to_pla()
+        .map_err(PlutusDataEncodingError::TryFromCSLError)?)
+    }
+}
+
+//////////////////////
+/// Credential
+//////////////////////
+
+#[derive(sqlx::Type, Clone, Debug, PartialEq, Eq)]
+#[sqlx(type_name = "Plutus.Credential")]
+pub struct Credential {
+    pub_key_hash: Option<Ed25519PubKeyHash>,
+    script_hash: Option<ScriptHash>,
+}
+
+impl From<pla::v2::address::Credential> for Credential {
+    fn from(item: pla::v2::address::Credential) -> Self {
+        match item {
+            pla::v2::address::Credential::PubKey(pkh) => Credential {
+                pub_key_hash: Some(pkh.into()),
+                script_hash: None,
+            },
+            pla::v2::address::Credential::Script(pla::v2::script::ValidatorHash(sh)) => {
+                Credential {
+                    pub_key_hash: None,
+                    script_hash: Some(sh.into()),
+                }
+            }
+        }
+    }
+}
+
+impl TryFrom<Credential> for pla::v2::address::Credential {
+    type Error = DBTypeConversionError;
+
+    fn try_from(item: Credential) -> Result<Self, Self::Error> {
+        Ok(match item {
+            Credential {
+                pub_key_hash: Some(pkh_db),
+                script_hash: None,
+            } => pla::v2::address::Credential::PubKey(pkh_db.into()),
+            Credential {
+                pub_key_hash: None,
+                script_hash: Some(sh_db),
+            } => pla::v2::address::Credential::Script(pla::v2::script::ValidatorHash(sh_db.into())),
+            _ => Err(DBTypeConversionError::InvariantBroken(
+                "DB Credential must have either 'pub_key_hash' or 'script_hash'".to_string(),
+            ))?,
+        })
+    }
+}
+
+//////////////////////
+/// ChainPointer
+//////////////////////
+
+#[derive(sqlx::Type, Clone, Debug, PartialEq, Eq)]
+#[sqlx(type_name = "Plutus.ChainPointer")]
+pub struct ChainPointer {
+    slot_num: i64,
+    tx_idx: i64,
+    cert_idx: i64,
+}
+
+impl TryFrom<pla::v2::address::ChainPointer> for ChainPointer {
+    type Error = DBTypeConversionError;
+
+    fn try_from(item: pla::v2::address::ChainPointer) -> Result<Self, Self::Error> {
+        Ok(ChainPointer {
+            slot_num: item
+                .slot_number
+                .0
+                .try_into()
+                .map_err(DBTypeConversionError::BigIntConversion)?,
+            tx_idx: item
+                .transaction_index
+                .0
+                .try_into()
+                .map_err(DBTypeConversionError::BigIntConversion)?,
+            cert_idx: item
+                .certificate_index
+                .0
+                .try_into()
+                .map_err(DBTypeConversionError::BigIntConversion)?,
+        })
+    }
+}
+
+impl From<ChainPointer> for pla::v2::address::ChainPointer {
+    fn from(item: ChainPointer) -> Self {
+        pla::v2::address::ChainPointer {
+            slot_number: pla::v2::address::Slot(BigInt::from(item.slot_num)),
+            transaction_index: pla::v2::address::TransactionIndex(BigInt::from(item.tx_idx)),
+            certificate_index: pla::v2::address::CertificateIndex(BigInt::from(item.cert_idx)),
+        }
+    }
+}
+
+//////////////////////
+/// StakingCredential
+//////////////////////
+
+#[derive(sqlx::Type, Clone, Debug, PartialEq, Eq)]
+#[sqlx(type_name = "Plutus.StakingCredential")]
+pub struct StakingCredential {
+    staking_hash: Option<Credential>,
+    staking_ptr: Option<ChainPointer>,
+}
+
+impl TryFrom<pla::v2::address::StakingCredential> for StakingCredential {
+    type Error = DBTypeConversionError;
+
+    fn try_from(item: pla::v2::address::StakingCredential) -> Result<Self, Self::Error> {
+        Ok(match item {
+            pla::v2::address::StakingCredential::Hash(cred) => StakingCredential {
+                staking_hash: Some(cred.into()),
+                staking_ptr: None,
+            },
+            pla::v2::address::StakingCredential::Pointer(ptr) => StakingCredential {
+                staking_hash: None,
+                staking_ptr: Some(ptr.try_into()?),
+            },
+        })
+    }
+}
+
+impl TryFrom<StakingCredential> for pla::v2::address::StakingCredential {
+    type Error = DBTypeConversionError;
+
+    fn try_from(item: StakingCredential) -> Result<Self, Self::Error> {
+        Ok(match item {
+            StakingCredential {
+                staking_hash: Some(cred),
+                staking_ptr: None,
+            } => pla::v2::address::StakingCredential::Hash(cred.try_into()?),
+            StakingCredential {
+                staking_hash: None,
+                staking_ptr: Some(ptr),
+            } => pla::v2::address::StakingCredential::Pointer(ptr.into()),
+
+            _ => Err(DBTypeConversionError::InvariantBroken(
+                "DB StakingCredential must have either 'staking_hash' or 'staking_ptr'".to_string(),
+            ))?,
+        })
+    }
+}
+
+//////////////////////
+/// Address
+//////////////////////
+
+#[derive(sqlx::Type, Clone, Debug, PartialEq, Eq)]
+#[sqlx(type_name = "Plutus.Address")]
+pub struct Address {
+    credential: Credential,
+    staking_credential: Option<StakingCredential>,
+}
+
+impl TryFrom<pla::v2::address::Address> for Address {
+    type Error = DBTypeConversionError;
+
+    fn try_from(item: pla::v2::address::Address) -> Result<Self, Self::Error> {
+        Ok(Address {
+            credential: item.credential.into(),
+            staking_credential: item
+                .staking_credential
+                .map(StakingCredential::try_from)
+                .transpose()?,
+        })
+    }
+}
+
+impl TryFrom<Address> for pla::v2::address::Address {
+    type Error = DBTypeConversionError;
+
+    fn try_from(item: Address) -> Result<Self, Self::Error> {
+        Ok(pla::v2::address::Address {
+            credential: item.credential.try_into()?,
+            staking_credential: item
+                .staking_credential
+                .map(pla::v2::address::StakingCredential::try_from)
+                .transpose()?,
+        })
+    }
+}
+
+//////////////////////
+/// AssetQuantity
+//////////////////////
+
+#[derive(sqlx::Type, Clone, Debug, PartialEq, Eq)]
+#[sqlx(type_name = "Plutus.AssetQuantity")]
+pub struct AssetQuantity {
+    currency_symbol: CurrencySymbol,
+    token_name: TokenName,
+    amount: i64,
+}
+
+impl
+    TryFrom<(
+        pla::v2::value::CurrencySymbol,
+        pla::v2::value::TokenName,
+        BigInt,
+    )> for AssetQuantity
+{
+    type Error = DBTypeConversionError;
+
+    fn try_from(
+        item: (
+            pla::v2::value::CurrencySymbol,
+            pla::v2::value::TokenName,
+            BigInt,
+        ),
+    ) -> Result<Self, Self::Error> {
+        Ok(AssetQuantity {
+            currency_symbol: item.0.into(),
+            token_name: item.1.into(),
+            amount: item
+                .2
+                .try_into()
+                .map_err(DBTypeConversionError::BigIntConversion)?,
+        })
+    }
+}
+
+impl From<AssetQuantity>
+    for (
+        pla::v2::value::CurrencySymbol,
+        pla::v2::value::TokenName,
+        BigInt,
+    )
+{
+    fn from(item: AssetQuantity) -> Self {
+        (
+            item.currency_symbol.into(),
+            item.token_name.into(),
+            item.amount.into(),
+        )
+    }
+}
+
+//////////////////////
+/// Value
+//////////////////////
+
+#[derive(sqlx::Type, Clone, Debug, PartialEq, Eq)]
+#[sqlx(type_name = "Plutus.Value")]
+pub struct Value(pub Vec<AssetQuantity>);
+
+impl TryFrom<pla::v2::value::Value> for Value {
+    type Error = DBTypeConversionError;
+
+    fn try_from(item: pla::v2::value::Value) -> Result<Self, Self::Error> {
+        let assets = item
+            .0
+            .iter()
+            .flat_map(|(cs, assets)| {
+                assets
+                    .iter()
+                    .map(|(tn, amount)| {
+                        AssetQuantity::try_from((cs.to_owned(), tn.to_owned(), amount.to_owned()))
+                    })
+                    .collect::<Vec<_>>()
+            })
+            .collect::<Result<Vec<AssetQuantity>, DBTypeConversionError>>()?;
+
+        Ok(Value(assets))
+    }
+}
+
+impl From<Value> for pla::v2::value::Value {
+    fn from(item: Value) -> Self {
+        item.0.into_iter().fold(
+            pla::v2::value::Value::new(),
+            |value,
+             AssetQuantity {
+                 currency_symbol,
+                 token_name,
+                 amount,
+             }| {
+                value.insert_token(&currency_symbol.into(), &token_name.into(), &amount.into())
+            },
+        )
+    }
+}
+
+//////////////////////
+/// TransactionInput
+//////////////////////
+
+#[derive(sqlx::Type, Clone, Debug, PartialEq, Eq)]
+#[sqlx(type_name = "Plutus.TransactionInput")]
+pub struct TransactionInput {
+    tx_id: TransactionHash,
+    tx_idx: i64,
+}
+
+impl TryFrom<pla::v2::transaction::TransactionInput> for TransactionInput {
+    type Error = DBTypeConversionError;
+
+    fn try_from(item: pla::v2::transaction::TransactionInput) -> Result<Self, Self::Error> {
+        Ok(TransactionInput {
+            tx_id: item.transaction_id.into(),
+            tx_idx: item
+                .index
+                .try_into()
+                .map_err(DBTypeConversionError::BigIntConversion)?,
+        })
+    }
+}
+
+impl From<TransactionInput> for pla::v2::transaction::TransactionInput {
+    fn from(item: TransactionInput) -> Self {
+        pla::v2::transaction::TransactionInput {
+            transaction_id: item.tx_id.into(),
+            index: item.tx_idx.into(),
+        }
+    }
+}
+
+//////////////////////
+/// OutputDatum
+//////////////////////
+
+#[derive(sqlx::Type, Clone, Debug, PartialEq, Eq)]
+#[sqlx(type_name = "Plutus.OutputDatum")]
+pub struct OutputDatum {
+    datum_hash: Option<DatumHash>,
+    inline_datum: Option<PlutusData>,
+}
+
+impl TryFrom<pla::v2::datum::OutputDatum> for OutputDatum {
+    type Error = DBTypeConversionError;
+
+    fn try_from(item: pla::v2::datum::OutputDatum) -> Result<Self, Self::Error> {
+        Ok(match item {
+            pla::v2::datum::OutputDatum::DatumHash(dh) => OutputDatum {
+                datum_hash: Some(dh.into()),
+                inline_datum: None,
+            },
+            pla::v2::datum::OutputDatum::InlineDatum(pla::v2::datum::Datum(datum)) => OutputDatum {
+                datum_hash: None,
+                inline_datum: Some(datum.try_into()?),
+            },
+            pla::v2::datum::OutputDatum::None => OutputDatum {
+                datum_hash: None,
+                inline_datum: None,
+            },
+        })
+    }
+}
+
+impl TryFrom<OutputDatum> for pla::v2::datum::OutputDatum {
+    type Error = DBTypeConversionError;
+
+    fn try_from(item: OutputDatum) -> Result<Self, Self::Error> {
+        Ok(match item {
+            OutputDatum {
+                datum_hash: Some(dh_db),
+                ..
+            } => pla::v2::datum::OutputDatum::DatumHash(dh_db.into()),
+            OutputDatum {
+                inline_datum: Some(datum_db),
+                ..
+            } => pla::v2::datum::OutputDatum::InlineDatum(pla::v2::datum::Datum(
+                datum_db.try_into()?,
+            )),
+            _ => pla::v2::datum::OutputDatum::None,
+        })
+    }
+}
+
+//////////////////////
+/// TransactionOutput
+//////////////////////
+
+#[derive(sqlx::Type, Clone, Debug, PartialEq, Eq)]
+#[sqlx(type_name = "Plutus.TransactionOutput")]
+pub struct TransactionOutput {
+    address: Address,
+    assets: Value,
+    datum: OutputDatum,
+    reference_script: Option<ScriptHash>,
+}
+
+impl TryFrom<pla::v2::transaction::TransactionOutput> for TransactionOutput {
+    type Error = DBTypeConversionError;
+
+    fn try_from(item: pla::v2::transaction::TransactionOutput) -> Result<Self, Self::Error> {
+        Ok(TransactionOutput {
+            address: item.address.try_into()?,
+            assets: item.value.try_into()?,
+            datum: item.datum.try_into()?,
+            reference_script: item.reference_script.map(ScriptHash::from),
+        })
+    }
+}
+
+impl TryFrom<TransactionOutput> for pla::v2::transaction::TransactionOutput {
+    type Error = DBTypeConversionError;
+
+    fn try_from(item: TransactionOutput) -> Result<Self, Self::Error> {
+        Ok(pla::v2::transaction::TransactionOutput {
+            address: item.address.try_into()?,
+            value: item.assets.into(),
+            datum: item.datum.try_into()?,
+            reference_script: item.reference_script.map(pla::v2::script::ScriptHash::from),
+        })
+    }
+}
+
+//////////////////////
+/// TxInInfo
+//////////////////////
+
+#[derive(sqlx::Type, Clone, Debug, PartialEq, Eq)]
+#[sqlx(type_name = "Plutus.TxInInfo")]
+pub struct TxInInfo {
+    reference: TransactionInput,
+    output: TransactionOutput,
+}
+
+impl TryFrom<pla::v2::transaction::TxInInfo> for TxInInfo {
+    type Error = DBTypeConversionError;
+
+    fn try_from(item: pla::v2::transaction::TxInInfo) -> Result<Self, Self::Error> {
+        Ok(TxInInfo {
+            reference: item.reference.try_into()?,
+            output: item.output.try_into()?,
+        })
+    }
+}
+
+impl TryFrom<TxInInfo> for pla::v2::transaction::TxInInfo {
+    type Error = DBTypeConversionError;
+
+    fn try_from(item: TxInInfo) -> Result<Self, Self::Error> {
+        Ok(pla::v2::transaction::TxInInfo {
+            reference: item.reference.into(),
+            output: item.output.try_into()?,
+        })
+    }
+}
+
\ No newline at end of file diff --git a/artifacts/tx-indexer/src/tx_indexer/database/sync_progress.rs.html b/artifacts/tx-indexer/src/tx_indexer/database/sync_progress.rs.html new file mode 100644 index 0000000..d0cc321 --- /dev/null +++ b/artifacts/tx-indexer/src/tx_indexer/database/sync_progress.rs.html @@ -0,0 +1,139 @@ +sync_progress.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
+
use data_encoding::HEXLOWER;
+use sqlx::{FromRow, PgConnection};
+use tracing::{info_span, span, Instrument, Level};
+
+#[derive(Clone, Debug, FromRow, Eq, PartialEq)]
+pub struct SyncProgressTable {
+    pub block_slot: i64,
+    pub block_hash: Vec<u8>,
+}
+
+impl SyncProgressTable {
+    pub fn new(block_slot: u64, block_hash: String) -> Result<SyncProgressTable, anyhow::Error> {
+        Ok(SyncProgressTable {
+            block_slot: block_slot as i64,
+            block_hash: HEXLOWER.decode(block_hash.as_bytes())?,
+        })
+    }
+
+    /// Obtain the sync status of the DB
+    pub async fn get(conn: &mut PgConnection) -> Result<Option<Self>, sqlx::Error> {
+        let span = info_span!("Get SyncProgress");
+        // Get existing entity
+        sqlx::query_as::<_, Self>("SELECT block_slot, block_hash FROM sync_progress")
+            .fetch_optional(conn)
+            .instrument(span)
+            .await
+    }
+
+    /// Save a new entity to the database.
+    pub async fn store(&self, conn: &mut PgConnection) -> Result<(), sqlx::Error> {
+        let span = span!(Level::INFO, "Store SyncProgress", ?self.block_slot);
+        // Insert new entity
+        sqlx::query(
+            r#"
+                INSERT INTO sync_progress (block_slot, block_hash)
+                VALUES ($1, $2)
+                ON CONFLICT (id)
+                DO UPDATE SET
+                    block_slot = EXCLUDED.block_slot,
+                    block_hash = EXCLUDED.block_hash
+                "#,
+        )
+        .bind(self.block_slot)
+        .bind(self.block_hash.clone())
+        .execute(conn)
+        .instrument(span)
+        .await?;
+
+        Ok(())
+    }
+
+    pub async fn get_or(
+        conn: &mut PgConnection,
+        since_slot: Option<u64>,
+        since_block: Option<String>,
+    ) -> Result<Option<(u64, String)>, anyhow::Error> {
+        let sync_status = Self::get(conn).await?;
+
+        Ok(sync_status
+            .map(
+                |Self {
+                     block_slot,
+                     block_hash,
+                 }| (block_slot as u64, HEXLOWER.encode(&block_hash)),
+            )
+            .or(since_slot.zip(since_block)))
+    }
+}
+
\ No newline at end of file diff --git a/artifacts/tx-indexer/src/tx_indexer/error.rs.html b/artifacts/tx-indexer/src/tx_indexer/error.rs.html new file mode 100644 index 0000000..a4eb9ae --- /dev/null +++ b/artifacts/tx-indexer/src/tx_indexer/error.rs.html @@ -0,0 +1,49 @@ +error.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
+
/// Specify what the indexer event handler should do for specific errors. See: `ErrorPolicyProvider`.
+/// The idea is that an error type, `E`, implements `ErrorPolicyProvider`.
+/// Based on the different variants of `E`, different `ErrorPolicy` can be returned, which influences
+/// the behavior of the event handler.
+pub enum ErrorPolicy<E> {
+    /// Indicate the callback operation should be retried. Also see: `RetryPolicy`.
+    Retry,
+    /// Indicate that the error should be ignored, go to next event.
+    Skip,
+    /// Indicate that the event handler should exit with error.
+    Exit,
+    /// Indicate that the event handler should call given error handling function with the error.
+    Call(fn(E) -> ()),
+}
+
+/// Trait that can be implemented for custom error types.
+/// Different variants in said error types can then be given different `ErrorPolicy` assignments.
+pub trait ErrorPolicyProvider
+where
+    Self: Sized,
+{
+    fn get_error_policy(&self) -> ErrorPolicy<Self>;
+}
+
\ No newline at end of file diff --git a/artifacts/tx-indexer/src/tx_indexer/filter.rs.html b/artifacts/tx-indexer/src/tx_indexer/filter.rs.html new file mode 100644 index 0000000..adf7570 --- /dev/null +++ b/artifacts/tx-indexer/src/tx_indexer/filter.rs.html @@ -0,0 +1,105 @@ +filter.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
+
use cardano_serialization_lib as csl;
+use oura::filters::selection::{Config, Predicate};
+use plutus_ledger_api::v2::{script::MintingPolicyHash, value::CurrencySymbol};
+use tx_bakery::utils::pla_to_csl::TryFromPLAWithDef;
+
+/// Interesting transaction components to look for when filtering transactions
+/// relevant to the protocol.
+/// Set curr_symbols to empty vectors to handle any transaction event indiscriminately.
+pub struct Filter {
+    pub curr_symbols: Vec<CurrencySymbol>,
+}
+
+// We only obtain Transaction events that contain the policy in the output
+// NOTE: Must enable 'include_transaction_details' in oura Mapper config.
+impl Filter {
+    pub fn to_selection_config(self) -> Config {
+        Config {
+            check: Predicate::AnyOf(vec![
+                Predicate::VariantIn(vec!["RollBack".to_string(), "Block".to_string()]),
+                Predicate::AllOf(vec![
+                    Predicate::VariantIn(vec!["Transaction".to_string()]),
+                    if self.curr_symbols.is_empty() {
+                        ALWAYS_TRUE
+                    } else {
+                        Predicate::AnyOf(
+                            self.curr_symbols
+                                .into_iter()
+                                .map(serialize_cur_sym)
+                                .map(Predicate::PolicyEquals)
+                                .collect(),
+                        )
+                    },
+                ]),
+            ]),
+        }
+    }
+}
+
+// Filter predicate that always succeeds.
+const ALWAYS_TRUE: Predicate = Predicate::AllOf(vec![]);
+
+fn serialize_cur_sym(cur_sym: CurrencySymbol) -> String {
+    match cur_sym {
+        CurrencySymbol::Ada => String::new(),
+        CurrencySymbol::NativeToken(MintingPolicyHash(script_hash)) => {
+            csl::crypto::ScriptHash::try_from_pla(&script_hash)
+                .unwrap()
+                .to_hex()
+        }
+    }
+}
+
\ No newline at end of file diff --git a/artifacts/tx-indexer/src/tx_indexer/from_oura.rs.html b/artifacts/tx-indexer/src/tx_indexer/from_oura.rs.html new file mode 100644 index 0000000..d743255 --- /dev/null +++ b/artifacts/tx-indexer/src/tx_indexer/from_oura.rs.html @@ -0,0 +1,271 @@ +from_oura.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
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+
use ::oura::model::{MintRecord, OutputAssetRecord};
+use anyhow::Context;
+use cardano_serialization_lib as csl;
+use data_encoding::HEXLOWER;
+use num_bigint::BigInt;
+use plutus_ledger_api::v2::{
+    address::Address,
+    crypto::LedgerBytes,
+    datum::{Datum, DatumHash},
+    script::{MintingPolicyHash, ScriptHash},
+    transaction::TransactionHash,
+    value::{CurrencySymbol, TokenName, Value},
+};
+use std::fmt::Debug;
+use tx_bakery::utils::csl_to_pla::TryToPLA;
+
+#[derive(thiserror::Error, Debug)]
+pub enum OuraParseError {
+    #[error(transparent)]
+    ParseError(#[from] anyhow::Error),
+
+    #[error("Unable to convert current time: {0}")]
+    TimeConversionError(tx_bakery::error::Error),
+}
+
+/// Convert an Oura transaction record type to its plutus-ledger-api counterpart
+pub trait FromOura<T> {
+    fn from_oura(value: T) -> Result<Self, OuraParseError>
+    where
+        Self: Sized;
+}
+
+impl FromOura<String> for LedgerBytes {
+    fn from_oura(value: String) -> Result<Self, OuraParseError> {
+        Ok(LedgerBytes(
+            HEXLOWER
+                .decode(&value.clone().into_bytes()[..])
+                .with_context(|| "Parsing LedgerBytes from Oura")?,
+        ))
+    }
+}
+
+impl FromOura<String> for TransactionHash {
+    fn from_oura(value: String) -> Result<Self, OuraParseError> {
+        Ok(TransactionHash(
+            LedgerBytes::from_oura(value).with_context(|| "Parsing TransactionHash from Oura")?,
+        ))
+    }
+}
+
+impl FromOura<String> for DatumHash {
+    fn from_oura(value: String) -> Result<Self, OuraParseError> {
+        Ok(DatumHash(LedgerBytes::from_oura(value)?))
+    }
+}
+
+impl FromOura<String> for CurrencySymbol {
+    fn from_oura(value: String) -> Result<Self, OuraParseError> {
+        Ok(if value.is_empty() {
+            CurrencySymbol::Ada
+        } else {
+            CurrencySymbol::NativeToken(MintingPolicyHash(ScriptHash(LedgerBytes::from_oura(
+                value,
+            )?)))
+        })
+    }
+}
+
+impl FromOura<String> for TokenName {
+    fn from_oura(value: String) -> Result<Self, OuraParseError> {
+        Ok(if value.is_empty() {
+            TokenName::ada()
+        } else {
+            TokenName(LedgerBytes::from_oura(value)?)
+        })
+    }
+}
+
+impl FromOura<serde_json::Value> for Datum {
+    fn from_oura(value: serde_json::Value) -> Result<Self, OuraParseError> {
+        let csl_plutus_data = csl::plutus::encode_json_value_to_plutus_datum(
+            value,
+            csl::plutus::PlutusDatumSchema::DetailedSchema,
+        )
+        .with_context(|| "Parsing Datum from Oura")?;
+
+        Ok(Datum(
+            csl_plutus_data
+                .try_to_pla()
+                .with_context(|| "Parsing Datum from Oura")?,
+        ))
+    }
+}
+
+impl FromOura<String> for Address {
+    fn from_oura(value: String) -> Result<Self, OuraParseError> {
+        let csl_addr = csl::address::Address::from_bech32(&value)
+            .or_else(|_| {
+                csl::address::ByronAddress::from_base58(&value)
+                    .map(|byron_addr| byron_addr.to_address())
+            })
+            .with_context(|| "Parsing Address from Oura")?;
+
+        Ok(csl_addr
+            .try_to_pla()
+            .with_context(|| "Parsing Address from Oura")?)
+    }
+}
+
+impl FromOura<Vec<OutputAssetRecord>> for Value {
+    fn from_oura(value: Vec<OutputAssetRecord>) -> Result<Self, OuraParseError> {
+        value.iter().try_fold(Value::new(), |acc, x| {
+            let amt = BigInt::from(x.amount);
+            Ok(acc.insert_token(
+                &CurrencySymbol::from_oura(x.policy.clone())?,
+                &TokenName::from_oura(x.asset.clone())?,
+                &amt,
+            ))
+        })
+    }
+}
+
+impl FromOura<Vec<MintRecord>> for Value {
+    fn from_oura(value: Vec<MintRecord>) -> Result<Self, OuraParseError> {
+        value.iter().try_fold(Value::new(), |acc, x| {
+            let amt = BigInt::from(x.quantity);
+            Ok(acc.insert_token(
+                &CurrencySymbol::from_oura(x.policy.clone())?,
+                &TokenName::from_oura(x.asset.clone())?,
+                &amt,
+            ))
+        })
+    }
+}
+
\ No newline at end of file diff --git a/artifacts/tx-indexer/src/tx_indexer/handler/callback.rs.html b/artifacts/tx-indexer/src/tx_indexer/handler/callback.rs.html new file mode 100644 index 0000000..99bc280 --- /dev/null +++ b/artifacts/tx-indexer/src/tx_indexer/handler/callback.rs.html @@ -0,0 +1,255 @@ +callback.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
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+
use crate::{
+    error::ErrorPolicyProvider,
+    handler::{
+        chain_event::ChainEvent,
+        retry::{perform_with_retry, RetryPolicy},
+    },
+    progress_tracker::ProgressTracker,
+};
+use oura::{
+    pipelining::{BootstrapResult, SinkProvider, StageReceiver},
+    utils::Utils,
+};
+use std::{future::Future, sync::Arc};
+use strum_macros::Display;
+use tokio::runtime::Runtime;
+use tracing::{event, span, Instrument, Level};
+
+pub trait EventHandler
+where
+    Self: Clone + Send + 'static,
+{
+    type Error: std::error::Error + ErrorPolicyProvider;
+
+    fn handle(&self, event: ChainEvent) -> impl Future<Output = Result<(), Self::Error>>;
+}
+
+/// This is a custom made sink for Oura. Based on a callback function.
+/// The idea is similar to a webhook, but instead of calling a web endpoint - we call a function directly.
+pub(crate) struct Callback<H: EventHandler> {
+    pub(crate) handler: H,
+    pub(crate) retry_policy: RetryPolicy,
+    pub(crate) utils: Arc<Utils>,
+    pub(crate) progress_tracker: Option<ProgressTracker>,
+}
+
+impl<H: EventHandler> Callback<H> {
+    pub fn new(
+        handler: H,
+        retry_policy: RetryPolicy,
+        utils: Arc<Utils>,
+        progress_tracker: Option<ProgressTracker>,
+    ) -> Self {
+        Self {
+            handler,
+            retry_policy,
+            utils,
+            progress_tracker,
+        }
+    }
+}
+
+impl<H: EventHandler> SinkProvider for Callback<H> {
+    fn bootstrap(&self, input: StageReceiver) -> BootstrapResult {
+        let span = span!(Level::DEBUG, "Callback::bootstrap");
+        let _enter = span.enter();
+
+        let retry_policy = self.retry_policy;
+        let utils = self.utils.clone();
+        let handler = self.handler.clone();
+        let progress_tracker = self.progress_tracker.clone();
+
+        let handle = span!(Level::DEBUG, "SpawningThread").in_scope(|| {
+            std::thread::spawn(move || {
+                let span = span!(Level::DEBUG, "EventHandlingThread");
+                let _enter = span.enter();
+
+                // Running async function sycnhronously within another thread.
+                let rt = Runtime::new().unwrap();
+                rt.block_on(handle_event(
+                    handler,
+                    input,
+                    &retry_policy,
+                    utils,
+                    progress_tracker,
+                ))
+                .map_err(|err| {
+                    event!(Level::ERROR, label=%Events::EventHandlerFailure, ?err);
+                    err
+                })
+                .expect("request loop failed");
+            })
+        });
+
+        Ok(handle)
+    }
+}
+
+// Handle a sequence of events transmitted at once.
+async fn handle_event<'a, H: EventHandler>(
+    handler: H,
+    input: StageReceiver,
+    retry_policy: &RetryPolicy,
+    utils: Arc<Utils>,
+    mut progress_tracker: Option<ProgressTracker>,
+) -> Result<(), H::Error> {
+    let span = span!(Level::DEBUG, "handle_event");
+    let _enter = span.enter();
+    for chain_event in input.into_iter() {
+        let span = span!(
+          Level::DEBUG,
+          "HandlingEvent",
+          context=?chain_event.context
+        );
+        // Have to clone twice here to please the borrow checker...
+        perform_with_retry(
+            &handler,
+            chain_event.clone(),
+            retry_policy,
+            &mut progress_tracker,
+        )
+        .instrument(span)
+        .await
+        // Notify progress to the pipeline.
+        .map(|_| utils.track_sink_progress(&chain_event))?;
+        // ^ This will exit the loop if an error is returned.
+        // After all, `perform_with_retry` will only return error if all other options,
+        // based on `ErrorPolicy`, were exhausted.
+    }
+    // All chain events in this sequence have been handled.
+    Ok(())
+}
+
+#[derive(Display)]
+pub enum Events {
+    EventHandlerFailure,
+}
+
\ No newline at end of file diff --git a/artifacts/tx-indexer/src/tx_indexer/handler/chain_event.rs.html b/artifacts/tx-indexer/src/tx_indexer/handler/chain_event.rs.html new file mode 100644 index 0000000..ada8cc9 --- /dev/null +++ b/artifacts/tx-indexer/src/tx_indexer/handler/chain_event.rs.html @@ -0,0 +1,439 @@ +chain_event.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
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+
use crate::{
+    from_oura::{FromOura, OuraParseError},
+    progress_tracker::ProgressTracker,
+};
+use num_bigint::BigInt;
+use oura::model as oura;
+use plutus_ledger_api::v2::{
+    address::Address,
+    datum::{Datum, DatumHash, OutputDatum},
+    transaction::{TransactionHash, TransactionInput, TransactionOutput, TxInInfo},
+    value::Value,
+};
+use std::fmt::Debug;
+use std::{collections::HashMap, sync::atomic::Ordering};
+use tracing::{event, Level};
+
+/// Indication of when an event happened in the context of the chain.
+#[derive(Clone, Debug, PartialEq, Eq)]
+pub struct ChainEventTime {
+    pub block_number: u64,
+    pub block_hash: String,
+    pub slot: u64,
+}
+
+/// Chain events that the indexer is configured to produce.
+#[derive(Clone, Debug, PartialEq)]
+pub enum ChainEvent {
+    /// A filtered transaction was confirmed
+    TransactionEvent {
+        time: ChainEventTime,
+        transaction: TransactionEventRecord,
+    },
+
+    /// Rollback event occurred
+    RollbackEvent { block_slot: u64, block_hash: String },
+
+    /// Chain syncronisation progressed
+    SyncProgressEvent {
+        block_slot: u64,
+        block_hash: String,
+        percentage: f32,
+    },
+}
+
+/// Details on an transaction event (excluding unnecessary information).
+#[derive(Clone, Debug, PartialEq, Eq)]
+pub struct TransactionEventRecord {
+    pub hash: TransactionHash,
+    pub fee: u64,
+    pub size: u32,
+
+    pub inputs: Vec<TransactionInput>,
+    pub outputs: Vec<TxInInfo>,
+    pub mint: Value,
+
+    pub plutus_data: HashMap<DatumHash, Datum>,
+    // TODO(chase): Which of these would be realistically be interested in?
+    // pub vkey_witnesses: Option<Vec<VKeyWitnessRecord>>,
+    // pub native_witnesses: Option<Vec<NativeWitnessRecord>>,
+    // pub plutus_witnesses: Option<Vec<PlutusWitnessRecord>>,
+    // pub plutus_redeemers: Option<Vec<PlutusRedeemerRecord>>,
+}
+
+pub fn parse_oura_event(
+    ev: oura::Event,
+    progress_tracker: &mut Option<ProgressTracker>,
+) -> Result<Option<ChainEvent>, OuraParseError> {
+    Ok(match ev.data {
+        oura::EventData::Transaction(tx_rec) => {
+            event!(Level::DEBUG, label="TransactionEvent", transaction_record=?tx_rec);
+
+            Some(ChainEvent::TransactionEvent {
+                time: ChainEventTime {
+                    // These unwraps should not fail.
+                    block_hash: ev.context.block_hash.unwrap(),
+                    block_number: ev.context.block_number.unwrap(),
+                    slot: ev.context.slot.unwrap(),
+                },
+                transaction: TransactionEventRecord::from_oura(tx_rec)?,
+            })
+        }
+        oura::EventData::RollBack {
+            block_slot,
+            block_hash,
+        } => {
+            event!(Level::DEBUG, label="RollbackEvent", block_slot=?block_slot, block_hash=?block_hash);
+            Some(ChainEvent::RollbackEvent {
+                block_slot,
+                block_hash,
+            })
+        }
+        oura::EventData::Block(block_rec) => {
+            event!(Level::DEBUG, label="BlockEvent", block_record=?block_rec);
+            match progress_tracker {
+                Some(progress_tracker) => {
+                    let block_slot = block_rec.slot;
+                    let block_hash = block_rec.hash;
+
+                    let percentage = progress_tracker.get_percentage(block_slot)?;
+
+                    let throttled_sync_progress = (percentage * 10.0) as usize;
+                    let is_updated = progress_tracker
+                        .sync_progress
+                        .fetch_update(Ordering::SeqCst, Ordering::SeqCst, |prev_status| {
+                            if prev_status < throttled_sync_progress {
+                                Some(throttled_sync_progress)
+                            } else {
+                                None
+                            }
+                        })
+                        .is_ok();
+
+                    if is_updated {
+                        event!(
+                            Level::INFO,
+                            percentage = format!("{:.1}%", percentage),
+                            ?block_slot,
+                            ?block_hash,
+                            label = "Chain synchronization progress"
+                        );
+                    }
+
+                    Some(ChainEvent::SyncProgressEvent {
+                        percentage,
+                        block_slot,
+                        block_hash,
+                    })
+                }
+
+                None => Some(ChainEvent::SyncProgressEvent {
+                    percentage: 100.0,
+                    block_slot: block_rec.slot,
+                    block_hash: block_rec.hash,
+                }),
+            }
+        }
+        _ => panic!("absurd: Indexer filter should only allow transaction event variant."),
+    })
+}
+
+impl FromOura<oura::TransactionRecord> for TransactionEventRecord {
+    fn from_oura(tx: oura::TransactionRecord) -> Result<TransactionEventRecord, OuraParseError> {
+        Ok(TransactionEventRecord {
+            hash: TransactionHash::from_oura(tx.hash.clone())?,
+            fee: tx.fee,
+            size: tx.size,
+            // All these unwraps should succeed since we enable `include_transaction_details`
+            // in the mapper config.
+            inputs: tx
+                .inputs
+                .unwrap()
+                .into_iter()
+                .map(|oura::TxInputRecord { tx_id, index }| {
+                    Ok(TransactionInput {
+                        transaction_id: TransactionHash::from_oura(tx_id)?,
+                        index: BigInt::from(index),
+                    })
+                })
+                .collect::<Result<_, OuraParseError>>()?,
+            outputs: tx
+                .outputs
+                .unwrap()
+                .into_iter()
+                .enumerate()
+                .map(
+                    |(
+                        index,
+                        oura::TxOutputRecord {
+                            address,
+                            amount,
+                            assets,
+                            datum_hash,
+                            inline_datum,
+                        },
+                    )| {
+                        let reference = TransactionInput {
+                            transaction_id: TransactionHash::from_oura(tx.hash.clone())?,
+                            index: index.into(),
+                        };
+                        let output = TransactionOutput {
+                            address: Address::from_oura(address)?,
+                            datum: match (datum_hash, inline_datum) {
+                                (None, None) => OutputDatum::None,
+                                (_, Some(datm)) => {
+                                    OutputDatum::InlineDatum(Datum::from_oura(datm.plutus_data)?)
+                                }
+                                (Some(dh), _) => OutputDatum::DatumHash(DatumHash::from_oura(dh)?),
+                            },
+                            // NOTE(chase): There is currently no way to know about reference scripts with Oura.
+                            reference_script: None,
+                            value: Value::ada_value(&BigInt::from(amount))
+                                + Value::from_oura(assets.unwrap_or_default())?,
+                        };
+
+                        Ok(TxInInfo { reference, output })
+                    },
+                )
+                .collect::<Result<_, OuraParseError>>()?,
+            mint: tx.mint.map_or(Ok(Value::new()), Value::from_oura)?,
+            plutus_data: tx
+                .plutus_data
+                .unwrap_or_default()
+                .into_iter()
+                .map(
+                    |oura::PlutusDatumRecord {
+                         plutus_data,
+                         datum_hash,
+                     }| {
+                        Ok((
+                            DatumHash::from_oura(datum_hash)?,
+                            Datum::from_oura(plutus_data)?,
+                        ))
+                    },
+                )
+                .collect::<Result<_, OuraParseError>>()?,
+        })
+    }
+}
+
\ No newline at end of file diff --git a/artifacts/tx-indexer/src/tx_indexer/handler/mod.rs.html b/artifacts/tx-indexer/src/tx_indexer/handler/mod.rs.html new file mode 100644 index 0000000..5f30b64 --- /dev/null +++ b/artifacts/tx-indexer/src/tx_indexer/handler/mod.rs.html @@ -0,0 +1,9 @@ +mod.rs - source +
1
+2
+3
+
pub mod callback;
+pub mod chain_event;
+pub mod retry;
+
\ No newline at end of file diff --git a/artifacts/tx-indexer/src/tx_indexer/handler/retry.rs.html b/artifacts/tx-indexer/src/tx_indexer/handler/retry.rs.html new file mode 100644 index 0000000..5e2ca5a --- /dev/null +++ b/artifacts/tx-indexer/src/tx_indexer/handler/retry.rs.html @@ -0,0 +1,257 @@ +retry.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
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+
use crate::{
+    error::{ErrorPolicy, ErrorPolicyProvider},
+    handler::{callback::EventHandler, chain_event::parse_oura_event},
+    progress_tracker::ProgressTracker,
+};
+use oura::model as oura;
+use std::{fmt::Debug, ops::Mul, time::Duration};
+use strum_macros::Display;
+use tracing::{event, span, Instrument, Level};
+
+/// Influence retrying behavior.
+/// i.e How many times and how often a failed operation should be retried.
+/// Given we are dealing with `ErrorPolicy::Retry`
+#[derive(Debug, Copy, Clone)]
+pub struct RetryPolicy {
+    pub max_retries: u32,
+    pub backoff_unit: Duration,
+    pub backoff_factor: u32,
+    pub max_backoff: Duration,
+}
+
+#[derive(Display)]
+enum EventOutcome {
+    Success,
+    FailureExit,
+    FailureSkip,
+    FailureRetry,
+    RetriesExhausted,
+    RetryBackoff,
+}
+
+impl Default for RetryPolicy {
+    fn default() -> Self {
+        Self {
+            max_retries: 20,
+            backoff_unit: Duration::from_millis(5_000),
+            backoff_factor: 2,
+            max_backoff: Duration::from_millis(20 * 5_000),
+        }
+    }
+}
+
+fn compute_backoff_delay(policy: &RetryPolicy, retry: u32) -> Duration {
+    let units = policy.backoff_factor.pow(retry);
+    let backoff = policy.backoff_unit.mul(units);
+    core::cmp::min(backoff, policy.max_backoff)
+}
+
+/// Wrap an operation with retry logic.
+/// Retrying is based on ErrorPolicy associated with particular error.
+/// Retries are only performed for ErrorPolicy::Retry - other errors won't cause invocation of given operation again.
+pub(crate) async fn perform_with_retry<H: EventHandler>(
+    handler: &H,
+    oura_event: oura::Event,
+    policy: &RetryPolicy,
+    progress_tracker: &mut Option<ProgressTracker>,
+) -> Result<(), H::Error> {
+    let span = span!(Level::DEBUG, "perform_with_retry");
+    let _enter = span.enter();
+
+    match parse_oura_event(oura_event, progress_tracker) {
+        Ok(Some(event)) => {
+            // The retry logic is based on:
+            // https://github.com/txpipe/oura/blob/27fb7e876471b713841d96e292ede40101b151d7/src/utils/retry.rs
+            let mut retry = 0;
+
+            loop {
+                // TODO(szg251): Handle errors properly
+                let span = span!(Level::DEBUG, "TryingOperation", retry_count = retry);
+                let res = async {
+                    let result = handler.handle(event.clone())
+                        .instrument(span!(Level::DEBUG, "UserDefinedHandler")).await;
+
+                    match result {
+                        Ok(_) => {
+                            event!(Level::DEBUG, label=%EventOutcome::Success);
+                            Some(Ok(()))
+                        }
+                        Err(err) => match err.get_error_policy() {
+                            ErrorPolicy::Exit => {
+                                event!(Level::ERROR, label=%EventOutcome::FailureExit);
+                                Some(Err(err))
+                            }
+                            ErrorPolicy::Skip => {
+                                event!(Level::WARN, label=%EventOutcome::FailureSkip, err=?err);
+                                Some(Ok(()))
+                            }
+                            ErrorPolicy::Call(err_f) => span!(Level::WARN, "OperationFailureCall").in_scope(|| {
+                                err_f(err);
+                                Some(Ok(()))
+                            }),
+                            ErrorPolicy::Retry if retry < policy.max_retries => {
+                                event!(Level::WARN, label=%EventOutcome::FailureRetry, err=?err);
+
+                                retry += 1;
+
+                                let backoff = compute_backoff_delay(policy, retry);
+
+                                event!(Level::DEBUG, label=%EventOutcome::RetryBackoff, backoff_secs=backoff.as_secs());
+
+                                std::thread::sleep(backoff);
+
+                                None
+                            }
+                            _ => {
+                                event!(Level::DEBUG, label=%EventOutcome::RetriesExhausted);
+                                Some(Err(err))
+                            }
+                        },
+                    }
+                }
+                .instrument(span)
+                .await;
+
+                if let Some(res) = res {
+                    break res;
+                }
+            }
+        }
+        Ok(None) => Ok(()),
+        Err(err) => {
+            event!(Level::ERROR, err = ?err);
+
+            Ok(())
+        }
+    }
+}
+
\ No newline at end of file diff --git a/artifacts/tx-indexer/src/tx_indexer/indexer.rs.html b/artifacts/tx-indexer/src/tx_indexer/indexer.rs.html new file mode 100644 index 0000000..230f802 --- /dev/null +++ b/artifacts/tx-indexer/src/tx_indexer/indexer.rs.html @@ -0,0 +1,177 @@ +indexer.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
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+
use crate::{
+    config::{n2c_config, n2n_config, NodeAddress, TxIndexerConfig},
+    handler::callback::{Callback, EventHandler},
+    progress_tracker::ProgressTracker,
+};
+use anyhow::Result;
+use oura::{
+    pipelining::{FilterProvider, SinkProvider, SourceProvider},
+    sources::{AddressArg, BearerKind},
+    utils::{Utils, WithUtils},
+    Error,
+};
+use std::sync::Arc;
+use std::thread::JoinHandle;
+use tracing::{span, Level};
+
+// Structure holding the thread handles associated to the indexer. These threads are never-ending.
+pub struct TxIndexer {
+    pub source_handle: JoinHandle<()>,
+    pub filter_handle: JoinHandle<()>,
+    pub sink_handle: JoinHandle<()>,
+}
+
+impl TxIndexer {
+    // This is based on: https://github.com/txpipe/oura/blob/27fb7e876471b713841d96e292ede40101b151d7/src/bin/oura/daemon.rs
+    pub async fn run<H: EventHandler>(conf: TxIndexerConfig<H>) -> Result<TxIndexer, Error> {
+        let span = span!(Level::INFO, "Run TxIndexer");
+        let _enter = span.enter();
+
+        let chain = conf.network.to_chain_info()?;
+
+        let progress_tracker = match conf.since_slot {
+            Some((since_slot, _)) => Some(ProgressTracker::new(since_slot, &chain)?),
+            None => None,
+        };
+
+        let utils = Arc::new(Utils::new(chain));
+
+        let (source_handle, source_rx) = match conf.node_address {
+            NodeAddress::UnixSocket(path) => {
+                span!(Level::INFO, "BootstrapSourceViaSocket", socket_path = path).in_scope(|| {
+                    WithUtils::new(
+                        n2c_config(
+                            AddressArg(BearerKind::Unix, path),
+                            conf.network.to_magic_arg(),
+                            conf.since_slot.clone(),
+                            conf.safe_block_depth,
+                        ),
+                        utils.clone(),
+                    )
+                    .bootstrap()
+                })
+            }
+            NodeAddress::TcpAddress(hostname, port) => {
+                span!(Level::INFO, "BootstrapSourceViaTcp", hostname, port).in_scope(|| {
+                    WithUtils::new(
+                        n2n_config(
+                            AddressArg(BearerKind::Tcp, format!("{}:{}", hostname, port)),
+                            conf.network.to_magic_arg(),
+                            conf.since_slot.clone(),
+                            conf.safe_block_depth,
+                        ),
+                        utils.clone(),
+                    )
+                    .bootstrap()
+                })
+            }
+        }?;
+
+        // Optionally create a filter handle (if filter was provided)
+        let (filter_handle, filter_rx) = conf
+            .event_filter
+            .to_selection_config()
+            .bootstrap(source_rx)?;
+
+        let sink_handle = span!(Level::INFO, "BootstrapSink").in_scope(|| {
+            Callback::new(conf.handler, conf.retry_policy, utils, progress_tracker)
+                .bootstrap(filter_rx)
+        })?;
+
+        Ok(TxIndexer {
+            source_handle,
+            filter_handle,
+            sink_handle,
+        })
+    }
+}
+
\ No newline at end of file diff --git a/artifacts/tx-indexer/src/tx_indexer/lib.rs.html b/artifacts/tx-indexer/src/tx_indexer/lib.rs.html new file mode 100644 index 0000000..da25ddf --- /dev/null +++ b/artifacts/tx-indexer/src/tx_indexer/lib.rs.html @@ -0,0 +1,23 @@ +lib.rs - source +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+
pub mod aux;
+pub mod config;
+pub mod database;
+pub mod error;
+pub mod filter;
+pub(crate) mod from_oura;
+pub mod handler;
+pub use indexer::TxIndexer;
+mod indexer;
+pub mod progress_tracker;
+
\ No newline at end of file diff --git a/artifacts/tx-indexer/src/tx_indexer/progress_tracker.rs.html b/artifacts/tx-indexer/src/tx_indexer/progress_tracker.rs.html new file mode 100644 index 0000000..00da299 --- /dev/null +++ b/artifacts/tx-indexer/src/tx_indexer/progress_tracker.rs.html @@ -0,0 +1,179 @@ +progress_tracker.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
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+
use std::sync::{atomic::AtomicUsize, Arc};
+
+use anyhow::anyhow;
+use chrono::{DateTime, Duration, Utc};
+use oura::utils::ChainWellKnownInfo;
+use tx_bakery::chain_query::{EraParameters, EraSummary, EraTime};
+
+use crate::from_oura::OuraParseError;
+
+/// A progress tracker holds information about the chain info required to calculate
+/// POSIX time from slots
+#[derive(Clone, Debug)]
+pub struct ProgressTracker {
+    pub system_start: DateTime<Utc>,
+    pub era_summaries: Vec<EraSummary>,
+    pub since_slot: u64,
+    pub sync_progress: Arc<AtomicUsize>,
+}
+
+impl ProgressTracker {
+    pub fn new(since_slot: u64, chain_info: &ChainWellKnownInfo) -> Result<Self, anyhow::Error> {
+        let system_start = DateTime::from_timestamp(chain_info.byron_known_time as i64, 0).ok_or(
+            anyhow!("Unable to convert shelley_known_time to to DateTime"),
+        )?;
+
+        Ok(ProgressTracker {
+            system_start,
+            era_summaries: chain_info_to_era_summaries(&system_start, chain_info)?,
+            since_slot,
+            sync_progress: Arc::new(AtomicUsize::new(0)),
+        })
+    }
+
+    pub fn get_percentage(&self, slot: u64) -> Result<f32, OuraParseError> {
+        let current_time = Utc::now();
+        let current_slot =
+            tx_bakery::time::time_into_slot(&self.era_summaries, &self.system_start, current_time)
+                .map_err(OuraParseError::TimeConversionError)?;
+
+        let synced = slot - self.since_slot;
+        let to_be_synced = current_slot - self.since_slot;
+
+        Ok(synced as f32 * 100.0 / to_be_synced as f32)
+    }
+}
+
+/// Convert Oura chain info into Ogmios EraSummaries.
+/// Oura does not include all eras, only Byron and Shelley, all other eras are part of
+/// Shelley. This is good enough for time calculations.
+fn chain_info_to_era_summaries(
+    system_start_time: &DateTime<Utc>,
+    chain_info: &ChainWellKnownInfo,
+) -> Result<Vec<EraSummary>, anyhow::Error> {
+    let byron_start = EraTime {
+        time: Duration::zero(),
+        slot: 0,
+        epoch: 0,
+    };
+
+    let shelley_start = EraTime {
+        time: DateTime::from_timestamp(chain_info.shelley_known_time as i64, 0).ok_or(anyhow!(
+            "Unable to convert shelley_known_time to to DateTime"
+        ))? - system_start_time,
+        slot: chain_info.shelley_known_slot,
+        epoch: chain_info.shelley_known_slot / chain_info.byron_epoch_length as u64,
+    };
+
+    Ok(vec![
+        EraSummary {
+            start: byron_start,
+            end: Some(shelley_start.clone()),
+            parameters: EraParameters {
+                epoch_length: chain_info.byron_epoch_length as u64,
+                slot_length: chain_info.byron_slot_length as u64 * 1000,
+                safe_zone: Some(4320),
+            },
+        },
+        EraSummary {
+            start: shelley_start,
+            end: None,
+            parameters: EraParameters {
+                epoch_length: chain_info.shelley_epoch_length as u64,
+                slot_length: chain_info.shelley_slot_length as u64 * 1000,
+                safe_zone: Some(4320),
+            },
+        },
+    ])
+}
+
\ No newline at end of file diff --git a/artifacts/tx-indexer/static.files/COPYRIGHT-23e9bde6c69aea69.txt b/artifacts/tx-indexer/static.files/COPYRIGHT-23e9bde6c69aea69.txt new file mode 100644 index 0000000..1447df7 --- /dev/null +++ b/artifacts/tx-indexer/static.files/COPYRIGHT-23e9bde6c69aea69.txt @@ -0,0 +1,50 @@ +# REUSE-IgnoreStart + +These documentation pages include resources by third parties. This copyright +file applies only to those resources. The following third party resources are +included, and carry their own copyright notices and license terms: + +* Fira Sans (FiraSans-Regular.woff2, FiraSans-Medium.woff2): + + Copyright (c) 2014, Mozilla Foundation https://mozilla.org/ + with Reserved Font Name Fira Sans. + + Copyright (c) 2014, Telefonica S.A. + + Licensed under the SIL Open Font License, Version 1.1. + See FiraSans-LICENSE.txt. + +* rustdoc.css, main.js, and playpen.js: + + Copyright 2015 The Rust Developers. + Licensed under the Apache License, Version 2.0 (see LICENSE-APACHE.txt) or + the MIT license (LICENSE-MIT.txt) at your option. + +* normalize.css: + + Copyright (c) Nicolas Gallagher and Jonathan Neal. + Licensed under the MIT license (see LICENSE-MIT.txt). + +* Source Code Pro (SourceCodePro-Regular.ttf.woff2, + SourceCodePro-Semibold.ttf.woff2, SourceCodePro-It.ttf.woff2): + + Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), + with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark + of Adobe Systems Incorporated in the United States and/or other countries. + + Licensed under the SIL Open Font License, Version 1.1. + See SourceCodePro-LICENSE.txt. + +* Source Serif 4 (SourceSerif4-Regular.ttf.woff2, SourceSerif4-Bold.ttf.woff2, + SourceSerif4-It.ttf.woff2): + + Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name + 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United + States and/or other countries. + + Licensed under the SIL Open Font License, Version 1.1. + See SourceSerif4-LICENSE.md. + +This copyright file is intended to be distributed with rustdoc output. + +# REUSE-IgnoreEnd diff --git a/artifacts/tx-indexer/static.files/FiraSans-LICENSE-db4b642586e02d97.txt b/artifacts/tx-indexer/static.files/FiraSans-LICENSE-db4b642586e02d97.txt new file mode 100644 index 0000000..d7e9c14 --- /dev/null +++ b/artifacts/tx-indexer/static.files/FiraSans-LICENSE-db4b642586e02d97.txt @@ -0,0 +1,98 @@ +// REUSE-IgnoreStart + +Digitized data copyright (c) 2012-2015, The Mozilla Foundation and Telefonica S.A. +with Reserved Font Name < Fira >, + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +// REUSE-IgnoreEnd diff --git a/artifacts/tx-indexer/static.files/FiraSans-Medium-8f9a781e4970d388.woff2 b/artifacts/tx-indexer/static.files/FiraSans-Medium-8f9a781e4970d388.woff2 new file mode 100644 index 0000000..7a1e5fc Binary files /dev/null and b/artifacts/tx-indexer/static.files/FiraSans-Medium-8f9a781e4970d388.woff2 differ diff --git a/artifacts/tx-indexer/static.files/FiraSans-Regular-018c141bf0843ffd.woff2 b/artifacts/tx-indexer/static.files/FiraSans-Regular-018c141bf0843ffd.woff2 new file mode 100644 index 0000000..e766e06 Binary files /dev/null and b/artifacts/tx-indexer/static.files/FiraSans-Regular-018c141bf0843ffd.woff2 differ diff --git a/artifacts/tx-indexer/static.files/LICENSE-APACHE-b91fa81cba47b86a.txt b/artifacts/tx-indexer/static.files/LICENSE-APACHE-b91fa81cba47b86a.txt new file mode 100644 index 0000000..16fe87b --- /dev/null +++ b/artifacts/tx-indexer/static.files/LICENSE-APACHE-b91fa81cba47b86a.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/artifacts/tx-indexer/static.files/LICENSE-MIT-65090b722b3f6c56.txt b/artifacts/tx-indexer/static.files/LICENSE-MIT-65090b722b3f6c56.txt new file mode 100644 index 0000000..31aa793 --- /dev/null +++ b/artifacts/tx-indexer/static.files/LICENSE-MIT-65090b722b3f6c56.txt @@ -0,0 +1,23 @@ +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/artifacts/tx-indexer/static.files/NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2 b/artifacts/tx-indexer/static.files/NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2 new file mode 100644 index 0000000..1866ad4 Binary files /dev/null and b/artifacts/tx-indexer/static.files/NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2 differ diff --git a/artifacts/tx-indexer/static.files/NanumBarunGothic-LICENSE-18c5adf4b52b4041.txt b/artifacts/tx-indexer/static.files/NanumBarunGothic-LICENSE-18c5adf4b52b4041.txt new file mode 100644 index 0000000..4b3edc2 --- /dev/null +++ b/artifacts/tx-indexer/static.files/NanumBarunGothic-LICENSE-18c5adf4b52b4041.txt @@ -0,0 +1,103 @@ +// REUSE-IgnoreStart + +Copyright (c) 2010, NAVER Corporation (https://www.navercorp.com/), + +with Reserved Font Name Nanum, Naver Nanum, NanumGothic, Naver NanumGothic, +NanumMyeongjo, Naver NanumMyeongjo, NanumBrush, Naver NanumBrush, NanumPen, +Naver NanumPen, Naver NanumGothicEco, NanumGothicEco, Naver NanumMyeongjoEco, +NanumMyeongjoEco, Naver NanumGothicLight, NanumGothicLight, NanumBarunGothic, +Naver NanumBarunGothic, NanumSquareRound, NanumBarunPen, MaruBuri + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +// REUSE-IgnoreEnd diff --git a/artifacts/tx-indexer/static.files/SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2 b/artifacts/tx-indexer/static.files/SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2 new file mode 100644 index 0000000..462c34e Binary files /dev/null and b/artifacts/tx-indexer/static.files/SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2 differ diff --git a/artifacts/tx-indexer/static.files/SourceCodePro-LICENSE-d180d465a756484a.txt b/artifacts/tx-indexer/static.files/SourceCodePro-LICENSE-d180d465a756484a.txt new file mode 100644 index 0000000..0d2941e --- /dev/null +++ b/artifacts/tx-indexer/static.files/SourceCodePro-LICENSE-d180d465a756484a.txt @@ -0,0 +1,97 @@ +// REUSE-IgnoreStart + +Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +// REUSE-IgnoreEnd diff --git a/artifacts/tx-indexer/static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2 b/artifacts/tx-indexer/static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2 new file mode 100644 index 0000000..10b558e Binary files /dev/null and b/artifacts/tx-indexer/static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2 differ diff --git a/artifacts/tx-indexer/static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2 b/artifacts/tx-indexer/static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2 new file mode 100644 index 0000000..5ec64ee Binary files /dev/null and b/artifacts/tx-indexer/static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2 differ diff --git a/artifacts/tx-indexer/static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2 b/artifacts/tx-indexer/static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2 new file mode 100644 index 0000000..181a07f Binary files /dev/null and b/artifacts/tx-indexer/static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2 differ diff --git a/artifacts/tx-indexer/static.files/SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2 b/artifacts/tx-indexer/static.files/SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2 new file mode 100644 index 0000000..2ae08a7 Binary files /dev/null and b/artifacts/tx-indexer/static.files/SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2 differ diff --git a/artifacts/tx-indexer/static.files/SourceSerif4-LICENSE-3bb119e13b1258b7.md b/artifacts/tx-indexer/static.files/SourceSerif4-LICENSE-3bb119e13b1258b7.md new file mode 100644 index 0000000..175fa4f --- /dev/null +++ b/artifacts/tx-indexer/static.files/SourceSerif4-LICENSE-3bb119e13b1258b7.md @@ -0,0 +1,98 @@ + + +Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. +Copyright 2014 - 2023 Adobe (http://www.adobe.com/), with Reserved Font Name ‘Source’. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + + diff --git a/artifacts/tx-indexer/static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2 b/artifacts/tx-indexer/static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2 new file mode 100644 index 0000000..0263fc3 Binary files /dev/null and b/artifacts/tx-indexer/static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2 differ diff --git a/artifacts/tx-indexer/static.files/clipboard-7571035ce49a181d.svg b/artifacts/tx-indexer/static.files/clipboard-7571035ce49a181d.svg new file mode 100644 index 0000000..8adbd99 --- /dev/null +++ b/artifacts/tx-indexer/static.files/clipboard-7571035ce49a181d.svg @@ -0,0 +1 @@ + diff --git a/artifacts/tx-indexer/static.files/favicon-16x16-8b506e7a72182f1c.png b/artifacts/tx-indexer/static.files/favicon-16x16-8b506e7a72182f1c.png new file mode 100644 index 0000000..ea4b45c Binary files /dev/null and b/artifacts/tx-indexer/static.files/favicon-16x16-8b506e7a72182f1c.png differ diff --git a/artifacts/tx-indexer/static.files/favicon-2c020d218678b618.svg b/artifacts/tx-indexer/static.files/favicon-2c020d218678b618.svg new file mode 100644 index 0000000..8b34b51 --- /dev/null +++ b/artifacts/tx-indexer/static.files/favicon-2c020d218678b618.svg @@ -0,0 +1,24 @@ + + + + + diff --git a/artifacts/tx-indexer/static.files/favicon-32x32-422f7d1d52889060.png b/artifacts/tx-indexer/static.files/favicon-32x32-422f7d1d52889060.png new file mode 100644 index 0000000..69b8613 Binary files /dev/null and b/artifacts/tx-indexer/static.files/favicon-32x32-422f7d1d52889060.png differ diff --git a/artifacts/tx-indexer/static.files/main-12cf3b4f4f9dc36d.js b/artifacts/tx-indexer/static.files/main-12cf3b4f4f9dc36d.js new file mode 100644 index 0000000..1d8d1cc --- /dev/null +++ b/artifacts/tx-indexer/static.files/main-12cf3b4f4f9dc36d.js @@ -0,0 +1,11 @@ +"use strict";window.RUSTDOC_TOOLTIP_HOVER_MS=300;window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS=450;function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}function hideMain(){addClass(document.getElementById(MAIN_ID),"hidden")}function showMain(){removeClass(document.getElementById(MAIN_ID),"hidden")}function blurHandler(event,parentElem,hideCallback){if(!parentElem.contains(document.activeElement)&&!parentElem.contains(event.relatedTarget)){hideCallback()}}window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");function setMobileTopbar(){const mobileTopbar=document.querySelector(".mobile-topbar");const locationTitle=document.querySelector(".sidebar h2.location");if(mobileTopbar){const mobileTitle=document.createElement("h2");mobileTitle.className="location";if(hasClass(document.querySelector(".rustdoc"),"crate")){mobileTitle.innerHTML=`Crate ${window.currentCrate}`}else if(locationTitle){mobileTitle.innerHTML=locationTitle.innerHTML}mobileTopbar.appendChild(mobileTitle)}}function getVirtualKey(ev){if("key"in ev&&typeof ev.key!=="undefined"){return ev.key}const c=ev.charCode||ev.keyCode;if(c===27){return"Escape"}return String.fromCharCode(c)}const MAIN_ID="main-content";const SETTINGS_BUTTON_ID="settings-menu";const ALTERNATIVE_DISPLAY_ID="alternative-display";const NOT_DISPLAYED_ID="not-displayed";const HELP_BUTTON_ID="help-button";function getSettingsButton(){return document.getElementById(SETTINGS_BUTTON_ID)}function getHelpButton(){return document.getElementById(HELP_BUTTON_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}function getOrCreateSection(id,classes){let el=document.getElementById(id);if(!el){el=document.createElement("section");el.id=id;el.className=classes;insertAfter(el,document.getElementById(MAIN_ID))}return el}function getAlternativeDisplayElem(){return getOrCreateSection(ALTERNATIVE_DISPLAY_ID,"content hidden")}function getNotDisplayedElem(){return getOrCreateSection(NOT_DISPLAYED_ID,"hidden")}function switchDisplayedElement(elemToDisplay){const el=getAlternativeDisplayElem();if(el.children.length>0){getNotDisplayedElem().appendChild(el.firstElementChild)}if(elemToDisplay===null){addClass(el,"hidden");showMain();return}el.appendChild(elemToDisplay);hideMain();removeClass(el,"hidden")}function browserSupportsHistoryApi(){return window.history&&typeof window.history.pushState==="function"}function preLoadCss(cssUrl){const link=document.createElement("link");link.href=cssUrl;link.rel="preload";link.as="style";document.getElementsByTagName("head")[0].appendChild(link)}(function(){const isHelpPage=window.location.pathname.endsWith("/help.html");function loadScript(url,errorCallback){const script=document.createElement("script");script.src=url;if(errorCallback!==undefined){script.onerror=errorCallback}document.head.append(script)}getSettingsButton().onclick=event=>{if(event.ctrlKey||event.altKey||event.metaKey){return}window.hideAllModals(false);addClass(getSettingsButton(),"rotate");event.preventDefault();loadScript(getVar("static-root-path")+getVar("settings-js"));setTimeout(()=>{const themes=getVar("themes").split(",");for(const theme of themes){if(theme!==""){preLoadCss(getVar("root-path")+theme+".css")}}},0)};window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:()=>{let el=document.getElementById("search");if(!el){el=document.createElement("section");el.id="search";getNotDisplayedElem().appendChild(el)}return el},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:()=>{if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},isDisplayed:()=>searchState.outputElement().parentElement.id===ALTERNATIVE_DISPLAY_ID,focus:()=>{searchState.input.focus()},defocus:()=>{searchState.input.blur()},showResults:search=>{if(search===null||typeof search==="undefined"){search=searchState.outputElement()}switchDisplayedElement(search);searchState.mouseMovedAfterSearch=false;document.title=searchState.title},removeQueryParameters:()=>{document.title=searchState.titleBeforeSearch;if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.hash)}},hideResults:()=>{switchDisplayedElement(null);searchState.removeQueryParameters()},getQueryStringParams:()=>{const params={};window.location.search.substring(1).split("&").map(s=>{const pair=s.split("=").map(x=>x.replace(/\+/g," "));params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},setup:()=>{const search_input=searchState.input;if(!searchState.input){return}let searchLoaded=false;function sendSearchForm(){document.getElementsByClassName("search-form")[0].submit()}function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(getVar("static-root-path")+getVar("search-js"),sendSearchForm);loadScript(resourcePath("search-index",".js"),sendSearchForm)}}search_input.addEventListener("focus",()=>{search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});if(search_input.value!==""){loadSearch()}const params=searchState.getQueryStringParams();if(params.search!==undefined){searchState.setLoadingSearch();loadSearch()}},setLoadingSearch:()=>{const search=searchState.outputElement();search.innerHTML="

"+searchState.loadingText+"

";searchState.showResults(search)},};const toggleAllDocsId="toggle-all-docs";let savedHash="";function handleHashes(ev){if(ev!==null&&searchState.isDisplayed()&&ev.newURL){switchDisplayedElement(null);const hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}const elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}const pageId=window.location.hash.replace(/^#/,"");if(savedHash!==pageId){savedHash=pageId;if(pageId!==""){expandSection(pageId)}}if(savedHash.startsWith("impl-")){const splitAt=savedHash.indexOf("/");if(splitAt!==-1){const implId=savedHash.slice(0,splitAt);const assocId=savedHash.slice(splitAt+1);const implElem=document.getElementById(implId);if(implElem&&implElem.parentElement.tagName==="SUMMARY"&&implElem.parentElement.parentElement.tagName==="DETAILS"){onEachLazy(implElem.parentElement.parentElement.querySelectorAll(`[id^="${assocId}"]`),item=>{const numbered=/([^-]+)-([0-9]+)/.exec(item.id);if(item.id===assocId||(numbered&&numbered[1]===assocId)){openParentDetails(item);item.scrollIntoView();setTimeout(()=>{window.location.replace("#"+item.id)},0)}})}}}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function handleEscape(ev){searchState.clearInputTimeout();searchState.hideResults();ev.preventDefault();searchState.defocus();window.hideAllModals(true)}function handleShortcut(ev){const disableShortcuts=getSettingValue("disable-shortcuts")==="true";if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"&&document.activeElement.type!=="checkbox"&&document.activeElement.type!=="radio"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":ev.preventDefault();searchState.focus();break;case"+":ev.preventDefault();expandAllDocs();break;case"-":ev.preventDefault();collapseAllDocs();break;case"?":showHelp();break;default:break}}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);function addSidebarItems(){if(!window.SIDEBAR_ITEMS){return}const sidebar=document.getElementsByClassName("sidebar-elems")[0];function block(shortty,id,longty){const filtered=window.SIDEBAR_ITEMS[shortty];if(!filtered){return}const modpath=hasClass(document.querySelector(".rustdoc"),"mod")?"../":"";const h3=document.createElement("h3");h3.innerHTML=`${longty}`;const ul=document.createElement("ul");ul.className="block "+shortty;for(const name of filtered){let path;if(shortty==="mod"){path=`${modpath}${name}/index.html`}else{path=`${modpath}${shortty}.${name}.html`}let current_page=document.location.href.toString();if(current_page.endsWith("/")){current_page+="index.html"}const link=document.createElement("a");link.href=path;if(path===current_page){link.className="current"}link.textContent=name;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebar.appendChild(h3);sidebar.appendChild(ul)}if(sidebar){block("primitive","primitives","Primitive Types");block("mod","modules","Modules");block("macro","macros","Macros");block("struct","structs","Structs");block("enum","enums","Enums");block("constant","constants","Constants");block("static","static","Statics");block("trait","traits","Traits");block("fn","functions","Functions");block("type","types","Type Aliases");block("union","unions","Unions");block("foreigntype","foreign-types","Foreign Types");block("keyword","keywords","Keywords");block("opaque","opaque-types","Opaque Types");block("attr","attributes","Attribute Macros");block("derive","derives","Derive Macros");block("traitalias","trait-aliases","Trait Aliases")}}window.register_implementors=imp=>{const implementors=document.getElementById("implementors-list");const synthetic_implementors=document.getElementById("synthetic-implementors-list");const inlined_types=new Set();const TEXT_IDX=0;const SYNTHETIC_IDX=1;const TYPES_IDX=2;if(synthetic_implementors){onEachLazy(synthetic_implementors.getElementsByClassName("impl"),el=>{const aliases=el.getAttribute("data-aliases");if(!aliases){return}aliases.split(",").forEach(alias=>{inlined_types.add(alias)})})}let currentNbImpls=implementors.getElementsByClassName("impl").length;const traitName=document.querySelector(".main-heading h1 > .trait").textContent;const baseIdName="impl-"+traitName+"-";const libs=Object.getOwnPropertyNames(imp);const script=document.querySelector("script[data-ignore-extern-crates]");const ignoreExternCrates=new Set((script?script.getAttribute("data-ignore-extern-crates"):"").split(","));for(const lib of libs){if(lib===window.currentCrate||ignoreExternCrates.has(lib)){continue}const structs=imp[lib];struct_loop:for(const struct of structs){const list=struct[SYNTHETIC_IDX]?synthetic_implementors:implementors;if(struct[SYNTHETIC_IDX]){for(const struct_type of struct[TYPES_IDX]){if(inlined_types.has(struct_type)){continue struct_loop}inlined_types.add(struct_type)}}const code=document.createElement("h3");code.innerHTML=struct[TEXT_IDX];addClass(code,"code-header");onEachLazy(code.getElementsByTagName("a"),elem=>{const href=elem.getAttribute("href");if(href&&!href.startsWith("#")&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});const currentId=baseIdName+currentNbImpls;const anchor=document.createElement("a");anchor.href="#"+currentId;addClass(anchor,"anchor");const display=document.createElement("div");display.id=currentId;addClass(display,"impl");display.appendChild(anchor);display.appendChild(code);list.appendChild(display);currentNbImpls+=1}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}window.register_type_impls=imp=>{if(!imp||!imp[window.currentCrate]){return}window.pending_type_impls=null;const idMap=new Map();let implementations=document.getElementById("implementations-list");let trait_implementations=document.getElementById("trait-implementations-list");let trait_implementations_header=document.getElementById("trait-implementations");const script=document.querySelector("script[data-self-path]");const selfPath=script?script.getAttribute("data-self-path"):null;const mainContent=document.querySelector("#main-content");const sidebarSection=document.querySelector(".sidebar section");let methods=document.querySelector(".sidebar .block.method");let associatedTypes=document.querySelector(".sidebar .block.associatedtype");let associatedConstants=document.querySelector(".sidebar .block.associatedconstant");let sidebarTraitList=document.querySelector(".sidebar .block.trait-implementation");for(const impList of imp[window.currentCrate]){const types=impList.slice(2);const text=impList[0];const isTrait=impList[1]!==0;const traitName=impList[1];if(types.indexOf(selfPath)===-1){continue}let outputList=isTrait?trait_implementations:implementations;if(outputList===null){const outputListName=isTrait?"Trait Implementations":"Implementations";const outputListId=isTrait?"trait-implementations-list":"implementations-list";const outputListHeaderId=isTrait?"trait-implementations":"implementations";const outputListHeader=document.createElement("h2");outputListHeader.id=outputListHeaderId;outputListHeader.innerText=outputListName;outputList=document.createElement("div");outputList.id=outputListId;if(isTrait){const link=document.createElement("a");link.href=`#${outputListHeaderId}`;link.innerText="Trait Implementations";const h=document.createElement("h3");h.appendChild(link);trait_implementations=outputList;trait_implementations_header=outputListHeader;sidebarSection.appendChild(h);sidebarTraitList=document.createElement("ul");sidebarTraitList.className="block trait-implementation";sidebarSection.appendChild(sidebarTraitList);mainContent.appendChild(outputListHeader);mainContent.appendChild(outputList)}else{implementations=outputList;if(trait_implementations){mainContent.insertBefore(outputListHeader,trait_implementations_header);mainContent.insertBefore(outputList,trait_implementations_header)}else{const mainContent=document.querySelector("#main-content");mainContent.appendChild(outputListHeader);mainContent.appendChild(outputList)}}}const template=document.createElement("template");template.innerHTML=text;onEachLazy(template.content.querySelectorAll("a"),elem=>{const href=elem.getAttribute("href");if(href&&!href.startsWith("#")&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});onEachLazy(template.content.querySelectorAll("[id]"),el=>{let i=0;if(idMap.has(el.id)){i=idMap.get(el.id)}else if(document.getElementById(el.id)){i=1;while(document.getElementById(`${el.id}-${2 * i}`)){i=2*i}while(document.getElementById(`${el.id}-${i}`)){i+=1}}if(i!==0){const oldHref=`#${el.id}`;const newHref=`#${el.id}-${i}`;el.id=`${el.id}-${i}`;onEachLazy(template.content.querySelectorAll("a[href]"),link=>{if(link.getAttribute("href")===oldHref){link.href=newHref}})}idMap.set(el.id,i+1)});const templateAssocItems=template.content.querySelectorAll("section.tymethod, "+"section.method, section.associatedtype, section.associatedconstant");if(isTrait){const li=document.createElement("li");const a=document.createElement("a");a.href=`#${template.content.querySelector(".impl").id}`;a.textContent=traitName;li.appendChild(a);sidebarTraitList.append(li)}else{onEachLazy(templateAssocItems,item=>{let block=hasClass(item,"associatedtype")?associatedTypes:(hasClass(item,"associatedconstant")?associatedConstants:(methods));if(!block){const blockTitle=hasClass(item,"associatedtype")?"Associated Types":(hasClass(item,"associatedconstant")?"Associated Constants":("Methods"));const blockClass=hasClass(item,"associatedtype")?"associatedtype":(hasClass(item,"associatedconstant")?"associatedconstant":("method"));const blockHeader=document.createElement("h3");const blockLink=document.createElement("a");blockLink.href="#implementations";blockLink.innerText=blockTitle;blockHeader.appendChild(blockLink);block=document.createElement("ul");block.className=`block ${blockClass}`;const insertionReference=methods||sidebarTraitList;if(insertionReference){const insertionReferenceH=insertionReference.previousElementSibling;sidebarSection.insertBefore(blockHeader,insertionReferenceH);sidebarSection.insertBefore(block,insertionReferenceH)}else{sidebarSection.appendChild(blockHeader);sidebarSection.appendChild(block)}if(hasClass(item,"associatedtype")){associatedTypes=block}else if(hasClass(item,"associatedconstant")){associatedConstants=block}else{methods=block}}const li=document.createElement("li");const a=document.createElement("a");a.innerText=item.id.split("-")[0].split(".")[1];a.href=`#${item.id}`;li.appendChild(a);block.appendChild(li)})}outputList.appendChild(template.content)}for(const list of[methods,associatedTypes,associatedConstants,sidebarTraitList]){if(!list){continue}const newChildren=Array.prototype.slice.call(list.children);newChildren.sort((a,b)=>{const aI=a.innerText;const bI=b.innerText;return aIbI?1:0});list.replaceChildren(...newChildren)}};if(window.pending_type_impls){window.register_type_impls(window.pending_type_impls)}function addSidebarCrates(){if(!window.ALL_CRATES){return}const sidebarElems=document.getElementsByClassName("sidebar-elems")[0];if(!sidebarElems){return}const h3=document.createElement("h3");h3.innerHTML="Crates";const ul=document.createElement("ul");ul.className="block crate";for(const crate of window.ALL_CRATES){const link=document.createElement("a");link.href=window.rootPath+crate+"/index.html";link.textContent=crate;const li=document.createElement("li");if(window.rootPath!=="./"&&crate===window.currentCrate){li.className="current"}li.appendChild(link);ul.appendChild(li)}sidebarElems.appendChild(h3);sidebarElems.appendChild(ul)}function expandAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hasClass(e,"type-contents-toggle")&&!hasClass(e,"more-examples-toggle")){e.open=true}});innerToggle.title="collapse all docs";innerToggle.children[0].innerText="\u2212"}function collapseAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(e.parentNode.id!=="implementations-list"||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});innerToggle.title="expand all docs";innerToggle.children[0].innerText="+"}function toggleAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}if(hasClass(innerToggle,"will-expand")){expandAllDocs()}else{collapseAllDocs()}}(function(){const toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}const hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";const hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";const hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){const list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),e=>{e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}})}());window.rustdoc_add_line_numbers_to_examples=()=>{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");if(line_numbers.length>0){return}const count=x.textContent.split("\n").length;const elems=[];for(let i=0;i{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");for(const node of line_numbers){parent.removeChild(node)}})};if(getSettingValue("line-numbers")==="true"){window.rustdoc_add_line_numbers_to_examples()}function showSidebar(){window.hideAllModals(false);const sidebar=document.getElementsByClassName("sidebar")[0];addClass(sidebar,"shown")}function hideSidebar(){const sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown")}window.addEventListener("resize",()=>{if(window.CURRENT_TOOLTIP_ELEMENT){const base=window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE;const force_visible=base.TOOLTIP_FORCE_VISIBLE;hideTooltip(false);if(force_visible){showTooltip(base);base.TOOLTIP_FORCE_VISIBLE=true}}});const mainElem=document.getElementById(MAIN_ID);if(mainElem){mainElem.addEventListener("click",hideSidebar)}onEachLazy(document.querySelectorAll("a[href^='#']"),el=>{el.addEventListener("click",()=>{expandSection(el.hash.slice(1));hideSidebar()})});onEachLazy(document.querySelectorAll(".toggle > summary:not(.hideme)"),el=>{el.addEventListener("click",e=>{if(e.target.tagName!=="SUMMARY"&&e.target.tagName!=="A"){e.preventDefault()}})});function showTooltip(e){const notable_ty=e.getAttribute("data-notable-ty");if(!window.NOTABLE_TRAITS&¬able_ty){const data=document.getElementById("notable-traits-data");if(data){window.NOTABLE_TRAITS=JSON.parse(data.innerText)}else{throw new Error("showTooltip() called with notable without any notable traits!")}}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE===e){clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);return}window.hideAllModals(false);const wrapper=document.createElement("div");if(notable_ty){wrapper.innerHTML="
"+window.NOTABLE_TRAITS[notable_ty]+"
"}else{if(e.getAttribute("title")!==null){e.setAttribute("data-title",e.getAttribute("title"));e.removeAttribute("title")}if(e.getAttribute("data-title")!==null){const titleContent=document.createElement("div");titleContent.className="content";titleContent.appendChild(document.createTextNode(e.getAttribute("data-title")));wrapper.appendChild(titleContent)}}wrapper.className="tooltip popover";const focusCatcher=document.createElement("div");focusCatcher.setAttribute("tabindex","0");focusCatcher.onfocus=hideTooltip;wrapper.appendChild(focusCatcher);const pos=e.getBoundingClientRect();wrapper.style.top=(pos.top+window.scrollY+pos.height)+"px";wrapper.style.left=0;wrapper.style.right="auto";wrapper.style.visibility="hidden";const body=document.getElementsByTagName("body")[0];body.appendChild(wrapper);const wrapperPos=wrapper.getBoundingClientRect();const finalPos=pos.left+window.scrollX-wrapperPos.width+24;if(finalPos>0){wrapper.style.left=finalPos+"px"}else{wrapper.style.setProperty("--popover-arrow-offset",(wrapperPos.right-pos.right+4)+"px")}wrapper.style.visibility="";window.CURRENT_TOOLTIP_ELEMENT=wrapper;window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE=e;clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);wrapper.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}clearTooltipHoverTimeout(e)};wrapper.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!e.contains(ev.relatedTarget)){setTooltipHoverTimeout(e,false);addClass(wrapper,"fade-out")}}}function setTooltipHoverTimeout(element,show){clearTooltipHoverTimeout(element);if(!show&&!window.CURRENT_TOOLTIP_ELEMENT){return}if(show&&window.CURRENT_TOOLTIP_ELEMENT){return}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE!==element){return}element.TOOLTIP_HOVER_TIMEOUT=setTimeout(()=>{if(show){showTooltip(element)}else if(!element.TOOLTIP_FORCE_VISIBLE){hideTooltip(false)}},show?window.RUSTDOC_TOOLTIP_HOVER_MS:window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS)}function clearTooltipHoverTimeout(element){if(element.TOOLTIP_HOVER_TIMEOUT!==undefined){removeClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out");clearTimeout(element.TOOLTIP_HOVER_TIMEOUT);delete element.TOOLTIP_HOVER_TIMEOUT}}function tooltipBlurHandler(event){if(window.CURRENT_TOOLTIP_ELEMENT&&!window.CURRENT_TOOLTIP_ELEMENT.contains(document.activeElement)&&!window.CURRENT_TOOLTIP_ELEMENT.contains(event.relatedTarget)&&!window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.contains(document.activeElement)&&!window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.contains(event.relatedTarget)){setTimeout(()=>hideTooltip(false),0)}}function hideTooltip(focus){if(window.CURRENT_TOOLTIP_ELEMENT){if(window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE){if(focus){window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.focus()}window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE=false}const body=document.getElementsByTagName("body")[0];body.removeChild(window.CURRENT_TOOLTIP_ELEMENT);clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);window.CURRENT_TOOLTIP_ELEMENT=null}}onEachLazy(document.getElementsByClassName("tooltip"),e=>{e.onclick=()=>{e.TOOLTIP_FORCE_VISIBLE=e.TOOLTIP_FORCE_VISIBLE?false:true;if(window.CURRENT_TOOLTIP_ELEMENT&&!e.TOOLTIP_FORCE_VISIBLE){hideTooltip(true)}else{showTooltip(e);window.CURRENT_TOOLTIP_ELEMENT.setAttribute("tabindex","0");window.CURRENT_TOOLTIP_ELEMENT.focus();window.CURRENT_TOOLTIP_ELEMENT.onblur=tooltipBlurHandler}return false};e.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointermove=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&window.CURRENT_TOOLTIP_ELEMENT&&!window.CURRENT_TOOLTIP_ELEMENT.contains(ev.relatedTarget)){setTooltipHoverTimeout(e,false);addClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out")}}});const sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",()=>{const sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){showSidebar()}else{hideSidebar()}})}function helpBlurHandler(event){blurHandler(event,getHelpButton(),window.hidePopoverMenus)}function buildHelpMenu(){const book_info=document.createElement("span");const channel=getVar("channel");book_info.className="top";book_info.innerHTML=`You can find more information in \ +the rustdoc book.`;const shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(x=>"
"+x[0].split(" ").map((y,index)=>((index&1)===0?""+y+"":" "+y+" ")).join("")+"
"+x[1]+"
").join("");const div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

Keyboard Shortcuts

"+shortcuts+"
";const infos=[`For a full list of all search features, take a look here.`,"Prefix searches with a type followed by a colon (e.g., fn:) to \ + restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ + enum, trait, type, macro, \ + and const.","Search functions by type signature (e.g., vec -> usize or \ + -> vec or String, enum:Cow -> bool)","You can look for items with an exact name by putting double quotes around \ + your request: \"string\"","Look for functions that accept or return \ + slices and \ + arrays by writing \ + square brackets (e.g., -> [u8] or [] -> Option)","Look for items inside another one by searching for a path: vec::Vec",].map(x=>"

"+x+"

").join("");const div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

Search Tricks

"+infos;const rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";const rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);const container=document.createElement("div");if(!isHelpPage){container.className="popover"}container.id="help";container.style.display="none";const side_by_side=document.createElement("div");side_by_side.className="side-by-side";side_by_side.appendChild(div_shortcuts);side_by_side.appendChild(div_infos);container.appendChild(book_info);container.appendChild(side_by_side);container.appendChild(rustdoc_version);if(isHelpPage){const help_section=document.createElement("section");help_section.appendChild(container);document.getElementById("main-content").appendChild(help_section);container.style.display="block"}else{const help_button=getHelpButton();help_button.appendChild(container);container.onblur=helpBlurHandler;help_button.onblur=helpBlurHandler;help_button.children[0].onblur=helpBlurHandler}return container}window.hideAllModals=switchFocus=>{hideSidebar();window.hidePopoverMenus();hideTooltip(switchFocus)};window.hidePopoverMenus=()=>{onEachLazy(document.querySelectorAll(".search-form .popover"),elem=>{elem.style.display="none"})};function getHelpMenu(buildNeeded){let menu=getHelpButton().querySelector(".popover");if(!menu&&buildNeeded){menu=buildHelpMenu()}return menu}function showHelp(){getHelpButton().querySelector("a").focus();const menu=getHelpMenu(true);if(menu.style.display==="none"){window.hideAllModals();menu.style.display=""}}if(isHelpPage){showHelp();document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault()})}else{document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault();const menu=getHelpMenu(true);const shouldShowHelp=menu.style.display==="none";if(shouldShowHelp){showHelp()}else{window.hidePopoverMenus()}})}setMobileTopbar();addSidebarItems();addSidebarCrates();onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){const SIDEBAR_MIN=100;const SIDEBAR_MAX=500;const RUSTDOC_MOBILE_BREAKPOINT=700;const BODY_MIN=400;const SIDEBAR_VANISH_THRESHOLD=SIDEBAR_MIN/2;const sidebarButton=document.getElementById("sidebar-button");if(sidebarButton){sidebarButton.addEventListener("click",e=>{removeClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","false");if(document.querySelector(".rustdoc.src")){window.rustdocToggleSrcSidebar()}e.preventDefault()})}let currentPointerId=null;let desiredSidebarSize=null;let pendingSidebarResizingFrame=false;const resizer=document.querySelector(".sidebar-resizer");const sidebar=document.querySelector(".sidebar");if(!resizer||!sidebar){return}const isSrcPage=hasClass(document.body,"src");function hideSidebar(){if(isSrcPage){window.rustdocCloseSourceSidebar();updateLocalStorage("src-sidebar-width",null);document.documentElement.style.removeProperty("--src-sidebar-width");sidebar.style.removeProperty("--src-sidebar-width");resizer.style.removeProperty("--src-sidebar-width")}else{addClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","true");updateLocalStorage("desktop-sidebar-width",null);document.documentElement.style.removeProperty("--desktop-sidebar-width");sidebar.style.removeProperty("--desktop-sidebar-width");resizer.style.removeProperty("--desktop-sidebar-width")}}function showSidebar(){if(isSrcPage){window.rustdocShowSourceSidebar()}else{removeClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","false")}}function changeSidebarSize(size){if(isSrcPage){updateLocalStorage("src-sidebar-width",size);sidebar.style.setProperty("--src-sidebar-width",size+"px");resizer.style.setProperty("--src-sidebar-width",size+"px")}else{updateLocalStorage("desktop-sidebar-width",size);sidebar.style.setProperty("--desktop-sidebar-width",size+"px");resizer.style.setProperty("--desktop-sidebar-width",size+"px")}}function isSidebarHidden(){return isSrcPage?!hasClass(document.documentElement,"src-sidebar-expanded"):hasClass(document.documentElement,"hide-sidebar")}function resize(e){if(currentPointerId===null||currentPointerId!==e.pointerId){return}e.preventDefault();const pos=e.clientX-3;if(pos=SIDEBAR_MIN){if(isSidebarHidden()){showSidebar()}const constrainedPos=Math.min(pos,window.innerWidth-BODY_MIN,SIDEBAR_MAX);changeSidebarSize(constrainedPos);desiredSidebarSize=constrainedPos;if(pendingSidebarResizingFrame!==false){clearTimeout(pendingSidebarResizingFrame)}pendingSidebarResizingFrame=setTimeout(()=>{if(currentPointerId===null||pendingSidebarResizingFrame===false){return}pendingSidebarResizingFrame=false;document.documentElement.style.setProperty("--resizing-sidebar-width",desiredSidebarSize+"px")},100)}}window.addEventListener("resize",()=>{if(window.innerWidth=(window.innerWidth-BODY_MIN)){changeSidebarSize(window.innerWidth-BODY_MIN)}else if(desiredSidebarSize!==null&&desiredSidebarSize>SIDEBAR_MIN){changeSidebarSize(desiredSidebarSize)}});function stopResize(e){if(currentPointerId===null){return}if(e){e.preventDefault()}desiredSidebarSize=sidebar.getBoundingClientRect().width;removeClass(resizer,"active");window.removeEventListener("pointermove",resize,false);window.removeEventListener("pointerup",stopResize,false);removeClass(document.documentElement,"sidebar-resizing");document.documentElement.style.removeProperty("--resizing-sidebar-width");if(resizer.releasePointerCapture){resizer.releasePointerCapture(currentPointerId);currentPointerId=null}}function initResize(e){if(currentPointerId!==null||e.altKey||e.ctrlKey||e.metaKey||e.button!==0){return}if(resizer.setPointerCapture){resizer.setPointerCapture(e.pointerId);if(!resizer.hasPointerCapture(e.pointerId)){resizer.releasePointerCapture(e.pointerId);return}currentPointerId=e.pointerId}window.hideAllModals(false);e.preventDefault();window.addEventListener("pointermove",resize,false);window.addEventListener("pointercancel",stopResize,false);window.addEventListener("pointerup",stopResize,false);addClass(resizer,"active");addClass(document.documentElement,"sidebar-resizing");const pos=e.clientX-sidebar.offsetLeft-3;document.documentElement.style.setProperty("--resizing-sidebar-width",pos+"px");desiredSidebarSize=null}resizer.addEventListener("pointerdown",initResize,false)}());(function(){let reset_button_timeout=null;const but=document.getElementById("copy-path");if(!but){return}but.onclick=()=>{const parent=but.parentElement;const path=[];onEach(parent.childNodes,child=>{if(child.tagName==="A"){path.push(child.textContent)}});const el=document.createElement("textarea");el.value=path.join("::");el.setAttribute("readonly","");el.style.position="absolute";el.style.left="-9999px";document.body.appendChild(el);el.select();document.execCommand("copy");document.body.removeChild(el);but.children[0].style.display="none";let tmp;if(but.childNodes.length<2){tmp=document.createTextNode("✓");but.appendChild(tmp)}else{onEachLazy(but.childNodes,e=>{if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent="✓"}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent="";reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}()) \ No newline at end of file diff --git a/artifacts/tx-indexer/static.files/normalize-76eba96aa4d2e634.css b/artifacts/tx-indexer/static.files/normalize-76eba96aa4d2e634.css new file mode 100644 index 0000000..469959f --- /dev/null +++ b/artifacts/tx-indexer/static.files/normalize-76eba96aa4d2e634.css @@ -0,0 +1,2 @@ + /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ +html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type="button"],[type="reset"],[type="submit"],button{-webkit-appearance:button}[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none} \ No newline at end of file diff --git a/artifacts/tx-indexer/static.files/noscript-04d5337699b92874.css b/artifacts/tx-indexer/static.files/noscript-04d5337699b92874.css new file mode 100644 index 0000000..fbd55f5 --- /dev/null +++ b/artifacts/tx-indexer/static.files/noscript-04d5337699b92874.css @@ -0,0 +1 @@ + #main-content .attributes{margin-left:0 !important;}#copy-path,#sidebar-button,.sidebar-resizer{display:none !important;}nav.sub{display:none;}.src .sidebar{display:none;}.notable-traits{display:none;}:root{--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--mobile-sidebar-menu-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:rgb(78,139,202);--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);--sidebar-resizer-hover:hsl(207,90%,66%);--sidebar-resizer-active:hsl(207,90%,54%);}@media (prefers-color-scheme:dark){:root{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);--sidebar-resizer-hover:hsl(207,30%,54%);--sidebar-resizer-active:hsl(207,90%,54%);}} \ No newline at end of file diff --git a/artifacts/tx-indexer/static.files/rust-logo-151179464ae7ed46.svg b/artifacts/tx-indexer/static.files/rust-logo-151179464ae7ed46.svg new file mode 100644 index 0000000..62424d8 --- /dev/null +++ b/artifacts/tx-indexer/static.files/rust-logo-151179464ae7ed46.svg @@ -0,0 +1,61 @@ + + + diff --git a/artifacts/tx-indexer/static.files/rustdoc-e935ef01ae1c1829.css b/artifacts/tx-indexer/static.files/rustdoc-e935ef01ae1c1829.css new file mode 100644 index 0000000..37ac48c --- /dev/null +++ b/artifacts/tx-indexer/static.files/rustdoc-e935ef01ae1c1829.css @@ -0,0 +1,24 @@ + :root{--nav-sub-mobile-padding:8px;--search-typename-width:6.75rem;--desktop-sidebar-width:200px;--src-sidebar-width:300px;--desktop-sidebar-z-index:100;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular-018c141bf0843ffd.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium-8f9a781e4970d388.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular-46f98efaafac5295.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2") format("woff2");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{box-sizing:border-box;}body{font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;font-feature-settings:"kern","liga";background-color:var(--main-background-color);color:var(--main-color);}h1{font-size:1.5rem;}h2{font-size:1.375rem;}h3{font-size:1.25rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:25px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}.docblock>h2:first-child,.docblock>h3:first-child,.docblock>h4:first-child,.docblock>h5:first-child,.docblock>h6:first-child{margin-top:0;}.main-heading h1{margin:0;padding:0;flex-grow:1;overflow-wrap:break-word;overflow-wrap:anywhere;}.main-heading{display:flex;flex-wrap:wrap;padding-bottom:6px;margin-bottom:15px;}.content h2,.top-doc .docblock>h3,.top-doc .docblock>h4{border-bottom:1px solid var(--headings-border-bottom-color);}h1,h2{line-height:1.25;padding-top:3px;padding-bottom:9px;}h3.code-header{font-size:1.125rem;}h4.code-header{font-size:1rem;}.code-header{font-weight:600;margin:0;padding:0;white-space:pre-wrap;}#crate-search,h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,.search-input,.search-results .result-name,.item-name>a,.out-of-band,span.since,a.src,#help-button>a,summary.hideme,.scraped-example-list,ul.all-items{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}#toggle-all-docs,a.anchor,.section-header a,#src-sidebar a,.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,h1 a,.search-results a,.stab,.result-name i{color:var(--main-color);}span.enum,a.enum,span.struct,a.struct,span.union,a.union,span.primitive,a.primitive,span.type,a.type,span.foreigntype,a.foreigntype{color:var(--type-link-color);}span.trait,a.trait,span.traitalias,a.traitalias{color:var(--trait-link-color);}span.associatedtype,a.associatedtype,span.constant,a.constant,span.static,a.static{color:var(--assoc-item-link-color);}span.fn,a.fn,span.method,a.method,span.tymethod,a.tymethod{color:var(--function-link-color);}span.attr,a.attr,span.derive,a.derive,span.macro,a.macro{color:var(--macro-link-color);}span.mod,a.mod{color:var(--mod-link-color);}span.keyword,a.keyword{color:var(--keyword-link-color);}a{color:var(--link-color);text-decoration:none;}ol,ul{padding-left:24px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.625em;}p,.docblock>.warning{margin:0 0 .75em 0;}p:last-child,.docblock>.warning:last-child{margin:0;}button{padding:1px 6px;cursor:pointer;}button#toggle-all-docs{padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.src main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}details:not(.toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.125em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;line-height:1.5;}pre.item-decl{overflow-x:auto;}.item-decl .type-contents-toggle{contain:initial;}.src .content pre{padding:20px;}.rustdoc.src .example-wrap pre.src-line-numbers{padding:20px 0 20px 4px;}img{max-width:100%;}.logo-container{line-height:0;display:block;}.rust-logo{filter:var(--rust-logo-filter);}.sidebar{font-size:0.875rem;flex:0 0 var(--desktop-sidebar-width);width:var(--desktop-sidebar-width);overflow-y:scroll;overscroll-behavior:contain;position:sticky;height:100vh;top:0;left:0;z-index:var(--desktop-sidebar-z-index);}.rustdoc.src .sidebar{flex-basis:50px;width:50px;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;}.hide-sidebar .sidebar,.hide-sidebar .sidebar-resizer{display:none;}.sidebar-resizer{touch-action:none;width:9px;cursor:col-resize;z-index:calc(var(--desktop-sidebar-z-index) + 1);position:fixed;height:100%;left:calc(var(--desktop-sidebar-width) + 1px);}.rustdoc.src .sidebar-resizer{left:49px;}.src-sidebar-expanded .src .sidebar-resizer{left:var(--src-sidebar-width);}.sidebar-resizing{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;}.sidebar-resizing*{cursor:col-resize !important;}.sidebar-resizing .sidebar{position:fixed;}.sidebar-resizing>body{padding-left:var(--resizing-sidebar-width);}.sidebar-resizer:hover,.sidebar-resizer:active,.sidebar-resizer:focus,.sidebar-resizer.active{width:10px;margin:0;left:var(--desktop-sidebar-width);border-left:solid 1px var(--sidebar-resizer-hover);}.src-sidebar-expanded .rustdoc.src .sidebar-resizer:hover,.src-sidebar-expanded .rustdoc.src .sidebar-resizer:active,.src-sidebar-expanded .rustdoc.src .sidebar-resizer:focus,.src-sidebar-expanded .rustdoc.src .sidebar-resizer.active{left:calc(var(--src-sidebar-width) - 1px);}@media (pointer:coarse){.sidebar-resizer{display:none !important;}}.sidebar-resizer.active{padding:0 140px;width:2px;margin-left:-140px;border-left:none;}.sidebar-resizer.active:before{border-left:solid 2px var(--sidebar-resizer-active);display:block;height:100%;content:"";}.sidebar,.mobile-topbar,.sidebar-menu-toggle,#src-sidebar{background-color:var(--sidebar-background-color);}.src .sidebar>*{visibility:hidden;}.src-sidebar-expanded .src .sidebar{overflow-y:auto;flex-basis:var(--src-sidebar-width);width:var(--src-sidebar-width);}.src-sidebar-expanded .src .sidebar>*{visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;scrollbar-color:var(--scrollbar-color);}.sidebar{scrollbar-width:thin;scrollbar-color:var(--scrollbar-color);}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;background-color:var(--scrollbar-track-background-color);}.sidebar::-webkit-scrollbar-track{background-color:var(--scrollbar-track-background-color);}::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-background-color);}.hidden{display:none !important;}.logo-container>img{height:48px;width:48px;}ul.block,.block li{padding:0;margin:0;list-style:none;}.sidebar-elems a,.sidebar>h2 a{display:block;padding:0.25rem;margin-left:-0.25rem;margin-right:0.25rem;}.sidebar h2{overflow-wrap:anywhere;padding:0;margin:0.7rem 0;}.sidebar h3{font-size:1.125rem;padding:0;margin:0;}.sidebar-elems,.sidebar>.version,.sidebar>h2{padding-left:24px;}.sidebar a{color:var(--sidebar-link-color);}.sidebar .current,.sidebar .current a,.sidebar-crate a.logo-container:hover+h2 a,.sidebar a:hover:not(.logo-container){background-color:var(--sidebar-current-link-background-color);}.sidebar-elems .block{margin-bottom:2em;}.sidebar-elems .block li a{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.sidebar-crate{display:flex;align-items:center;justify-content:center;margin:14px 32px 1rem;row-gap:10px;column-gap:32px;flex-wrap:wrap;}.sidebar-crate h2{flex-grow:1;margin:0 -8px;align-self:start;}.sidebar-crate .logo-container{margin:0 -16px 0 -16px;text-align:center;}.sidebar-crate h2 a{display:block;margin:0 calc(-24px + 0.25rem) 0 -0.2rem;padding:calc((16px - 0.57rem ) / 2 ) 0.25rem;padding-left:0.2rem;}.sidebar-crate h2 .version{display:block;font-weight:normal;font-size:1rem;overflow-wrap:break-word;}.sidebar-crate+.version{margin-top:-1rem;margin-bottom:1rem;}.mobile-topbar{display:none;}.rustdoc .example-wrap{display:flex;position:relative;margin-bottom:10px;}.rustdoc .example-wrap:last-child{margin-bottom:0px;}.rustdoc .example-wrap pre{margin:0;flex-grow:1;}.rustdoc:not(.src) .example-wrap pre{overflow:auto hidden;}.rustdoc .example-wrap pre.example-line-numbers,.rustdoc .example-wrap pre.src-line-numbers{flex-grow:0;min-width:fit-content;overflow:initial;text-align:right;-webkit-user-select:none;user-select:none;padding:14px 8px;color:var(--src-line-numbers-span-color);}.rustdoc .example-wrap pre.src-line-numbers{padding:14px 0;}.src-line-numbers a,.src-line-numbers span{color:var(--src-line-numbers-span-color);padding:0 8px;}.src-line-numbers :target{background-color:transparent;border-right:none;padding:0 8px;}.src-line-numbers .line-highlighted{background-color:var(--src-line-number-highlighted-background-color);}.search-loading{text-align:center;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock :not(pre)>code,.docblock-short code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.375rem;}.top-doc .docblock h3{font-size:1.25rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.125rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.875rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.more-examples-toggle):not(.example-wrap){max-width:100%;overflow-x:auto;}.out-of-band{flex-grow:0;font-size:1.125rem;}.docblock code,.docblock-short code,pre,.rustdoc.src .example-wrap{background-color:var(--code-block-background-color);}#main-content{position:relative;}.docblock table{margin:.5em 0;border-collapse:collapse;}.docblock table td,.docblock table th{padding:.5em;border:1px solid var(--border-color);}.docblock table tbody tr:nth-child(2n){background:var(--table-alt-row-background-color);}div.where{white-space:pre-wrap;font-size:0.875rem;}.item-info{display:block;margin-left:24px;}.item-info code{font-size:0.875rem;}#main-content>.item-info{margin-left:0;}nav.sub{flex-grow:1;flex-flow:row nowrap;margin:4px 0 25px 0;display:flex;align-items:center;}.search-form{position:relative;display:flex;height:34px;flex-grow:1;}.src nav.sub{margin:0 0 15px 0;}.section-header{display:block;position:relative;}.section-header:hover>.anchor,.impl:hover>.anchor,.trait-impl:hover>.anchor,.variant:hover>.anchor{display:initial;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.section-header>.anchor{left:-15px;padding-right:8px;}h2.section-header>.anchor{padding-right:6px;}a.doc-anchor{color:var(--main-color);display:none;position:absolute;left:-17px;padding-right:5px;padding-left:3px;}*:hover>.doc-anchor{display:block;}.top-doc>.docblock>*:first-child>.doc-anchor{display:none !important;}.main-heading a:hover,.example-wrap .rust a:hover,.all-items a:hover,.docblock a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover:not(.doc-anchor),.docblock-short a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover,.item-info a{text-decoration:underline;}.crate.block li.current a{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;padding:0;margin:0;}.item-table>li{display:table-row;}.item-table>li>div{display:table-cell;}.item-table>li>.item-name{padding-right:1.25rem;}.search-results-title{margin-top:0;white-space:nowrap;display:flex;align-items:baseline;}#crate-search-div{position:relative;min-width:5em;}#crate-search{min-width:115px;padding:0 23px 0 4px;max-width:100%;text-overflow:ellipsis;border:1px solid var(--border-color);border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;background-color:var(--main-background-color);color:inherit;line-height:1.5;font-weight:500;}#crate-search:hover,#crate-search:focus{border-color:var(--crate-search-hover-border);}#crate-search-div::after{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;content:"";background-repeat:no-repeat;background-size:20px;background-position:calc(100% - 2px) 56%;background-image:url('data:image/svg+xml, \ + ');filter:var(--crate-search-div-filter);}#crate-search-div:hover::after,#crate-search-div:focus-within::after{filter:var(--crate-search-div-hover-filter);}#crate-search>option{font-size:1rem;}.search-input{-webkit-appearance:none;outline:none;border:1px solid var(--border-color);border-radius:2px;padding:8px;font-size:1rem;flex-grow:1;background-color:var(--button-background-color);color:var(--search-color);}.search-input:focus{border-color:var(--search-input-focused-border-color);}.search-results{display:none;}.search-results.active{display:block;}.search-results>a{display:flex;margin-left:2px;margin-right:2px;border-bottom:1px solid var(--search-result-border-color);gap:1em;}.search-results>a>div.desc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex:2;}.search-results a:hover,.search-results a:focus{background-color:var(--search-result-link-focus-background-color);}.search-results .result-name{display:flex;align-items:center;justify-content:start;flex:3;}.search-results .result-name .alias{color:var(--search-results-alias-color);}.search-results .result-name .grey{color:var(--search-results-grey-color);}.search-results .result-name .typename{color:var(--search-results-grey-color);font-size:0.875rem;width:var(--search-typename-width);}.search-results .result-name .path{word-break:break-all;max-width:calc(100% - var(--search-typename-width));display:inline-block;}.search-results .result-name .path>*{display:inline;}.popover{position:absolute;top:100%;right:0;z-index:calc(var(--desktop-sidebar-z-index) + 1);margin-top:7px;border-radius:3px;border:1px solid var(--border-color);background-color:var(--main-background-color);color:var(--main-color);--popover-arrow-offset:11px;}.popover::before{content:'';position:absolute;right:var(--popover-arrow-offset);border:solid var(--border-color);border-width:1px 1px 0 0;background-color:var(--main-background-color);padding:4px;transform:rotate(-45deg);top:-5px;}.setting-line{margin:1.2em 0.6em;}.setting-radio input,.setting-check input{margin-right:0.3em;height:1.2rem;width:1.2rem;border:2px solid var(--settings-input-border-color);outline:none;-webkit-appearance:none;cursor:pointer;}.setting-radio input{border-radius:50%;}.setting-radio span,.setting-check span{padding-bottom:1px;}.setting-radio{margin-top:0.1em;margin-bottom:0.1em;min-width:3.8em;padding:0.3em;display:inline-flex;align-items:center;cursor:pointer;}.setting-radio+.setting-radio{margin-left:0.5em;}.setting-check{margin-right:20px;display:flex;align-items:center;cursor:pointer;}.setting-radio input:checked{box-shadow:inset 0 0 0 3px var(--main-background-color);background-color:var(--settings-input-color);}.setting-check input:checked{background-color:var(--settings-input-color);border-width:1px;content:url('data:image/svg+xml,\ + \ + ');}.setting-radio input:focus,.setting-check input:focus{box-shadow:0 0 1px 1px var(--settings-input-color);}.setting-radio input:checked:focus{box-shadow:inset 0 0 0 3px var(--main-background-color),0 0 2px 2px var(--settings-input-color);}.setting-radio input:hover,.setting-check input:hover{border-color:var(--settings-input-color) !important;}#help.popover{max-width:600px;--popover-arrow-offset:48px;}#help dt{float:left;clear:left;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{margin:10px 0;border-bottom:1px solid var(--border-color);padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid var(--border-color);}.side-by-side>div{width:50%;float:left;padding:0 20px 20px 17px;}.item-info .stab{display:block;padding:3px;margin-bottom:5px;}.item-name .stab{margin-left:0.3125em;}.stab{padding:0 2px;font-size:0.875rem;font-weight:normal;color:var(--main-color);background-color:var(--stab-background-color);width:fit-content;white-space:pre-wrap;border-radius:3px;display:inline;vertical-align:baseline;}.stab.portability>code{background:none;color:var(--stab-code-color);}.stab .emoji,.item-info .stab::before{font-size:1.25rem;}.stab .emoji{margin-right:0.3rem;}.item-info .stab::before{content:"\0";width:0;display:inline-block;color:transparent;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;float:right;}.rightside:not(a),.out-of-band{color:var(--right-side-color);}pre.rust{tab-size:4;-moz-tab-size:4;}pre.rust .kw{color:var(--code-highlight-kw-color);}pre.rust .kw-2{color:var(--code-highlight-kw-2-color);}pre.rust .lifetime{color:var(--code-highlight-lifetime-color);}pre.rust .prelude-ty{color:var(--code-highlight-prelude-color);}pre.rust .prelude-val{color:var(--code-highlight-prelude-val-color);}pre.rust .string{color:var(--code-highlight-string-color);}pre.rust .number{color:var(--code-highlight-number-color);}pre.rust .bool-val{color:var(--code-highlight-literal-color);}pre.rust .self{color:var(--code-highlight-self-color);}pre.rust .attr{color:var(--code-highlight-attribute-color);}pre.rust .macro,pre.rust .macro-nonterminal{color:var(--code-highlight-macro-color);}pre.rust .question-mark{font-weight:bold;color:var(--code-highlight-question-mark-color);}pre.rust .comment{color:var(--code-highlight-comment-color);}pre.rust .doccomment{color:var(--code-highlight-doc-comment-color);}.rustdoc.src .example-wrap pre.rust a{background:var(--codeblock-link-background);}.example-wrap.compile_fail,.example-wrap.should_panic{border-left:2px solid var(--codeblock-error-color);}.ignore.example-wrap{border-left:2px solid var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover,.example-wrap.should_panic:hover{border-left:2px solid var(--codeblock-error-hover-color);}.example-wrap.ignore:hover{border-left:2px solid var(--codeblock-ignore-hover-color);}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip{color:var(--codeblock-error-color);}.example-wrap.ignore .tooltip{color:var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover .tooltip,.example-wrap.should_panic:hover .tooltip{color:var(--codeblock-error-hover-color);}.example-wrap.ignore:hover .tooltip{color:var(--codeblock-ignore-hover-color);}.example-wrap .tooltip{position:absolute;display:block;left:-25px;top:5px;margin:0;line-height:1;}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip,.example-wrap.ignore .tooltip{font-weight:bold;font-size:1.25rem;}.content .docblock .warning{border-left:2px solid var(--warning-border-color);padding:14px;position:relative;overflow-x:visible !important;}.content .docblock .warning::before{color:var(--warning-border-color);content:"ⓘ";position:absolute;left:-25px;top:5px;font-weight:bold;font-size:1.25rem;}.top-doc>.docblock>.warning:first-child::before{top:20px;}a.test-arrow{visibility:hidden;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:1.375rem;top:5px;right:5px;z-index:1;color:var(--test-arrow-color);background-color:var(--test-arrow-background-color);}a.test-arrow:hover{color:var(--test-arrow-hover-color);background-color:var(--test-arrow-hover-background-color);}.example-wrap:hover .test-arrow{visibility:visible;}.code-attribute{font-weight:300;color:var(--code-attribute-color);}.item-spacer{width:100%;height:12px;display:block;}.out-of-band>span.since{font-size:1.25rem;}.sub-variant h4{font-size:1rem;font-weight:400;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}:target{padding-right:3px;background-color:var(--target-background-color);border-right:3px solid var(--target-border-color);}.code-header a.tooltip{color:inherit;margin-right:15px;position:relative;}.code-header a.tooltip:hover{color:var(--link-color);}a.tooltip:hover::after{position:absolute;top:calc(100% - 10px);left:-15px;right:-15px;height:20px;content:"\00a0";}.fade-out{opacity:0;transition:opacity 0.45s cubic-bezier(0,0,0.1,1.0);}.popover.tooltip .content{margin:0.25em 0.5em;}.popover.tooltip .content pre,.popover.tooltip .content code{background:transparent;margin:0;padding:0;font-size:1.25rem;white-space:pre-wrap;}.popover.tooltip .content>h3:first-child{margin:0 0 5px 0;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#search-tabs{display:flex;flex-direction:row;gap:1px;margin-bottom:4px;}#search-tabs button{text-align:center;font-size:1.125rem;border:0;border-top:2px solid;flex:1;line-height:1.5;color:inherit;}#search-tabs button:not(.selected){background-color:var(--search-tab-button-not-selected-background);border-top-color:var(--search-tab-button-not-selected-border-top-color);}#search-tabs button:hover,#search-tabs button.selected{background-color:var(--search-tab-button-selected-background);border-top-color:var(--search-tab-button-selected-border-top-color);}#search-tabs .count{font-size:1rem;font-variant-numeric:tabular-nums;color:var(--search-tab-title-count-color);}#search .error code{border-radius:3px;background-color:var(--search-error-code-background-color);}.search-corrections{font-weight:normal;}#src-sidebar{width:100%;overflow:auto;}#src-sidebar div.files>a:hover,details.dir-entry summary:hover,#src-sidebar div.files>a:focus,details.dir-entry summary:focus{background-color:var(--src-sidebar-background-hover);}#src-sidebar div.files>a.selected{background-color:var(--src-sidebar-background-selected);}.src-sidebar-title{position:sticky;top:0;display:flex;padding:8px 8px 0 48px;margin-bottom:7px;background:var(--sidebar-background-color);border-bottom:1px solid var(--border-color);}#settings-menu,#help-button{margin-left:4px;display:flex;}#sidebar-button{display:none;line-height:0;}.hide-sidebar #sidebar-button,.src #sidebar-button{display:flex;margin-right:4px;position:fixed;left:6px;height:34px;width:34px;background-color:var(--main-background-color);z-index:1;}.src #sidebar-button{left:8px;z-index:calc(var(--desktop-sidebar-z-index) + 1);}.hide-sidebar .src #sidebar-button{position:static;}#settings-menu>a,#help-button>a,#sidebar-button>a{display:flex;align-items:center;justify-content:center;background-color:var(--button-background-color);border:1px solid var(--border-color);border-radius:2px;color:var(--settings-button-color);font-size:20px;width:33px;}#settings-menu>a:hover,#settings-menu>a:focus,#help-button>a:hover,#help-button>a:focus,#sidebar-button>a:hover,#sidebar-button>a:focus{border-color:var(--settings-button-border-focus);}#sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');width:22px;height:22px;}#copy-path{color:var(--copy-path-button-color);background:var(--main-background-color);height:34px;margin-left:10px;padding:0;padding-left:2px;border:0;width:33px;}#copy-path>img{filter:var(--copy-path-img-filter);}#copy-path:hover>img{filter:var(--copy-path-img-hover-filter);}@keyframes rotating{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}#settings-menu.rotate>a img{animation:rotating 2s linear infinite;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px var(--border-color);border-radius:3px;color:var(--kbd-color);background-color:var(--kbd-background);box-shadow:inset 0 -1px 0 var(--kbd-box-shadow-color);}ul.all-items>li{list-style:none;}details.dir-entry{padding-left:4px;}details.dir-entry>summary{margin:0 0 0 -4px;padding:0 0 0 4px;cursor:pointer;}details.dir-entry div.folders,details.dir-entry div.files{padding-left:23px;}details.dir-entry a{display:block;}details.toggle{contain:layout;position:relative;}details.toggle>summary.hideme{cursor:pointer;font-size:1rem;}details.toggle>summary{list-style:none;outline:none;}details.toggle>summary::-webkit-details-marker,details.toggle>summary::marker{display:none;}details.toggle>summary.hideme>span{margin-left:9px;}details.toggle>summary::before{background:url('data:image/svg+xml,') no-repeat top left;content:"";cursor:pointer;width:16px;height:16px;display:inline-block;vertical-align:middle;opacity:.5;filter:var(--toggle-filter);}details.toggle>summary.hideme>span,.more-examples-toggle summary,.more-examples-toggle .hide-more{color:var(--toggles-color);}details.toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.toggle>summary.hideme::after{content:"";}details.toggle>summary:focus::before,details.toggle>summary:hover::before{opacity:1;}details.toggle>summary:focus-visible::before{outline:1px dotted #000;outline-offset:1px;}details.non-exhaustive{margin-bottom:8px;}details.toggle>summary.hideme::before{position:relative;}details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:4px;}.impl-items>details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.toggle[open] >summary.hideme{position:absolute;}details.toggle[open] >summary.hideme>span{display:none;}details.toggle[open] >summary::before{background:url('data:image/svg+xml,') no-repeat top left;}details.toggle[open] >summary::after{content:"Collapse";}.docblock summary>*{display:inline-block;}.docblock>.example-wrap:first-child .tooltip{margin-top:16px;}.src #sidebar-button>a:before,.sidebar-menu-toggle:before{content:url('data:image/svg+xml,\ + ');opacity:0.75;}.sidebar-menu-toggle:hover:before,.sidebar-menu-toggle:active:before,.sidebar-menu-toggle:focus:before{opacity:1;}.src #sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');opacity:0.75;}@media (max-width:850px){#search-tabs .count{display:block;}}@media (max-width:700px){*[id]{scroll-margin-top:45px;}.rustdoc{display:block;}main{padding-left:15px;padding-top:0px;}.main-heading{flex-direction:column;}.out-of-band{text-align:left;margin-left:initial;padding:initial;}.out-of-band .since::before{content:"Since ";}.sidebar .logo-container,.sidebar .location,.sidebar-resizer{display:none;}.sidebar{position:fixed;top:45px;left:-1000px;z-index:11;height:calc(100vh - 45px);width:200px;}.src main,.rustdoc.src .sidebar{top:0;padding:0;height:100vh;border:0;}.src .search-form{margin-left:40px;}.hide-sidebar .search-form{margin-left:32px;}.hide-sidebar .src .search-form{margin-left:0;}.sidebar.shown,.src-sidebar-expanded .src .sidebar,.rustdoc:not(.src) .sidebar:focus-within{left:0;}.mobile-topbar h2{padding-bottom:0;margin:auto 0.5em auto auto;overflow:hidden;font-size:24px;white-space:nowrap;text-overflow:ellipsis;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin:5px 0 5px 20px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.hide-sidebar .mobile-topbar{display:none;}.sidebar-menu-toggle{width:45px;border:none;line-height:0;}.hide-sidebar .sidebar-menu-toggle{display:none;}.sidebar-elems{margin-top:1em;}.anchor{display:none !important;}#main-content>details.toggle>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}#copy-path,#help-button{display:none;}#sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');width:22px;height:22px;}.sidebar-menu-toggle:before{filter:var(--mobile-sidebar-menu-filter);}.sidebar-menu-toggle:hover{background:var(--main-background-color);}.item-table,.item-row,.item-table>li,.item-table>li>div,.search-results>a,.search-results>a>div{display:block;}.search-results>a{padding:5px 0px;}.search-results>a>div.desc,.item-table>li>div.desc{padding-left:2em;}.search-results .result-name{display:block;}.search-results .result-name .typename{width:initial;margin-right:0;}.search-results .result-name .typename,.search-results .result-name .path{display:inline;}.src-sidebar-expanded .src .sidebar{position:fixed;max-width:100vw;width:100vw;}.src .src-sidebar-title{padding-top:0;}details.toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.toggle>summary:not(.hideme)::before,#main-content>details.toggle:not(.top-doc)>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}.impl-items>.item-info{margin-left:34px;}.src nav.sub{margin:0;padding:var(--nav-sub-mobile-padding);}}@media (min-width:701px){.scraped-example-title{position:absolute;z-index:10;background:var(--main-background-color);bottom:8px;right:5px;padding:2px 4px;box-shadow:0 0 4px var(--main-background-color);}}@media print{nav.sidebar,nav.sub,.out-of-band,a.src,#copy-path,details.toggle[open] >summary::before,details.toggle>summary::before,details.toggle.top-doc>summary{display:none;}.docblock{margin-left:0;}main{padding:10px;}}@media (max-width:464px){.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}nav.sub{flex-direction:column;}.search-form{align-self:stretch;}}.variant,.implementors-toggle>summary,.impl,#implementors-list>.docblock,.impl-items>section,.impl-items>.toggle>summary,.methods>section,.methods>.toggle>summary{margin-bottom:0.75em;}.variants>.docblock,.implementors-toggle>.docblock,.impl-items>.toggle[open]:not(:last-child),.methods>.toggle[open]:not(:last-child),.implementors-toggle[open]:not(:last-child){margin-bottom:2em;}#trait-implementations-list .impl-items>.toggle:not(:last-child),#synthetic-implementations-list .impl-items>.toggle:not(:last-child),#blanket-implementations-list .impl-items>.toggle:not(:last-child){margin-bottom:1em;}.scraped-example-list .scrape-help{margin-left:10px;padding:0 4px;font-weight:normal;font-size:12px;position:relative;bottom:1px;border:1px solid var(--scrape-example-help-border-color);border-radius:50px;color:var(--scrape-example-help-color);}.scraped-example-list .scrape-help:hover{border-color:var(--scrape-example-help-hover-border-color);color:var(--scrape-example-help-hover-color);}.scraped-example{position:relative;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper{max-height:calc(1.5em * 5 + 10px);}.scraped-example:not(.expanded) .code-wrapper pre{overflow-y:hidden;padding-bottom:0;max-height:calc(1.5em * 5 + 10px);}.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper,.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper pre{max-height:calc(1.5em * 10 + 10px);}.scraped-example .code-wrapper .next,.scraped-example .code-wrapper .prev,.scraped-example .code-wrapper .expand{color:var(--main-color);position:absolute;top:0.25em;z-index:1;padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.scraped-example .code-wrapper .prev{right:2.25em;}.scraped-example .code-wrapper .next{right:1.25em;}.scraped-example .code-wrapper .expand{right:0.25em;}.scraped-example:not(.expanded) .code-wrapper::before,.scraped-example:not(.expanded) .code-wrapper::after{content:" ";width:100%;height:5px;position:absolute;z-index:1;}.scraped-example:not(.expanded) .code-wrapper::before{top:0;background:linear-gradient(to bottom,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example:not(.expanded) .code-wrapper::after{bottom:0;background:linear-gradient(to top,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example .code-wrapper .example-wrap{width:100%;overflow-y:hidden;margin-bottom:0;}.scraped-example:not(.expanded) .code-wrapper .example-wrap{overflow-x:hidden;}.scraped-example .example-wrap .rust span.highlight{background:var(--scrape-example-code-line-highlight);}.scraped-example .example-wrap .rust span.highlight.focus{background:var(--scrape-example-code-line-highlight-focus);}.more-examples-toggle{max-width:calc(100% + 25px);margin-top:10px;margin-left:-25px;}.more-examples-toggle .hide-more{margin-left:25px;cursor:pointer;}.more-scraped-examples{margin-left:25px;position:relative;}.toggle-line{position:absolute;top:5px;bottom:0;right:calc(100% + 10px);padding:0 4px;cursor:pointer;}.toggle-line-inner{min-width:2px;height:100%;background:var(--scrape-example-toggle-line-background);}.toggle-line:hover .toggle-line-inner{background:var(--scrape-example-toggle-line-hover-background);}.more-scraped-examples .scraped-example,.example-links{margin-top:20px;}.more-scraped-examples .scraped-example:first-child{margin-top:5px;}.example-links ul{margin-bottom:0;}:root[data-theme="light"]{--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--mobile-sidebar-menu-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:rgb(78,139,202);--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);--sidebar-resizer-hover:hsl(207,90%,66%);--sidebar-resizer-active:hsl(207,90%,54%);}:root[data-theme="dark"]{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);--sidebar-resizer-hover:hsl(207,30%,54%);--sidebar-resizer-active:hsl(207,90%,54%);}:root[data-theme="ayu"]{--main-background-color:#0f1419;--main-color:#c5c5c5;--settings-input-color:#ffb454;--settings-input-border-color:#999;--settings-button-color:#fff;--settings-button-border-focus:#e0e0e0;--sidebar-background-color:#14191f;--sidebar-background-color-hover:rgba(70,70,70,0.33);--code-block-background-color:#191f26;--scrollbar-track-background-color:transparent;--scrollbar-thumb-background-color:#5c6773;--scrollbar-color:#5c6773 #24292f;--headings-border-bottom-color:#5c6773;--border-color:#5c6773;--button-background-color:#141920;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#5c6773;--copy-path-button-color:#fff;--copy-path-img-filter:invert(70%);--copy-path-img-hover-filter:invert(100%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ffa0a5;--trait-link-color:#39afd7;--assoc-item-link-color:#39afd7;--function-link-color:#fdd687;--macro-link-color:#a37acc;--keyword-link-color:#39afd7;--mod-link-color:#39afd7;--link-color:#39afd7;--sidebar-link-color:#53b1db;--sidebar-current-link-background-color:transparent;--search-result-link-focus-background-color:#3c3c3c;--search-result-border-color:#aaa3;--search-color:#fff;--search-error-code-background-color:#4f4c4c;--search-results-alias-color:#c5c5c5;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:none;--search-tab-button-not-selected-background:transparent !important;--search-tab-button-selected-border-top-color:none;--search-tab-button-selected-background:#141920 !important;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ff7733;--code-highlight-kw-2-color:#ff7733;--code-highlight-lifetime-color:#ff7733;--code-highlight-prelude-color:#69f2df;--code-highlight-prelude-val-color:#ff7733;--code-highlight-number-color:#b8cc52;--code-highlight-string-color:#b8cc52;--code-highlight-literal-color:#ff7733;--code-highlight-attribute-color:#e6e1cf;--code-highlight-self-color:#36a3d9;--code-highlight-macro-color:#a37acc;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#788797;--code-highlight-doc-comment-color:#a1ac88;--src-line-numbers-span-color:#5c6773;--src-line-number-highlighted-background-color:rgba(255,236,164,0.06);--test-arrow-color:#788797;--test-arrow-background-color:rgba(57,175,215,0.09);--test-arrow-hover-color:#c5c5c5;--test-arrow-hover-background-color:rgba(57,175,215,0.368);--target-background-color:rgba(255,236,164,0.06);--target-border-color:rgba(255,180,76,0.85);--kbd-color:#c5c5c5;--kbd-background:#314559;--kbd-box-shadow-color:#5c6773;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(41%) sepia(12%) saturate(487%) hue-rotate(171deg) brightness(94%) contrast(94%);--crate-search-div-hover-filter:invert(98%) sepia(12%) saturate(81%) hue-rotate(343deg) brightness(113%) contrast(76%);--crate-search-hover-border:#e0e0e0;--src-sidebar-background-selected:#14191f;--src-sidebar-background-hover:#14191f;--table-alt-row-background-color:#191f26;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(15,20,25,1);--scrape-example-code-wrapper-background-end:rgba(15,20,25,0);--sidebar-resizer-hover:hsl(34,50%,33%);--sidebar-resizer-active:hsl(34,100%,66%);}:root[data-theme="ayu"] h1,:root[data-theme="ayu"] h2,:root[data-theme="ayu"] h3,:root[data-theme="ayu"] h4,:where(:root[data-theme="ayu"]) h1 a,:root[data-theme="ayu"] .sidebar h2 a,:root[data-theme="ayu"] .sidebar h3 a{color:#fff;}:root[data-theme="ayu"] .docblock code{color:#ffb454;}:root[data-theme="ayu"] .docblock a>code{color:#39AFD7 !important;}:root[data-theme="ayu"] .code-header,:root[data-theme="ayu"] .docblock pre>code,:root[data-theme="ayu"] pre,:root[data-theme="ayu"] pre>code,:root[data-theme="ayu"] .item-info code,:root[data-theme="ayu"] .rustdoc.source .example-wrap{color:#e6e1cf;}:root[data-theme="ayu"] .sidebar .current,:root[data-theme="ayu"] .sidebar .current a,:root[data-theme="ayu"] .sidebar a:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:hover,:root[data-theme="ayu"] details.dir-entry summary:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:focus,:root[data-theme="ayu"] details.dir-entry summary:focus,:root[data-theme="ayu"] #src-sidebar div.files>a.selected{color:#ffb44c;}:root[data-theme="ayu"] .sidebar-elems .location{color:#ff7733;}:root[data-theme="ayu"] .src-line-numbers .line-highlighted{color:#708090;padding-right:7px;border-right:1px solid #ffb44c;}:root[data-theme="ayu"] .search-results a:hover,:root[data-theme="ayu"] .search-results a:focus{color:#fff !important;background-color:#3c3c3c;}:root[data-theme="ayu"] .search-results a{color:#0096cf;}:root[data-theme="ayu"] .search-results a div.desc{color:#c5c5c5;}:root[data-theme="ayu"] .result-name .primitive>i,:root[data-theme="ayu"] .result-name .keyword>i{color:#788797;}:root[data-theme="ayu"] #search-tabs>button.selected{border-bottom:1px solid #ffb44c !important;border-top:none;}:root[data-theme="ayu"] #search-tabs>button:not(.selected){border:none;background-color:transparent !important;}:root[data-theme="ayu"] #search-tabs>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}:root[data-theme="ayu"] #settings-menu>a img,:root[data-theme="ayu"] #sidebar-button>a:before{filter:invert(100);} \ No newline at end of file diff --git a/artifacts/tx-indexer/static.files/scrape-examples-ef1e698c1d417c0c.js b/artifacts/tx-indexer/static.files/scrape-examples-ef1e698c1d417c0c.js new file mode 100644 index 0000000..ba830e3 --- /dev/null +++ b/artifacts/tx-indexer/static.files/scrape-examples-ef1e698c1d417c0c.js @@ -0,0 +1 @@ +"use strict";(function(){const DEFAULT_MAX_LINES=5;const HIDDEN_MAX_LINES=10;function scrollToLoc(elt,loc,isHidden){const lines=elt.querySelector(".src-line-numbers");let scrollOffset;const maxLines=isHidden?HIDDEN_MAX_LINES:DEFAULT_MAX_LINES;if(loc[1]-loc[0]>maxLines){const line=Math.max(0,loc[0]-1);scrollOffset=lines.children[line].offsetTop}else{const wrapper=elt.querySelector(".code-wrapper");const halfHeight=wrapper.offsetHeight/2;const offsetTop=lines.children[loc[0]].offsetTop;const lastLine=lines.children[loc[1]];const offsetBot=lastLine.offsetTop+lastLine.offsetHeight;const offsetMid=(offsetTop+offsetBot)/2;scrollOffset=offsetMid-halfHeight}lines.scrollTo(0,scrollOffset);elt.querySelector(".rust").scrollTo(0,scrollOffset)}function updateScrapedExample(example,isHidden){const locs=JSON.parse(example.attributes.getNamedItem("data-locs").textContent);let locIndex=0;const highlights=Array.prototype.slice.call(example.querySelectorAll(".highlight"));const link=example.querySelector(".scraped-example-title a");if(locs.length>1){const onChangeLoc=changeIndex=>{removeClass(highlights[locIndex],"focus");changeIndex();scrollToLoc(example,locs[locIndex][0],isHidden);addClass(highlights[locIndex],"focus");const url=locs[locIndex][1];const title=locs[locIndex][2];link.href=url;link.innerHTML=title};example.querySelector(".prev").addEventListener("click",()=>{onChangeLoc(()=>{locIndex=(locIndex-1+locs.length)%locs.length})});example.querySelector(".next").addEventListener("click",()=>{onChangeLoc(()=>{locIndex=(locIndex+1)%locs.length})})}const expandButton=example.querySelector(".expand");if(expandButton){expandButton.addEventListener("click",()=>{if(hasClass(example,"expanded")){removeClass(example,"expanded");scrollToLoc(example,locs[0][0],isHidden)}else{addClass(example,"expanded")}})}scrollToLoc(example,locs[0][0],isHidden)}const firstExamples=document.querySelectorAll(".scraped-example-list > .scraped-example");onEachLazy(firstExamples,el=>updateScrapedExample(el,false));onEachLazy(document.querySelectorAll(".more-examples-toggle"),toggle=>{onEachLazy(toggle.querySelectorAll(".toggle-line, .hide-more"),button=>{button.addEventListener("click",()=>{toggle.open=false})});const moreExamples=toggle.querySelectorAll(".scraped-example");toggle.querySelector("summary").addEventListener("click",()=>{setTimeout(()=>{onEachLazy(moreExamples,el=>updateScrapedExample(el,true))})},{once:true})})})() \ No newline at end of file diff --git a/artifacts/tx-indexer/static.files/search-42d8da7a6b9792c2.js b/artifacts/tx-indexer/static.files/search-42d8da7a6b9792c2.js new file mode 100644 index 0000000..1d178d5 --- /dev/null +++ b/artifacts/tx-indexer/static.files/search-42d8da7a6b9792c2.js @@ -0,0 +1,5 @@ +"use strict";if(!Array.prototype.toSpliced){Array.prototype.toSpliced=function(){const me=this.slice();Array.prototype.splice.apply(me,arguments);return me}}(function(){const itemTypes=["keyword","primitive","mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","associatedtype","constant","associatedconstant","union","foreigntype","existential","attr","derive","traitalias","generic",];const longItemTypes=["keyword","primitive type","module","extern crate","re-export","struct","enum","function","type alias","static","trait","","trait method","method","struct field","enum variant","macro","assoc type","constant","assoc const","union","foreign type","existential type","attribute macro","derive macro","trait alias",];const TY_GENERIC=itemTypes.indexOf("generic");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";const UNBOXING_LIMIT=5;function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("search-tabs").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});const isTypeSearch=(nb>0||iter===1);iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb;const correctionsElem=document.getElementsByClassName("search-corrections");if(isTypeSearch){removeClass(correctionsElem[0],"hidden")}else{addClass(correctionsElem[0],"hidden")}}else if(nb!==0){printTab(0)}}const editDistanceState={current:[],prev:[],prevPrev:[],calculate:function calculate(a,b,limit){if(a.lengthlimit){return limit+1}while(b.length>0&&b[0]===a[0]){a=a.substring(1);b=b.substring(1)}while(b.length>0&&b[b.length-1]===a[a.length-1]){a=a.substring(0,a.length-1);b=b.substring(0,b.length-1)}if(b.length===0){return minDist}const aLength=a.length;const bLength=b.length;for(let i=0;i<=bLength;++i){this.current[i]=0;this.prev[i]=i;this.prevPrev[i]=Number.MAX_VALUE}for(let i=1;i<=aLength;++i){this.current[0]=i;const aIdx=i-1;for(let j=1;j<=bLength;++j){const bIdx=j-1;const substitutionCost=a[aIdx]===b[bIdx]?0:1;this.current[j]=Math.min(this.prev[j]+1,this.current[j-1]+1,this.prev[j-1]+substitutionCost);if((i>1)&&(j>1)&&(a[aIdx]===b[bIdx-1])&&(a[aIdx-1]===b[bIdx])){this.current[j]=Math.min(this.current[j],this.prevPrev[j-2]+1)}}const prevPrevTmp=this.prevPrev;this.prevPrev=this.prev;this.prev=this.current;this.current=prevPrevTmp}const distance=this.prev[bLength];return distance<=limit?distance:(limit+1)},};function editDistance(a,b,limit){return editDistanceState.calculate(a,b,limit)}function initSearch(rawSearchIndex){const MAX_RESULTS=200;const NO_TYPE_FILTER=-1;let searchIndex;let functionTypeFingerprint;let currentResults;const typeNameIdMap=new Map();const ALIASES=new Map();const typeNameIdOfArray=buildTypeMapIndex("array");const typeNameIdOfSlice=buildTypeMapIndex("slice");const typeNameIdOfArrayOrSlice=buildTypeMapIndex("[]");const typeNameIdOfTuple=buildTypeMapIndex("tuple");const typeNameIdOfUnit=buildTypeMapIndex("unit");const typeNameIdOfTupleOrUnit=buildTypeMapIndex("()");const typeNameIdOfFn=buildTypeMapIndex("fn");const typeNameIdOfFnMut=buildTypeMapIndex("fnmut");const typeNameIdOfFnOnce=buildTypeMapIndex("fnonce");const typeNameIdOfHof=buildTypeMapIndex("->");function buildTypeMapIndex(name,isAssocType){if(name===""||name===null){return null}if(typeNameIdMap.has(name)){const obj=typeNameIdMap.get(name);obj.assocOnly=isAssocType&&obj.assocOnly;return obj.id}else{const id=typeNameIdMap.size;typeNameIdMap.set(name,{id,assocOnly:isAssocType});return id}}function isSpecialStartCharacter(c){return"<\"".indexOf(c)!==-1}function isEndCharacter(c){return"=,>-])".indexOf(c)!==-1}function itemTypeFromName(typename){const index=itemTypes.findIndex(i=>i===typename);if(index<0){throw["Unknown type filter ",typename]}return index}function getStringElem(query,parserState,isInGenerics){if(isInGenerics){throw["Unexpected ","\""," in generics"]}else if(query.literalSearch){throw["Cannot have more than one literal search element"]}else if(parserState.totalElems-parserState.genericsElems>0){throw["Cannot use literal search when there is more than one element"]}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw["Unclosed ","\""]}else if(parserState.userQuery[end]!=="\""){throw["Unexpected ",parserState.userQuery[end]," in a string element"]}else if(start===end){throw["Cannot have empty string element"]}parserState.pos+=1;query.literalSearch=true}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function isIdentCharacter(c){return(c==="_"||(c>="0"&&c<="9")||(c>="a"&&c<="z")||(c>="A"&&c<="Z"))}function isSeparatorCharacter(c){return c===","||c==="="}function isPathSeparator(c){return c===":"||c===" "}function prevIs(parserState,lookingFor){let pos=parserState.pos;while(pos>0){const c=parserState.userQuery[pos-1];if(c===lookingFor){return true}else if(c!==" "){break}pos-=1}return false}function isLastElemGeneric(elems,parserState){return(elems.length>0&&elems[elems.length-1].generics.length>0)||prevIs(parserState,">")}function skipWhitespace(parserState){while(parserState.pos0){throw["Cannot have more than one element if you use quotes"]}const typeFilter=parserState.typeFilter;parserState.typeFilter=null;if(name==="!"){if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive never type ","!"," and ",typeFilter," both specified",]}if(generics.length!==0){throw["Never type ","!"," does not accept generic parameters",]}const bindingName=parserState.isInBinding;parserState.isInBinding=null;return makePrimitiveElement("never",{bindingName})}const quadcolon=/::\s*::/.exec(path);if(path.startsWith("::")){throw["Paths cannot start with ","::"]}else if(path.endsWith("::")){throw["Paths cannot end with ","::"]}else if(quadcolon!==null){throw["Unexpected ",quadcolon[0]]}const pathSegments=path.split(/(?:::\s*)|(?:\s+(?:::\s*)?)/);if(pathSegments.length===0||(pathSegments.length===1&&pathSegments[0]==="")){if(generics.length>0||prevIs(parserState,">")){throw["Found generics without a path"]}else{throw["Unexpected ",parserState.userQuery[parserState.pos]]}}for(const[i,pathSegment]of pathSegments.entries()){if(pathSegment==="!"){if(i!==0){throw["Never type ","!"," is not associated item"]}pathSegments[i]="never"}}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}const bindingName=parserState.isInBinding;parserState.isInBinding=null;const bindings=new Map();const pathLast=pathSegments[pathSegments.length-1];return{name:name.trim(),id:null,fullPath:pathSegments,pathWithoutLast:pathSegments.slice(0,pathSegments.length-1),pathLast,normalizedPathLast:pathLast.replace(/_/g,""),generics:generics.filter(gen=>{if(gen.bindingName!==null){if(gen.name!==null){gen.bindingName.generics.unshift(gen)}bindings.set(gen.bindingName.name,gen.bindingName.generics);return false}return true}),bindings,typeFilter,bindingName,}}function getIdentEndPosition(parserState){const start=parserState.pos;let end=parserState.pos;let foundExclamation=-1;while(parserState.pos0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]]}else{throw["Unexpected ",c]}}parserState.pos+=1;end=parserState.pos}if(foundExclamation!==-1&&foundExclamation!==start&&isIdentCharacter(parserState.userQuery[foundExclamation-1])){if(parserState.typeFilter===null){parserState.typeFilter="macro"}else if(parserState.typeFilter!=="macro"){throw["Invalid search type: macro ","!"," and ",parserState.typeFilter," both specified",]}end=foundExclamation}return end}function getFilteredNextElem(query,parserState,elems,isInGenerics){const start=parserState.pos;if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){throw["Expected type filter before ",":"]}getNextElem(query,parserState,elems,isInGenerics);if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}if(elems.length===0){throw["Expected type filter before ",":"]}else if(query.literalSearch){throw["Cannot use quotes on type filter"]}const typeFilterElem=elems.pop();checkExtraTypeFilterCharacters(start,parserState);parserState.typeFilter=typeFilterElem.name;parserState.pos+=1;parserState.totalElems-=1;query.literalSearch=false;getNextElem(query,parserState,elems,isInGenerics)}}function getNextElem(query,parserState,elems,isInGenerics){const generics=[];skipWhitespace(parserState);let start=parserState.pos;let end;if("[(".indexOf(parserState.userQuery[parserState.pos])!==-1){let endChar=")";let name="()";let friendlyName="tuple";if(parserState.userQuery[parserState.pos]==="["){endChar="]";name="[]";friendlyName="slice"}parserState.pos+=1;const{foundSeparator}=getItemsBefore(query,parserState,generics,endChar);const typeFilter=parserState.typeFilter;const bindingName=parserState.isInBinding;parserState.typeFilter=null;parserState.isInBinding=null;for(const gen of generics){if(gen.bindingName!==null){throw["Type parameter ","=",` cannot be within ${friendlyName} `,name]}}if(name==="()"&&!foundSeparator&&generics.length===1&&typeFilter===null){elems.push(generics[0])}else if(name==="()"&&generics.length===1&&generics[0].name==="->"){generics[0].typeFilter=typeFilter;elems.push(generics[0])}else{if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive ",name," and ",typeFilter," both specified",]}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}elems.push(makePrimitiveElement(name,{bindingName,generics}))}}else{const isStringElem=parserState.userQuery[start]==="\"";if(isStringElem){start+=1;getStringElem(query,parserState,isInGenerics);end=parserState.pos-1}else{end=getIdentEndPosition(parserState)}if(parserState.pos=end){throw["Found generics without a path"]}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}else if(parserState.pos=end){throw["Found generics without a path"]}if(parserState.isInBinding){throw["Unexpected ","("," after ","="]}parserState.pos+=1;const typeFilter=parserState.typeFilter;parserState.typeFilter=null;getItemsBefore(query,parserState,generics,")");skipWhitespace(parserState);if(isReturnArrow(parserState)){parserState.pos+=2;skipWhitespace(parserState);getFilteredNextElem(query,parserState,generics,isInGenerics);generics[generics.length-1].bindingName=makePrimitiveElement("output")}else{generics.push(makePrimitiveElement(null,{bindingName:makePrimitiveElement("output"),typeFilter:null,}))}parserState.typeFilter=typeFilter}if(isStringElem){skipWhitespace(parserState)}if(start>=end&&generics.length===0){return}if(parserState.userQuery[parserState.pos]==="="){if(parserState.isInBinding){throw["Cannot write ","="," twice in a binding"]}if(!isInGenerics){throw["Type parameter ","="," must be within generics list"]}const name=parserState.userQuery.slice(start,end).trim();if(name==="!"){throw["Type parameter ","="," key cannot be ","!"," never type"]}if(name.includes("!")){throw["Type parameter ","="," key cannot be ","!"," macro"]}if(name.includes("::")){throw["Type parameter ","="," key cannot contain ","::"," path"]}if(name.includes(":")){throw["Type parameter ","="," key cannot contain ",":"," type"]}parserState.isInBinding={name,generics}}else{elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics))}}}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;let foundSeparator=false;const oldTypeFilter=parserState.typeFilter;parserState.typeFilter=null;const oldIsInBinding=parserState.isInBinding;parserState.isInBinding=null;let hofParameters=null;let extra="";if(endChar===">"){extra="<"}else if(endChar==="]"){extra="["}else if(endChar===")"){extra="("}else if(endChar===""){extra="->"}else{extra=endChar}while(parserState.pos"," after ","="]}hofParameters=[...elems];elems.length=0;parserState.pos+=2;foundStopChar=true;foundSeparator=false;continue}else if(c===" "){parserState.pos+=1;continue}else if(isSeparatorCharacter(c)){parserState.pos+=1;foundStopChar=true;foundSeparator=true;continue}else if(c===":"&&isPathStart(parserState)){throw["Unexpected ","::",": paths cannot start with ","::"]}else if(isEndCharacter(c)){throw["Unexpected ",c," after ",extra]}if(!foundStopChar){let extra=[];if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(endChar!==""){throw["Expected ",",",", ","=",", or ",endChar,...extra,", found ",c,]}throw["Expected ",","," or ","=",...extra,", found ",c,]}const posBefore=parserState.pos;getFilteredNextElem(query,parserState,elems,endChar!=="");if(endChar!==""&&parserState.pos>=parserState.length){throw["Unclosed ",extra]}if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}if(parserState.pos>=parserState.length&&endChar!==""){throw["Unclosed ",extra]}parserState.pos+=1;if(hofParameters){foundSeparator=false;if([...elems,...hofParameters].some(x=>x.bindingName)||parserState.isInBinding){throw["Unexpected ","="," within ","->"]}const hofElem=makePrimitiveElement("->",{generics:hofParameters,bindings:new Map([["output",[...elems]]]),typeFilter:null,});elems.length=0;elems[0]=hofElem}parserState.typeFilter=oldTypeFilter;parserState.isInBinding=oldIsInBinding;return{foundSeparator}}function checkExtraTypeFilterCharacters(start,parserState){const query=parserState.userQuery.slice(start,parserState.pos).trim();for(const c in query){if(!isIdentCharacter(query[c])){throw["Unexpected ",query[c]," in type filter (before ",":",")",]}}}function parseInput(query,parserState){let foundStopChar=true;while(parserState.pos"){if(isReturnArrow(parserState)){break}throw["Unexpected ",c," (did you mean ","->","?)"]}else if(parserState.pos>0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]]}throw["Unexpected ",c]}else if(c===" "){skipWhitespace(parserState);continue}if(!foundStopChar){let extra="";if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(parserState.typeFilter!==null){throw["Expected ",","," or ","->",...extra,", found ",c,]}throw["Expected ",",",", ",":"," or ","->",...extra,", found ",c,]}const before=query.elems.length;getFilteredNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}while(parserState.pos"]}break}else{parserState.pos+=1}}}function newParsedQuery(userQuery){return{original:userQuery,userQuery:userQuery.toLowerCase(),elems:[],returned:[],foundElems:0,totalElems:0,literalSearch:false,error:null,correction:null,proposeCorrectionFrom:null,proposeCorrectionTo:null,typeFingerprint:new Uint32Array(4),}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&rawSearchIndex.has(elem.value)){return elem.value}return null}function parseQuery(userQuery){function convertTypeFilterOnElem(elem){if(elem.typeFilter!==null){let typeFilter=elem.typeFilter;if(typeFilter==="const"){typeFilter="constant"}elem.typeFilter=itemTypeFromName(typeFilter)}else{elem.typeFilter=NO_TYPE_FILTER}for(const elem2 of elem.generics){convertTypeFilterOnElem(elem2)}for(const constraints of elem.bindings.values()){for(const constraint of constraints){convertTypeFilterOnElem(constraint)}}}userQuery=userQuery.trim().replace(/\r|\n|\t/g," ");const parserState={length:userQuery.length,pos:0,totalElems:0,genericsElems:0,typeFilter:null,isInBinding:null,userQuery:userQuery.toLowerCase(),};let query=newParsedQuery(userQuery);try{parseInput(query,parserState);for(const elem of query.elems){convertTypeFilterOnElem(elem)}for(const elem of query.returned){convertTypeFilterOnElem(elem)}}catch(err){query=newParsedQuery(userQuery);query.error=err;return query}if(!query.literalSearch){query.literalSearch=parserState.totalElems>1}query.foundElems=query.elems.length+query.returned.length;query.totalElems=parserState.totalElems;return query}function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}function execQuery(parsedQuery,filterCrates,currentCrate){const results_others=new Map(),results_in_args=new Map(),results_returned=new Map();function transformResults(results){const duplicates=new Set();const out=[];for(const result of results){if(result.id!==-1){const obj=searchIndex[result.id];obj.dist=result.dist;const res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;if(duplicates.has(obj.fullPath)){continue}duplicates.add(obj.fullPath);obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}function sortResults(results,isType,preferredCrate){const userQuery=parsedQuery.userQuery;const result_list=[];for(const result of results.values()){result.item=searchIndex[result.id];result.word=searchIndex[result.id].word;result_list.push(result)}result_list.sort((aaa,bbb)=>{let a,b;a=(aaa.word!==userQuery);b=(bbb.word!==userQuery);if(a!==b){return a-b}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.path_dist;b=bbb.path_dist;if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}a=(aaa.dist);b=(bbb.dist);if(a!==b){return a-b}a=aaa.item.deprecated;b=bbb.item.deprecated;if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=(aaa.item.desc==="");b=(bbb.item.desc==="");if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});return transformResults(result_list)}function unifyFunctionTypes(fnTypesIn,queryElems,whereClause,mgensIn,solutionCb,unboxingDepth){if(unboxingDepth>=UNBOXING_LIMIT){return false}const mgens=mgensIn===null?null:new Map(mgensIn);if(queryElems.length===0){return!solutionCb||solutionCb(mgens)}if(!fnTypesIn||fnTypesIn.length===0){return false}const ql=queryElems.length;const fl=fnTypesIn.length;if(ql===1&&queryElems[0].generics.length===0&&queryElems[0].bindings.size===0){const queryElem=queryElems[0];for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}if(fnType.id<0&&queryElem.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==queryElem.id){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,queryElem.id);if(!solutionCb||solutionCb(mgensScratch)){return true}}else if(!solutionCb||solutionCb(mgens?new Map(mgens):null)){return true}}for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1)){continue}if(fnType.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,0);if(unifyFunctionTypes(whereClause[(-fnType.id)-1],queryElems,whereClause,mgensScratch,solutionCb,unboxingDepth+1)){return true}}else if(unifyFunctionTypes([...fnType.generics,...Array.from(fnType.bindings.values()).flat()],queryElems,whereClause,mgens?new Map(mgens):null,solutionCb,unboxingDepth+1)){return true}}return false}const fnTypes=fnTypesIn.slice();const flast=fl-1;const qlast=ql-1;const queryElem=queryElems[qlast];let queryElemsTmp=null;for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==queryElem.id){continue}mgensScratch.set(fnType.id,queryElem.id)}else{mgensScratch=mgens}fnTypes[i]=fnTypes[flast];fnTypes.length=flast;if(!queryElemsTmp){queryElemsTmp=queryElems.slice(0,qlast)}const passesUnification=unifyFunctionTypes(fnTypes,queryElemsTmp,whereClause,mgensScratch,mgensScratch=>{if(fnType.generics.length===0&&queryElem.generics.length===0&&fnType.bindings.size===0&&queryElem.bindings.size===0){return!solutionCb||solutionCb(mgensScratch)}const solution=unifyFunctionTypeCheckBindings(fnType,queryElem,whereClause,mgensScratch,unboxingDepth);if(!solution){return false}const simplifiedGenerics=solution.simplifiedGenerics;for(const simplifiedMgens of solution.mgens){const passesUnification=unifyFunctionTypes(simplifiedGenerics,queryElem.generics,whereClause,simplifiedMgens,solutionCb,unboxingDepth);if(passesUnification){return true}}return false},unboxingDepth);if(passesUnification){return true}fnTypes[flast]=fnTypes[i];fnTypes[i]=fnType;fnTypes.length=fl}for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==0){continue}mgensScratch.set(fnType.id,0)}else{mgensScratch=mgens}const generics=fnType.id<0?whereClause[(-fnType.id)-1]:fnType.generics;const bindings=fnType.bindings?Array.from(fnType.bindings.values()).flat():[];const passesUnification=unifyFunctionTypes(fnTypes.toSpliced(i,1,...generics,...bindings),queryElems,whereClause,mgensScratch,solutionCb,unboxingDepth+1);if(passesUnification){return true}}return false}function unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgensIn){if(!typePassesFilter(queryElem.typeFilter,fnType.ty)){return false}if(fnType.id<0&&queryElem.id<0){if(mgensIn){if(mgensIn.has(fnType.id)&&mgensIn.get(fnType.id)!==queryElem.id){return false}for(const[fid,qid]of mgensIn.entries()){if(fnType.id!==fid&&queryElem.id===qid){return false}if(fnType.id===fid&&queryElem.id!==qid){return false}}}return true}else{if(queryElem.id===typeNameIdOfArrayOrSlice&&(fnType.id===typeNameIdOfSlice||fnType.id===typeNameIdOfArray)){}else if(queryElem.id===typeNameIdOfTupleOrUnit&&(fnType.id===typeNameIdOfTuple||fnType.id===typeNameIdOfUnit)){}else if(queryElem.id===typeNameIdOfHof&&(fnType.id===typeNameIdOfFn||fnType.id===typeNameIdOfFnMut||fnType.id===typeNameIdOfFnOnce)){}else if(fnType.id!==queryElem.id||queryElem.id===null){return false}if((fnType.generics.length+fnType.bindings.size)===0&&queryElem.generics.length!==0){return false}if(fnType.bindings.size0){const fnTypePath=fnType.path!==undefined&&fnType.path!==null?fnType.path.split("::"):[];if(queryElemPathLength>fnTypePath.length){return false}let i=0;for(const path of fnTypePath){if(path===queryElem.pathWithoutLast[i]){i+=1;if(i>=queryElemPathLength){break}}}if(i0){let mgensSolutionSet=[mgensIn];for(const[name,constraints]of queryElem.bindings.entries()){if(mgensSolutionSet.length===0){return false}if(!fnType.bindings.has(name)){return false}const fnTypeBindings=fnType.bindings.get(name);mgensSolutionSet=mgensSolutionSet.flatMap(mgens=>{const newSolutions=[];unifyFunctionTypes(fnTypeBindings,constraints,whereClause,mgens,newMgens=>{newSolutions.push(newMgens);return false},unboxingDepth);return newSolutions})}if(mgensSolutionSet.length===0){return false}const binds=Array.from(fnType.bindings.entries()).flatMap(entry=>{const[name,constraints]=entry;if(queryElem.bindings.has(name)){return[]}else{return constraints}});if(simplifiedGenerics.length>0){simplifiedGenerics=[...simplifiedGenerics,...binds]}else{simplifiedGenerics=binds}return{simplifiedGenerics,mgens:mgensSolutionSet}}return{simplifiedGenerics,mgens:[mgensIn]}}function unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth){if(unboxingDepth>=UNBOXING_LIMIT){return false}if(fnType.id<0&&queryElem.id>=0){if(!whereClause){return false}if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){return false}const mgensTmp=new Map(mgens);mgensTmp.set(fnType.id,null);return checkIfInList(whereClause[(-fnType.id)-1],queryElem,whereClause,mgensTmp,unboxingDepth)}else if(fnType.generics.length>0||fnType.bindings.size>0){const simplifiedGenerics=[...fnType.generics,...Array.from(fnType.bindings.values()).flat(),];return checkIfInList(simplifiedGenerics,queryElem,whereClause,mgens,unboxingDepth)}return false}function checkIfInList(list,elem,whereClause,mgens,unboxingDepth){for(const entry of list){if(checkType(entry,elem,whereClause,mgens,unboxingDepth)){return true}}return false}function checkType(row,elem,whereClause,mgens,unboxingDepth){if(unboxingDepth>=UNBOXING_LIMIT){return false}if(row.bindings.size===0&&elem.bindings.size===0){if(elem.id<0&&mgens===null){return row.id<0||checkIfInList(row.generics,elem,whereClause,mgens,unboxingDepth+1)}if(row.id>0&&elem.id>0&&elem.pathWithoutLast.length===0&&typePassesFilter(elem.typeFilter,row.ty)&&elem.generics.length===0&&elem.id!==typeNameIdOfArrayOrSlice&&elem.id!==typeNameIdOfTupleOrUnit&&elem.id!==typeNameIdOfHof){return row.id===elem.id||checkIfInList(row.generics,elem,whereClause,mgens,unboxingDepth)}}return unifyFunctionTypes([row],[elem],whereClause,mgens,null,unboxingDepth)}function checkPath(contains,ty){if(contains.length===0){return 0}const maxPathEditDistance=Math.floor(contains.reduce((acc,next)=>acc+next.length,0)/3);let ret_dist=maxPathEditDistance+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;pathiter:for(let i=length-clength;i>=0;i-=1){let dist_total=0;for(let x=0;xmaxPathEditDistance){continue pathiter}dist_total+=dist}}ret_dist=Math.min(ret_dist,Math.round(dist_total/clength))}return ret_dist>maxPathEditDistance?null:ret_dist}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,deprecated:item.deprecated,implDisambiguator:item.implDisambiguator,}}function handleAliases(ret,query,filterCrates,currentCrate){const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(ALIASES.has(filterCrates)&&ALIASES.get(filterCrates).has(lowerQuery)){const query_aliases=ALIASES.get(filterCrates).get(lowerQuery);for(const alias of query_aliases){aliases.push(createAliasFromItem(searchIndex[alias]))}}}else{for(const[crate,crateAliasesIndex]of ALIASES){if(crateAliasesIndex.has(lowerQuery)){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=crateAliasesIndex.get(lowerQuery);for(const alias of query_aliases){pushTo.push(createAliasFromItem(searchIndex[alias]))}}}}const sortFunc=(aaa,bbb)=>{if(aaa.path{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach(pushFunc);crateAliases.forEach(pushFunc)}function addIntoResults(results,fullId,id,index,dist,path_dist,maxEditDistance){if(dist<=maxEditDistance||index!==-1){if(results.has(fullId)){const result=results.get(fullId);if(result.dontValidate||result.dist<=dist){return}}results.set(fullId,{id:id,index:index,dontValidate:parsedQuery.literalSearch,dist:dist,path_dist:path_dist,})}}function handleSingleArg(row,pos,elem,results_others,results_in_args,results_returned,maxEditDistance){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let path_dist=0;const fullId=row.id;const tfpDist=compareTypeFingerprints(fullId,parsedQuery.typeFingerprint);if(tfpDist!==null){const in_args=row.type&&row.type.inputs&&checkIfInList(row.type.inputs,elem,row.type.where_clause,null,0);const returned=row.type&&row.type.output&&checkIfInList(row.type.output,elem,row.type.where_clause,null,0);if(in_args){results_in_args.max_dist=Math.max(results_in_args.max_dist||0,tfpDist);const maxDist=results_in_args.sizenormalizedIndex&&normalizedIndex!==-1)){index=normalizedIndex}if(elem.fullPath.length>1){path_dist=checkPath(elem.pathWithoutLast,row);if(path_dist===null){return}}if(parsedQuery.literalSearch){if(row.word===elem.pathLast){addIntoResults(results_others,fullId,pos,index,0,path_dist)}return}const dist=editDistance(row.normalizedName,elem.normalizedPathLast,maxEditDistance);if(index===-1&&dist>maxEditDistance){return}addIntoResults(results_others,fullId,pos,index,dist,path_dist,maxEditDistance)}function handleArgs(row,pos,results){if(!row||(filterCrates!==null&&row.crate!==filterCrates)||!row.type){return}const tfpDist=compareTypeFingerprints(row.id,parsedQuery.typeFingerprint);if(tfpDist===null){return}if(results.size>=MAX_RESULTS&&tfpDist>results.max_dist){return}if(!unifyFunctionTypes(row.type.inputs,parsedQuery.elems,row.type.where_clause,null,mgens=>{return unifyFunctionTypes(row.type.output,parsedQuery.returned,row.type.where_clause,mgens,null,0)},0)){return}results.max_dist=Math.max(results.max_dist||0,tfpDist);addIntoResults(results,row.id,pos,0,tfpDist,0,Number.MAX_VALUE)}function innerRunQuery(){const queryLen=parsedQuery.elems.reduce((acc,next)=>acc+next.pathLast.length,0)+parsedQuery.returned.reduce((acc,next)=>acc+next.pathLast.length,0);const maxEditDistance=Math.floor(queryLen/3);const genericSymbols=new Map();function convertNameToId(elem,isAssocType){if(typeNameIdMap.has(elem.normalizedPathLast)&&(isAssocType||!typeNameIdMap.get(elem.normalizedPathLast).assocOnly)){elem.id=typeNameIdMap.get(elem.normalizedPathLast).id}else if(!parsedQuery.literalSearch){let match=null;let matchDist=maxEditDistance+1;let matchName="";for(const[name,{id,assocOnly}]of typeNameIdMap){const dist=editDistance(name,elem.normalizedPathLast,maxEditDistance);if(dist<=matchDist&&dist<=maxEditDistance&&(isAssocType||!assocOnly)){if(dist===matchDist&&matchName>name){continue}match=id;matchDist=dist;matchName=name}}if(match!==null){parsedQuery.correction=matchName}elem.id=match}if((elem.id===null&&parsedQuery.totalElems>1&&elem.typeFilter===-1&&elem.generics.length===0&&elem.bindings.size===0)||elem.typeFilter===TY_GENERIC){if(genericSymbols.has(elem.name)){elem.id=genericSymbols.get(elem.name)}else{elem.id=-(genericSymbols.size+1);genericSymbols.set(elem.name,elem.id)}if(elem.typeFilter===-1&&elem.name.length>=3){const maxPartDistance=Math.floor(elem.name.length/3);let matchDist=maxPartDistance+1;let matchName="";for(const name of typeNameIdMap.keys()){const dist=editDistance(name,elem.name,maxPartDistance);if(dist<=matchDist&&dist<=maxPartDistance){if(dist===matchDist&&matchName>name){continue}matchDist=dist;matchName=name}}if(matchName!==""){parsedQuery.proposeCorrectionFrom=elem.name;parsedQuery.proposeCorrectionTo=matchName}}elem.typeFilter=TY_GENERIC}if(elem.generics.length>0&&elem.typeFilter===TY_GENERIC){parsedQuery.error=["Generic type parameter ",elem.name," does not accept generic parameters",]}for(const elem2 of elem.generics){convertNameToId(elem2)}elem.bindings=new Map(Array.from(elem.bindings.entries()).map(entry=>{const[name,constraints]=entry;if(!typeNameIdMap.has(name)){parsedQuery.error=["Type parameter ",name," does not exist",];return[null,[]]}for(const elem2 of constraints){convertNameToId(elem2)}return[typeNameIdMap.get(name).id,constraints]}))}const fps=new Set();for(const elem of parsedQuery.elems){convertNameToId(elem);buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}for(const elem of parsedQuery.returned){convertNameToId(elem);buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}if(parsedQuery.foundElems===1&&parsedQuery.returned.length===0){if(parsedQuery.elems.length===1){const elem=parsedQuery.elems[0];for(let i=0,nSearchIndex=searchIndex.length;i0){const sortQ=(a,b)=>{const ag=a.generics.length===0&&a.bindings.size===0;const bg=b.generics.length===0&&b.bindings.size===0;if(ag!==bg){return ag-bg}const ai=a.id>0;const bi=b.id>0;return ai-bi};parsedQuery.elems.sort(sortQ);parsedQuery.returned.sort(sortQ);for(let i=0,nSearchIndex=searchIndex.length;i");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){const extraClass=display?" active":"";const output=document.createElement("div");if(array.length>0){output.className="search-results "+extraClass;array.forEach(item=>{const name=item.name;const type=itemTypes[item.ty];const longType=longItemTypes[item.ty];const typeName=longType.length!==0?`${longType}`:"?";const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("div");resultName.className="result-name";resultName.insertAdjacentHTML("beforeend",`${typeName}`);link.appendChild(resultName);let alias=" ";if(item.is_alias){alias=`
\ +${item.alias} - see \ +
`}resultName.insertAdjacentHTML("beforeend",`
${alias}\ +${item.displayPath}${name}\ +
`);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);link.appendChild(description);output.appendChild(link)})}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(
"+"Try on DuckDuckGo?

"+"Or try looking in one of these:"}return[output,array.length]}function makeTabHeader(tabNb,text,nbElems){const fmtNbElems=nbElems<10?`\u{2007}(${nbElems})\u{2007}\u{2007}`:nbElems<100?`\u{2007}(${nbElems})\u{2007}`:`\u{2007}(${nbElems})`;if(searchState.currentTab===tabNb){return""}return""}function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true")){window.onunload=()=>{};searchState.removeQueryParameters();const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=parseQuery(searchState.input.value)}currentResults=results.query.userQuery;const ret_others=addTab(results.others,results.query,true);const ret_in_args=addTab(results.in_args,results.query,false);const ret_returned=addTab(results.returned,results.query,false);let currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";if(rawSearchIndex.size>1){crates=" in 
"}let output=`

Results${crates}

`;if(results.query.error!==null){const error=results.query.error;error.forEach((value,index)=>{value=value.split("<").join("<").split(">").join(">");if(index%2!==0){error[index]=`${value.replaceAll(" ", " ")}`}else{error[index]=value}});output+=`

Query parser error: "${error.join("")}".

`;output+="
"+makeTabHeader(0,"In Names",ret_others[1])+"
";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="
"+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
"}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
"+makeTabHeader(0,signatureTabTitle,ret_others[1])+"
";currentTab=0}if(results.query.correction!==null){const orig=results.query.returned.length>0?results.query.returned[0].name:results.query.elems[0].name;output+="

"+`Type "${orig}" not found. `+"Showing results for closest type name "+`"${results.query.correction}" instead.

`}if(results.query.proposeCorrectionFrom!==null){const orig=results.query.proposeCorrectionFrom;const targ=results.query.proposeCorrectionTo;output+="

"+`Type "${orig}" not found and used as generic parameter. `+`Consider searching for "${targ}" instead.

`}const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("search-tabs").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function updateSearchHistory(url){if(!browserSupportsHistoryApi()){return}const params=searchState.getQueryStringParams();if(!history.state&&!params.search){history.pushState(null,"",url)}else{history.replaceState(null,"",url)}}function search(forced){const query=parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="Results for "+query.original+" - Rust";updateSearchHistory(buildUrl(query.original,filterCrates));showResults(execQuery(query,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function buildItemSearchTypeAll(types,lowercasePaths){return types.length>0?types.map(type=>buildItemSearchType(type,lowercasePaths)):EMPTY_GENERICS_ARRAY}const EMPTY_BINDINGS_MAP=new Map();const EMPTY_GENERICS_ARRAY=[];let TYPES_POOL=new Map();function buildItemSearchType(type,lowercasePaths,isAssocType){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;const BINDINGS_DATA=2;let pathIndex,generics,bindings;if(typeof type==="number"){pathIndex=type;generics=EMPTY_GENERICS_ARRAY;bindings=EMPTY_BINDINGS_MAP}else{pathIndex=type[PATH_INDEX_DATA];generics=buildItemSearchTypeAll(type[GENERICS_DATA],lowercasePaths);if(type.length>BINDINGS_DATA&&type[BINDINGS_DATA].length>0){bindings=new Map(type[BINDINGS_DATA].map(binding=>{const[assocType,constraints]=binding;return[buildItemSearchType(assocType,lowercasePaths,true).id,buildItemSearchTypeAll(constraints,lowercasePaths),]}))}else{bindings=EMPTY_BINDINGS_MAP}}let result;if(pathIndex<0){result={id:pathIndex,ty:TY_GENERIC,path:null,generics,bindings,}}else if(pathIndex===0){result={id:null,ty:null,path:null,generics,bindings,}}else{const item=lowercasePaths[pathIndex-1];result={id:buildTypeMapIndex(item.name,isAssocType),ty:item.ty,path:item.path,generics,bindings,}}const cr=TYPES_POOL.get(result.id);if(cr){if(cr.generics.length===result.generics.length&&cr.generics!==result.generics&&cr.generics.every((x,i)=>result.generics[i]===x)){result.generics=cr.generics}if(cr.bindings.size===result.bindings.size&&cr.bindings!==result.bindings){let ok=true;for(const[k,v]of cr.bindings.entries()){const v2=result.bindings.get(v);if(!v2){ok=false;break}if(v!==v2&&v.length===v2.length&&v.every((x,i)=>v2[i]===x)){result.bindings.set(k,v)}else if(v!==v2){ok=false;break}}if(ok){result.bindings=cr.bindings}}if(cr.ty===result.ty&&cr.path===result.path&&cr.bindings===result.bindings&&cr.generics===result.generics&&cr.ty===result.ty){return cr}}TYPES_POOL.set(result.id,result);return result}function buildFunctionSearchType(itemFunctionDecoder,lowercasePaths){const c=itemFunctionDecoder.string.charCodeAt(itemFunctionDecoder.offset);itemFunctionDecoder.offset+=1;const[zero,ua,la,ob,cb]=["0","@","`","{","}"].map(c=>c.charCodeAt(0));if(c===la){return null}if(c>=zero&&c>1];itemFunctionDecoder.offset+=1;return sign?-value:value}const functionSearchType=decodeList();const INPUTS_DATA=0;const OUTPUT_DATA=1;let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){inputs=[buildItemSearchType(functionSearchType[INPUTS_DATA],lowercasePaths)]}else{inputs=buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],lowercasePaths)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){output=[buildItemSearchType(functionSearchType[OUTPUT_DATA],lowercasePaths)]}else{output=buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],lowercasePaths)}}else{output=[]}const where_clause=[];const l=functionSearchType.length;for(let i=2;i16){itemFunctionDecoder.backrefQueue.pop()}return ret}function buildFunctionTypeFingerprint(type,output,fps){let input=type.id;if(input===typeNameIdOfArray||input===typeNameIdOfSlice){input=typeNameIdOfArrayOrSlice}if(input===typeNameIdOfTuple||input===typeNameIdOfUnit){input=typeNameIdOfTupleOrUnit}if(input===typeNameIdOfFn||input===typeNameIdOfFnMut||input===typeNameIdOfFnOnce){input=typeNameIdOfHof}const hashint1=k=>{k=(~~k+0x7ed55d16)+(k<<12);k=(k ^ 0xc761c23c)^(k>>>19);k=(~~k+0x165667b1)+(k<<5);k=(~~k+0xd3a2646c)^(k<<9);k=(~~k+0xfd7046c5)+(k<<3);return(k ^ 0xb55a4f09)^(k>>>16)};const hashint2=k=>{k=~k+(k<<15);k ^=k>>>12;k+=k<<2;k ^=k>>>4;k=Math.imul(k,2057);return k ^(k>>16)};if(input!==null){const h0a=hashint1(input);const h0b=hashint2(input);const h1a=~~(h0a+Math.imul(h0b,2));const h1b=~~(h0a+Math.imul(h0b,3));const h2a=~~(h0a+Math.imul(h0b,4));const h2b=~~(h0a+Math.imul(h0b,5));output[0]|=(1<<(h0a%32))|(1<<(h1b%32));output[1]|=(1<<(h1a%32))|(1<<(h2b%32));output[2]|=(1<<(h2a%32))|(1<<(h0b%32));fps.add(input)}for(const g of type.generics){buildFunctionTypeFingerprint(g,output,fps)}const fb={id:null,ty:0,generics:EMPTY_GENERICS_ARRAY,bindings:EMPTY_BINDINGS_MAP,};for(const[k,v]of type.bindings.entries()){fb.id=k;fb.generics=v;buildFunctionTypeFingerprint(fb,output,fps)}output[3]=fps.size}function compareTypeFingerprints(fullId,queryFingerprint){const fh0=functionTypeFingerprint[fullId*4];const fh1=functionTypeFingerprint[(fullId*4)+1];const fh2=functionTypeFingerprint[(fullId*4)+2];const[qh0,qh1,qh2]=queryFingerprint;const[in0,in1,in2]=[fh0&qh0,fh1&qh1,fh2&qh2];if((in0 ^ qh0)||(in1 ^ qh1)||(in2 ^ qh2)){return null}return functionTypeFingerprint[(fullId*4)+3]}function buildIndex(rawSearchIndex){searchIndex=[];const charA="A".charCodeAt(0);let currentIndex=0;let id=0;for(const crate of rawSearchIndex.values()){id+=crate.t.length+1}functionTypeFingerprint=new Uint32Array((id+1)*4);id=0;for(const[crate,crateCorpus]of rawSearchIndex){const crateRow={crate:crate,ty:3,name:crate,path:"",desc:crateCorpus.doc,parent:undefined,type:null,id:id,word:crate,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),deprecated:null,implDisambiguator:null,};id+=1;searchIndex.push(crateRow);currentIndex+=1;const itemTypes=crateCorpus.t;const itemNames=crateCorpus.n;const itemPaths=new Map(crateCorpus.q);const itemDescs=crateCorpus.d;const itemParentIdxs=crateCorpus.i;const itemFunctionDecoder={string:crateCorpus.f,offset:0,backrefQueue:[],};const deprecatedItems=new Set(crateCorpus.c);const implDisambiguator=new Map(crateCorpus.b);const paths=crateCorpus.p;const aliases=crateCorpus.a;const lowercasePaths=[];let len=paths.length;let lastPath=itemPaths.get(0);for(let i=0;i2){path=itemPaths.has(elem[2])?itemPaths.get(elem[2]):lastPath;lastPath=path}lowercasePaths.push({ty:ty,name:name.toLowerCase(),path:path});paths[i]={ty:ty,name:name,path:path}}lastPath="";len=itemTypes.length;for(let i=0;i0?paths[itemParentIdxs[i]-1]:undefined,type,id:id,word,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),deprecated:deprecatedItems.has(i),implDisambiguator:implDisambiguator.has(i)?implDisambiguator.get(i):null,};id+=1;searchIndex.push(row);lastPath=row.path}if(aliases){const currentCrateAliases=new Map();ALIASES.set(crate,currentCrateAliases);for(const alias_name in aliases){if(!Object.prototype.hasOwnProperty.call(aliases,alias_name)){continue}let currentNameAliases;if(currentCrateAliases.has(alias_name)){currentNameAliases=currentCrateAliases.get(alias_name)}else{currentNameAliases=[];currentCrateAliases.set(alias_name,currentNameAliases)}for(const local_alias of aliases[alias_name]){currentNameAliases.push(local_alias+currentIndex)}}}currentIndex+=itemTypes.length}TYPES_POOL=new Map()}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;e.preventDefault();search()}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const query=searchState.input.value.trim();updateSearchHistory(buildUrl(query,null))}currentResults=null;search(true)}buildIndex(rawSearchIndex);if(typeof window!=="undefined"){registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}if(typeof exports!=="undefined"){exports.initSearch=initSearch;exports.execQuery=execQuery;exports.parseQuery=parseQuery}}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch(new Map())}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/static.files/settings-4313503d2e1961c2.js b/artifacts/tx-indexer/static.files/settings-4313503d2e1961c2.js new file mode 100644 index 0000000..ab425fe --- /dev/null +++ b/artifacts/tx-indexer/static.files/settings-4313503d2e1961c2.js @@ -0,0 +1,17 @@ +"use strict";(function(){const isSettingsPage=window.location.pathname.endsWith("/settings.html");function changeSetting(settingName,value){if(settingName==="theme"){const useSystem=value==="system preference"?"true":"false";updateLocalStorage("use-system-theme",useSystem)}updateLocalStorage(settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":updateTheme();updateLightAndDark();break;case"line-numbers":if(value===true){window.rustdoc_add_line_numbers_to_examples()}else{window.rustdoc_remove_line_numbers_from_examples()}break;case"hide-sidebar":if(value===true){addClass(document.documentElement,"hide-sidebar")}else{removeClass(document.documentElement,"hide-sidebar")}break}}function showLightAndDark(){removeClass(document.getElementById("preferred-light-theme"),"hidden");removeClass(document.getElementById("preferred-dark-theme"),"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme"),"hidden");addClass(document.getElementById("preferred-dark-theme"),"hidden")}function updateLightAndDark(){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||(useSystem===null&&getSettingValue("theme")===null)){showLightAndDark()}else{hideLightAndDark()}}function setEvents(settingsElement){updateLightAndDark();onEachLazy(settingsElement.querySelectorAll("input[type=\"checkbox\"]"),toggle=>{const settingId=toggle.id;const settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=()=>{changeSetting(toggle.id,toggle.checked)}});onEachLazy(settingsElement.querySelectorAll("input[type=\"radio\"]"),elem=>{const settingId=elem.name;let settingValue=getSettingValue(settingId);if(settingId==="theme"){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||settingValue===null){settingValue=useSystem==="false"?"light":"system preference"}}if(settingValue!==null&&settingValue!=="null"){elem.checked=settingValue===elem.value}elem.addEventListener("change",ev=>{changeSetting(ev.target.name,ev.target.value)})})}function buildSettingsPageSections(settings){let output="";for(const setting of settings){const js_data_name=setting["js_name"];const setting_name=setting["name"];if(setting["options"]!==undefined){output+=`\ +
+
${setting_name}
+
`;onEach(setting["options"],option=>{const checked=option===setting["default"]?" checked":"";const full=`${js_data_name}-${option.replace(/ /g,"-")}`;output+=`\ + `});output+=`\ +
+
`}else{const checked=setting["default"]===true?" checked":"";output+=`\ +
\ + \ +
`}}return output}function buildSettingsPage(){const theme_names=getVar("themes").split(",").filter(t=>t);theme_names.push("light","dark","ayu");const settings=[{"name":"Theme","js_name":"theme","default":"system preference","options":theme_names.concat("system preference"),},{"name":"Preferred light theme","js_name":"preferred-light-theme","default":"light","options":theme_names,},{"name":"Preferred dark theme","js_name":"preferred-dark-theme","default":"dark","options":theme_names,},{"name":"Auto-hide item contents for large items","js_name":"auto-hide-large-items","default":true,},{"name":"Auto-hide item methods' documentation","js_name":"auto-hide-method-docs","default":false,},{"name":"Auto-hide trait implementation documentation","js_name":"auto-hide-trait-implementations","default":false,},{"name":"Directly go to item in search if there is only one result","js_name":"go-to-only-result","default":false,},{"name":"Show line numbers on code examples","js_name":"line-numbers","default":false,},{"name":"Hide persistent navigation bar","js_name":"hide-sidebar","default":false,},{"name":"Disable keyboard shortcuts","js_name":"disable-shortcuts","default":false,},];const elementKind=isSettingsPage?"section":"div";const innerHTML=`
${buildSettingsPageSections(settings)}
`;const el=document.createElement(elementKind);el.id="settings";if(!isSettingsPage){el.className="popover"}el.innerHTML=innerHTML;if(isSettingsPage){document.getElementById(MAIN_ID).appendChild(el)}else{el.setAttribute("tabindex","-1");getSettingsButton().appendChild(el)}return el}const settingsMenu=buildSettingsPage();function displaySettings(){settingsMenu.style.display="";onEachLazy(settingsMenu.querySelectorAll("input[type='checkbox']"),el=>{const val=getSettingValue(el.id);const checked=val==="true";if(checked!==el.checked&&val!==null){el.checked=checked}})}function settingsBlurHandler(event){blurHandler(event,getSettingsButton(),window.hidePopoverMenus)}if(isSettingsPage){getSettingsButton().onclick=event=>{event.preventDefault()}}else{const settingsButton=getSettingsButton();const settingsMenu=document.getElementById("settings");settingsButton.onclick=event=>{if(settingsMenu.contains(event.target)){return}event.preventDefault();const shouldDisplaySettings=settingsMenu.style.display==="none";window.hideAllModals();if(shouldDisplaySettings){displaySettings()}};settingsButton.onblur=settingsBlurHandler;settingsButton.querySelector("a").onblur=settingsBlurHandler;onEachLazy(settingsMenu.querySelectorAll("input"),el=>{el.onblur=settingsBlurHandler});settingsMenu.onblur=settingsBlurHandler}setTimeout(()=>{setEvents(settingsMenu);if(!isSettingsPage){displaySettings()}removeClass(getSettingsButton(),"rotate")},0)})() \ No newline at end of file diff --git a/artifacts/tx-indexer/static.files/src-script-e66d777a5a92e9b2.js b/artifacts/tx-indexer/static.files/src-script-e66d777a5a92e9b2.js new file mode 100644 index 0000000..d0aebb8 --- /dev/null +++ b/artifacts/tx-indexer/static.files/src-script-e66d777a5a92e9b2.js @@ -0,0 +1 @@ +"use strict";(function(){const rootPath=getVar("root-path");const NAME_OFFSET=0;const DIRS_OFFSET=1;const FILES_OFFSET=2;const RUSTDOC_MOBILE_BREAKPOINT=700;function closeSidebarIfMobile(){if(window.innerWidth{removeClass(document.documentElement,"src-sidebar-expanded");updateLocalStorage("source-sidebar-show","false")};window.rustdocShowSourceSidebar=()=>{addClass(document.documentElement,"src-sidebar-expanded");updateLocalStorage("source-sidebar-show","true")};window.rustdocToggleSrcSidebar=()=>{if(document.documentElement.classList.contains("src-sidebar-expanded")){window.rustdocCloseSourceSidebar()}else{window.rustdocShowSourceSidebar()}};function createSrcSidebar(){const container=document.querySelector("nav.sidebar");const sidebar=document.createElement("div");sidebar.id="src-sidebar";let hasFoundFile=false;for(const[key,source]of srcIndex){source[NAME_OFFSET]=key;hasFoundFile=createDirEntry(source,sidebar,"",hasFoundFile)}container.appendChild(sidebar);const selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}function highlightSrcLines(){const match=window.location.hash.match(/^#?(\d+)(?:-(\d+))?$/);if(!match){return}let from=parseInt(match[1],10);let to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(to{onEachLazy(e.getElementsByTagName("a"),i_e=>{removeClass(i_e,"line-highlighted")})});for(let i=from;i<=to;++i){elem=document.getElementById(i);if(!elem){break}addClass(elem,"line-highlighted")}}const handleSrcHighlight=(function(){let prev_line_id=0;const set_fragment=name=>{const x=window.scrollX,y=window.scrollY;if(browserSupportsHistoryApi()){history.replaceState(null,null,"#"+name);highlightSrcLines()}else{location.replace("#"+name)}window.scrollTo(x,y)};return ev=>{let cur_line_id=parseInt(ev.target.id,10);if(isNaN(cur_line_id)||ev.ctrlKey||ev.altKey||ev.metaKey){return}ev.preventDefault();if(ev.shiftKey&&prev_line_id){if(prev_line_id>cur_line_id){const tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",highlightSrcLines);onEachLazy(document.getElementsByClassName("src-line-numbers"),el=>{el.addEventListener("click",handleSrcHighlight)});highlightSrcLines();window.createSrcSidebar=createSrcSidebar})() \ No newline at end of file diff --git a/artifacts/tx-indexer/static.files/storage-4c98445ec4002617.js b/artifacts/tx-indexer/static.files/storage-4c98445ec4002617.js new file mode 100644 index 0000000..b378b85 --- /dev/null +++ b/artifacts/tx-indexer/static.files/storage-4c98445ec4002617.js @@ -0,0 +1 @@ +"use strict";const builtinThemes=["light","dark","ayu"];const darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");const settingsDataset=(function(){const settingsElement=document.getElementById("default-settings");return settingsElement&&settingsElement.dataset?settingsElement.dataset:null})();function getSettingValue(settingName){const current=getCurrentValue(settingName);if(current===null&&settingsDataset!==null){const def=settingsDataset[settingName.replace(/-/g,"_")];if(def!==undefined){return def}}return current}const localStoredTheme=getSettingValue("theme");function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(elem&&elem.classList){elem.classList.add(className)}}function removeClass(elem,className){if(elem&&elem.classList){elem.classList.remove(className)}}function onEach(arr,func){for(const elem of arr){if(func(elem)){return true}}return false}function onEachLazy(lazyArray,func){return onEach(Array.prototype.slice.call(lazyArray),func)}function updateLocalStorage(name,value){try{window.localStorage.setItem("rustdoc-"+name,value)}catch(e){}}function getCurrentValue(name){try{return window.localStorage.getItem("rustdoc-"+name)}catch(e){return null}}const getVar=(function getVar(name){const el=document.querySelector("head > meta[name='rustdoc-vars']");return el?el.attributes["data-"+name].value:null});function switchTheme(newThemeName,saveTheme){const themeNames=getVar("themes").split(",").filter(t=>t);themeNames.push(...builtinThemes);if(themeNames.indexOf(newThemeName)===-1){return}if(saveTheme){updateLocalStorage("theme",newThemeName)}document.documentElement.setAttribute("data-theme",newThemeName);if(builtinThemes.indexOf(newThemeName)!==-1){if(window.currentTheme){window.currentTheme.parentNode.removeChild(window.currentTheme);window.currentTheme=null}}else{const newHref=getVar("root-path")+encodeURIComponent(newThemeName)+getVar("resource-suffix")+".css";if(!window.currentTheme){if(document.readyState==="loading"){document.write(``);window.currentTheme=document.getElementById("themeStyle")}else{window.currentTheme=document.createElement("link");window.currentTheme.rel="stylesheet";window.currentTheme.id="themeStyle";window.currentTheme.href=newHref;document.documentElement.appendChild(window.currentTheme)}}else if(newHref!==window.currentTheme.href){window.currentTheme.href=newHref}}}const updateTheme=(function(){const mql=window.matchMedia("(prefers-color-scheme: dark)");function updateTheme(){if(getSettingValue("use-system-theme")!=="false"){const lightTheme=getSettingValue("preferred-light-theme")||"light";const darkTheme=getSettingValue("preferred-dark-theme")||"dark";updateLocalStorage("use-system-theme","true");switchTheme(mql.matches?darkTheme:lightTheme,true)}else{switchTheme(getSettingValue("theme"),false)}}mql.addEventListener("change",updateTheme);return updateTheme})();if(getSettingValue("use-system-theme")!=="false"&&window.matchMedia){if(getSettingValue("use-system-theme")===null&&getSettingValue("preferred-dark-theme")===null&&darkThemes.indexOf(localStoredTheme)>=0){updateLocalStorage("preferred-dark-theme",localStoredTheme)}}updateTheme();if(getSettingValue("source-sidebar-show")==="true"){addClass(document.documentElement,"src-sidebar-expanded")}if(getSettingValue("hide-sidebar")==="true"){addClass(document.documentElement,"hide-sidebar")}function updateSidebarWidth(){const desktopSidebarWidth=getSettingValue("desktop-sidebar-width");if(desktopSidebarWidth&&desktopSidebarWidth!=="null"){document.documentElement.style.setProperty("--desktop-sidebar-width",desktopSidebarWidth+"px")}const srcSidebarWidth=getSettingValue("src-sidebar-width");if(srcSidebarWidth&&srcSidebarWidth!=="null"){document.documentElement.style.setProperty("--src-sidebar-width",srcSidebarWidth+"px")}}updateSidebarWidth();window.addEventListener("pageshow",ev=>{if(ev.persisted){setTimeout(updateTheme,0);setTimeout(updateSidebarWidth,0)}}) \ No newline at end of file diff --git a/artifacts/tx-indexer/static.files/wheel-7b819b6101059cd0.svg b/artifacts/tx-indexer/static.files/wheel-7b819b6101059cd0.svg new file mode 100644 index 0000000..83c07f6 --- /dev/null +++ b/artifacts/tx-indexer/static.files/wheel-7b819b6101059cd0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/clone/trait.Clone.js b/artifacts/tx-indexer/trait.impl/core/clone/trait.Clone.js new file mode 100644 index 0000000..2c2f100 --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/clone/trait.Clone.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl Clone for NetworkConfig"],["impl Clone for NetworkName"],["impl Clone for ChainEvent"],["impl Clone for ParseCurrencySymbol"],["impl Clone for NetworkNameParseErr"],["impl Clone for Address"],["impl Clone for AssetQuantity"],["impl Clone for ChainPointer"],["impl Clone for Credential"],["impl Clone for CurrencySymbol"],["impl Clone for DatumHash"],["impl Clone for Ed25519PubKeyHash"],["impl Clone for OutputDatum"],["impl Clone for PlutusData"],["impl Clone for ScriptHash"],["impl Clone for Slot"],["impl Clone for StakingCredential"],["impl Clone for TokenName"],["impl Clone for TransactionHash"],["impl Clone for TransactionInput"],["impl Clone for TransactionOutput"],["impl Clone for TxInInfo"],["impl Clone for Value"],["impl Clone for SyncProgressTable"],["impl Clone for ChainEventTime"],["impl Clone for TransactionEventRecord"],["impl Clone for RetryPolicy"],["impl Clone for ProgressTracker"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/cmp/trait.Eq.js b/artifacts/tx-indexer/trait.impl/core/cmp/trait.Eq.js new file mode 100644 index 0000000..69dcca4 --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/cmp/trait.Eq.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl Eq for NetworkNameParseErr"],["impl Eq for Address"],["impl Eq for AssetQuantity"],["impl Eq for ChainPointer"],["impl Eq for Credential"],["impl Eq for CurrencySymbol"],["impl Eq for DatumHash"],["impl Eq for Ed25519PubKeyHash"],["impl Eq for OutputDatum"],["impl Eq for PlutusData"],["impl Eq for ScriptHash"],["impl Eq for Slot"],["impl Eq for StakingCredential"],["impl Eq for TokenName"],["impl Eq for TransactionHash"],["impl Eq for TransactionInput"],["impl Eq for TransactionOutput"],["impl Eq for TxInInfo"],["impl Eq for Value"],["impl Eq for SyncProgressTable"],["impl Eq for ChainEventTime"],["impl Eq for TransactionEventRecord"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/cmp/trait.Ord.js b/artifacts/tx-indexer/trait.impl/core/cmp/trait.Ord.js new file mode 100644 index 0000000..5190926 --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/cmp/trait.Ord.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl Ord for Slot"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/cmp/trait.PartialEq.js b/artifacts/tx-indexer/trait.impl/core/cmp/trait.PartialEq.js new file mode 100644 index 0000000..7fb9f42 --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/cmp/trait.PartialEq.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl PartialEq for ChainEvent"],["impl PartialEq for NetworkNameParseErr"],["impl PartialEq for Address"],["impl PartialEq for AssetQuantity"],["impl PartialEq for ChainPointer"],["impl PartialEq for Credential"],["impl PartialEq for CurrencySymbol"],["impl PartialEq for DatumHash"],["impl PartialEq for Ed25519PubKeyHash"],["impl PartialEq for OutputDatum"],["impl PartialEq for PlutusData"],["impl PartialEq for ScriptHash"],["impl PartialEq for Slot"],["impl PartialEq for StakingCredential"],["impl PartialEq for TokenName"],["impl PartialEq for TransactionHash"],["impl PartialEq for TransactionInput"],["impl PartialEq for TransactionOutput"],["impl PartialEq for TxInInfo"],["impl PartialEq for Value"],["impl PartialEq for SyncProgressTable"],["impl PartialEq for ChainEventTime"],["impl PartialEq for TransactionEventRecord"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/cmp/trait.PartialOrd.js b/artifacts/tx-indexer/trait.impl/core/cmp/trait.PartialOrd.js new file mode 100644 index 0000000..3f2f11f --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/cmp/trait.PartialOrd.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl PartialOrd for Slot"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/convert/trait.From.js b/artifacts/tx-indexer/trait.impl/core/convert/trait.From.js new file mode 100644 index 0000000..801be00 --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/convert/trait.From.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl From<&Slot> for u64"],["impl From<PlutusDataEncodingError> for DBTypeConversionError"],["impl From<u64> for Slot"],["impl From<AssetQuantity> for (CurrencySymbol, TokenName, BigInt)"],["impl From<ChainPointer> for ChainPointer"],["impl From<CurrencySymbol> for CurrencySymbol"],["impl From<DatumHash> for DatumHash"],["impl From<Ed25519PubKeyHash> for Ed25519PubKeyHash"],["impl From<ScriptHash> for ScriptHash"],["impl From<TokenName> for TokenName"],["impl From<TransactionHash> for TransactionHash"],["impl From<TransactionInput> for TransactionInput"],["impl From<Value> for Value"],["impl From<Credential> for Credential"],["impl From<CurrencySymbol> for CurrencySymbol"],["impl From<DatumHash> for DatumHash"],["impl From<Ed25519PubKeyHash> for Ed25519PubKeyHash"],["impl From<JsError> for PlutusDataEncodingError"],["impl From<ScriptHash> for ScriptHash"],["impl From<TokenName> for TokenName"],["impl From<TransactionHash> for TransactionHash"],["impl From<TryFromCSLError> for PlutusDataEncodingError"],["impl From<TryFromPLAError> for PlutusDataEncodingError"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/convert/trait.TryFrom.js b/artifacts/tx-indexer/trait.impl/core/convert/trait.TryFrom.js new file mode 100644 index 0000000..50dbb49 --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/convert/trait.TryFrom.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl TryFrom<(CurrencySymbol, TokenName, BigInt)> for AssetQuantity"],["impl TryFrom<Address> for Address"],["impl TryFrom<Credential> for Credential"],["impl TryFrom<OutputDatum> for OutputDatum"],["impl TryFrom<PlutusData> for PlutusData"],["impl TryFrom<StakingCredential> for StakingCredential"],["impl TryFrom<TransactionOutput> for TransactionOutput"],["impl TryFrom<TxInInfo> for TxInInfo"],["impl TryFrom<Address> for Address"],["impl TryFrom<ChainPointer> for ChainPointer"],["impl TryFrom<OutputDatum> for OutputDatum"],["impl TryFrom<PlutusData> for PlutusData"],["impl TryFrom<StakingCredential> for StakingCredential"],["impl TryFrom<TransactionInput> for TransactionInput"],["impl TryFrom<TransactionOutput> for TransactionOutput"],["impl TryFrom<TxInInfo> for TxInInfo"],["impl TryFrom<Value> for Value"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/default/trait.Default.js b/artifacts/tx-indexer/trait.impl/core/default/trait.Default.js new file mode 100644 index 0000000..2f75960 --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/default/trait.Default.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl Default for RetryPolicy"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/error/trait.Error.js b/artifacts/tx-indexer/trait.impl/core/error/trait.Error.js new file mode 100644 index 0000000..8fe3643 --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/error/trait.Error.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl Error for DBTypeConversionError"],["impl Error for PlutusDataEncodingError"],["impl Error for NetworkNameParseErr"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/fmt/trait.Debug.js b/artifacts/tx-indexer/trait.impl/core/fmt/trait.Debug.js new file mode 100644 index 0000000..7e97901 --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/fmt/trait.Debug.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl Debug for NetworkConfig"],["impl Debug for NetworkName"],["impl Debug for DBTypeConversionError"],["impl Debug for PlutusDataEncodingError"],["impl Debug for ChainEvent"],["impl Debug for ParseCurrencySymbol"],["impl Debug for NetworkNameParseErr"],["impl Debug for Address"],["impl Debug for AssetQuantity"],["impl Debug for ChainPointer"],["impl Debug for Credential"],["impl Debug for CurrencySymbol"],["impl Debug for DatumHash"],["impl Debug for Ed25519PubKeyHash"],["impl Debug for OutputDatum"],["impl Debug for PlutusData"],["impl Debug for ScriptHash"],["impl Debug for Slot"],["impl Debug for StakingCredential"],["impl Debug for TokenName"],["impl Debug for TransactionHash"],["impl Debug for TransactionInput"],["impl Debug for TransactionOutput"],["impl Debug for TxInInfo"],["impl Debug for Value"],["impl Debug for SyncProgressTable"],["impl Debug for ChainEventTime"],["impl Debug for TransactionEventRecord"],["impl Debug for RetryPolicy"],["impl Debug for ProgressTracker"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/fmt/trait.Display.js b/artifacts/tx-indexer/trait.impl/core/fmt/trait.Display.js new file mode 100644 index 0000000..6626c44 --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/fmt/trait.Display.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl Display for NetworkName"],["impl Display for DBTypeConversionError"],["impl Display for PlutusDataEncodingError"],["impl Display for Events"],["impl Display for NetworkNameParseErr"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/marker/trait.Copy.js b/artifacts/tx-indexer/trait.impl/core/marker/trait.Copy.js new file mode 100644 index 0000000..28499b2 --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/marker/trait.Copy.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl Copy for RetryPolicy"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/marker/trait.Freeze.js b/artifacts/tx-indexer/trait.impl/core/marker/trait.Freeze.js new file mode 100644 index 0000000..da58477 --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/marker/trait.Freeze.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl Freeze for NetworkConfig",1,["tx_indexer::config::NetworkConfig"]],["impl Freeze for NetworkName",1,["tx_indexer::config::NetworkName"]],["impl Freeze for NodeAddress",1,["tx_indexer::config::NodeAddress"]],["impl Freeze for DBTypeConversionError",1,["tx_indexer::database::plutus::DBTypeConversionError"]],["impl Freeze for PlutusDataEncodingError",1,["tx_indexer::database::plutus::PlutusDataEncodingError"]],["impl Freeze for Events",1,["tx_indexer::handler::callback::Events"]],["impl Freeze for ChainEvent",1,["tx_indexer::handler::chain_event::ChainEvent"]],["impl Freeze for ParseCurrencySymbol",1,["tx_indexer::aux::ParseCurrencySymbol"]],["impl Freeze for NetworkNameParseErr",1,["tx_indexer::config::NetworkNameParseErr"]],["impl Freeze for Address",1,["tx_indexer::database::plutus::Address"]],["impl Freeze for AssetQuantity",1,["tx_indexer::database::plutus::AssetQuantity"]],["impl Freeze for ChainPointer",1,["tx_indexer::database::plutus::ChainPointer"]],["impl Freeze for Credential",1,["tx_indexer::database::plutus::Credential"]],["impl Freeze for CurrencySymbol",1,["tx_indexer::database::plutus::CurrencySymbol"]],["impl Freeze for DatumHash",1,["tx_indexer::database::plutus::DatumHash"]],["impl Freeze for Ed25519PubKeyHash",1,["tx_indexer::database::plutus::Ed25519PubKeyHash"]],["impl Freeze for OutputDatum",1,["tx_indexer::database::plutus::OutputDatum"]],["impl Freeze for PlutusData",1,["tx_indexer::database::plutus::PlutusData"]],["impl Freeze for ScriptHash",1,["tx_indexer::database::plutus::ScriptHash"]],["impl Freeze for Slot",1,["tx_indexer::database::plutus::Slot"]],["impl Freeze for StakingCredential",1,["tx_indexer::database::plutus::StakingCredential"]],["impl Freeze for TokenName",1,["tx_indexer::database::plutus::TokenName"]],["impl Freeze for TransactionHash",1,["tx_indexer::database::plutus::TransactionHash"]],["impl Freeze for TransactionInput",1,["tx_indexer::database::plutus::TransactionInput"]],["impl Freeze for TransactionOutput",1,["tx_indexer::database::plutus::TransactionOutput"]],["impl Freeze for TxInInfo",1,["tx_indexer::database::plutus::TxInInfo"]],["impl Freeze for Value",1,["tx_indexer::database::plutus::Value"]],["impl Freeze for SyncProgressTable",1,["tx_indexer::database::sync_progress::SyncProgressTable"]],["impl Freeze for Filter",1,["tx_indexer::filter::Filter"]],["impl Freeze for ChainEventTime",1,["tx_indexer::handler::chain_event::ChainEventTime"]],["impl Freeze for TransactionEventRecord",1,["tx_indexer::handler::chain_event::TransactionEventRecord"]],["impl Freeze for RetryPolicy",1,["tx_indexer::handler::retry::RetryPolicy"]],["impl Freeze for ProgressTracker",1,["tx_indexer::progress_tracker::ProgressTracker"]],["impl Freeze for TxIndexer",1,["tx_indexer::indexer::TxIndexer"]],["impl<E> Freeze for ErrorPolicy<E>",1,["tx_indexer::error::ErrorPolicy"]],["impl<H> Freeze for TxIndexerConfig<H>
where\n H: Freeze,
",1,["tx_indexer::config::TxIndexerConfig"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/marker/trait.Send.js b/artifacts/tx-indexer/trait.impl/core/marker/trait.Send.js new file mode 100644 index 0000000..d448702 --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/marker/trait.Send.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl Send for NetworkConfig",1,["tx_indexer::config::NetworkConfig"]],["impl Send for NetworkName",1,["tx_indexer::config::NetworkName"]],["impl Send for NodeAddress",1,["tx_indexer::config::NodeAddress"]],["impl Send for DBTypeConversionError",1,["tx_indexer::database::plutus::DBTypeConversionError"]],["impl Send for PlutusDataEncodingError",1,["tx_indexer::database::plutus::PlutusDataEncodingError"]],["impl Send for Events",1,["tx_indexer::handler::callback::Events"]],["impl Send for ChainEvent",1,["tx_indexer::handler::chain_event::ChainEvent"]],["impl Send for ParseCurrencySymbol",1,["tx_indexer::aux::ParseCurrencySymbol"]],["impl Send for NetworkNameParseErr",1,["tx_indexer::config::NetworkNameParseErr"]],["impl Send for Address",1,["tx_indexer::database::plutus::Address"]],["impl Send for AssetQuantity",1,["tx_indexer::database::plutus::AssetQuantity"]],["impl Send for ChainPointer",1,["tx_indexer::database::plutus::ChainPointer"]],["impl Send for Credential",1,["tx_indexer::database::plutus::Credential"]],["impl Send for CurrencySymbol",1,["tx_indexer::database::plutus::CurrencySymbol"]],["impl Send for DatumHash",1,["tx_indexer::database::plutus::DatumHash"]],["impl Send for Ed25519PubKeyHash",1,["tx_indexer::database::plutus::Ed25519PubKeyHash"]],["impl Send for OutputDatum",1,["tx_indexer::database::plutus::OutputDatum"]],["impl Send for PlutusData",1,["tx_indexer::database::plutus::PlutusData"]],["impl Send for ScriptHash",1,["tx_indexer::database::plutus::ScriptHash"]],["impl Send for Slot",1,["tx_indexer::database::plutus::Slot"]],["impl Send for StakingCredential",1,["tx_indexer::database::plutus::StakingCredential"]],["impl Send for TokenName",1,["tx_indexer::database::plutus::TokenName"]],["impl Send for TransactionHash",1,["tx_indexer::database::plutus::TransactionHash"]],["impl Send for TransactionInput",1,["tx_indexer::database::plutus::TransactionInput"]],["impl Send for TransactionOutput",1,["tx_indexer::database::plutus::TransactionOutput"]],["impl Send for TxInInfo",1,["tx_indexer::database::plutus::TxInInfo"]],["impl Send for Value",1,["tx_indexer::database::plutus::Value"]],["impl Send for SyncProgressTable",1,["tx_indexer::database::sync_progress::SyncProgressTable"]],["impl Send for Filter",1,["tx_indexer::filter::Filter"]],["impl Send for ChainEventTime",1,["tx_indexer::handler::chain_event::ChainEventTime"]],["impl Send for TransactionEventRecord",1,["tx_indexer::handler::chain_event::TransactionEventRecord"]],["impl Send for RetryPolicy",1,["tx_indexer::handler::retry::RetryPolicy"]],["impl Send for ProgressTracker",1,["tx_indexer::progress_tracker::ProgressTracker"]],["impl Send for TxIndexer",1,["tx_indexer::indexer::TxIndexer"]],["impl<E> Send for ErrorPolicy<E>",1,["tx_indexer::error::ErrorPolicy"]],["impl<H> Send for TxIndexerConfig<H>",1,["tx_indexer::config::TxIndexerConfig"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/marker/trait.StructuralPartialEq.js b/artifacts/tx-indexer/trait.impl/core/marker/trait.StructuralPartialEq.js new file mode 100644 index 0000000..731d660 --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/marker/trait.StructuralPartialEq.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl StructuralPartialEq for ChainEvent"],["impl StructuralPartialEq for NetworkNameParseErr"],["impl StructuralPartialEq for Address"],["impl StructuralPartialEq for AssetQuantity"],["impl StructuralPartialEq for ChainPointer"],["impl StructuralPartialEq for Credential"],["impl StructuralPartialEq for CurrencySymbol"],["impl StructuralPartialEq for DatumHash"],["impl StructuralPartialEq for Ed25519PubKeyHash"],["impl StructuralPartialEq for OutputDatum"],["impl StructuralPartialEq for PlutusData"],["impl StructuralPartialEq for ScriptHash"],["impl StructuralPartialEq for Slot"],["impl StructuralPartialEq for StakingCredential"],["impl StructuralPartialEq for TokenName"],["impl StructuralPartialEq for TransactionHash"],["impl StructuralPartialEq for TransactionInput"],["impl StructuralPartialEq for TransactionOutput"],["impl StructuralPartialEq for TxInInfo"],["impl StructuralPartialEq for Value"],["impl StructuralPartialEq for SyncProgressTable"],["impl StructuralPartialEq for ChainEventTime"],["impl StructuralPartialEq for TransactionEventRecord"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/marker/trait.Sync.js b/artifacts/tx-indexer/trait.impl/core/marker/trait.Sync.js new file mode 100644 index 0000000..647abb3 --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/marker/trait.Sync.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl Sync for NetworkConfig",1,["tx_indexer::config::NetworkConfig"]],["impl Sync for NetworkName",1,["tx_indexer::config::NetworkName"]],["impl Sync for NodeAddress",1,["tx_indexer::config::NodeAddress"]],["impl Sync for DBTypeConversionError",1,["tx_indexer::database::plutus::DBTypeConversionError"]],["impl Sync for PlutusDataEncodingError",1,["tx_indexer::database::plutus::PlutusDataEncodingError"]],["impl Sync for Events",1,["tx_indexer::handler::callback::Events"]],["impl Sync for ChainEvent",1,["tx_indexer::handler::chain_event::ChainEvent"]],["impl Sync for ParseCurrencySymbol",1,["tx_indexer::aux::ParseCurrencySymbol"]],["impl Sync for NetworkNameParseErr",1,["tx_indexer::config::NetworkNameParseErr"]],["impl Sync for Address",1,["tx_indexer::database::plutus::Address"]],["impl Sync for AssetQuantity",1,["tx_indexer::database::plutus::AssetQuantity"]],["impl Sync for ChainPointer",1,["tx_indexer::database::plutus::ChainPointer"]],["impl Sync for Credential",1,["tx_indexer::database::plutus::Credential"]],["impl Sync for CurrencySymbol",1,["tx_indexer::database::plutus::CurrencySymbol"]],["impl Sync for DatumHash",1,["tx_indexer::database::plutus::DatumHash"]],["impl Sync for Ed25519PubKeyHash",1,["tx_indexer::database::plutus::Ed25519PubKeyHash"]],["impl Sync for OutputDatum",1,["tx_indexer::database::plutus::OutputDatum"]],["impl Sync for PlutusData",1,["tx_indexer::database::plutus::PlutusData"]],["impl Sync for ScriptHash",1,["tx_indexer::database::plutus::ScriptHash"]],["impl Sync for Slot",1,["tx_indexer::database::plutus::Slot"]],["impl Sync for StakingCredential",1,["tx_indexer::database::plutus::StakingCredential"]],["impl Sync for TokenName",1,["tx_indexer::database::plutus::TokenName"]],["impl Sync for TransactionHash",1,["tx_indexer::database::plutus::TransactionHash"]],["impl Sync for TransactionInput",1,["tx_indexer::database::plutus::TransactionInput"]],["impl Sync for TransactionOutput",1,["tx_indexer::database::plutus::TransactionOutput"]],["impl Sync for TxInInfo",1,["tx_indexer::database::plutus::TxInInfo"]],["impl Sync for Value",1,["tx_indexer::database::plutus::Value"]],["impl Sync for SyncProgressTable",1,["tx_indexer::database::sync_progress::SyncProgressTable"]],["impl Sync for Filter",1,["tx_indexer::filter::Filter"]],["impl Sync for ChainEventTime",1,["tx_indexer::handler::chain_event::ChainEventTime"]],["impl Sync for TransactionEventRecord",1,["tx_indexer::handler::chain_event::TransactionEventRecord"]],["impl Sync for RetryPolicy",1,["tx_indexer::handler::retry::RetryPolicy"]],["impl Sync for ProgressTracker",1,["tx_indexer::progress_tracker::ProgressTracker"]],["impl Sync for TxIndexer",1,["tx_indexer::indexer::TxIndexer"]],["impl<E> Sync for ErrorPolicy<E>",1,["tx_indexer::error::ErrorPolicy"]],["impl<H> Sync for TxIndexerConfig<H>
where\n H: Sync,
",1,["tx_indexer::config::TxIndexerConfig"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/marker/trait.Unpin.js b/artifacts/tx-indexer/trait.impl/core/marker/trait.Unpin.js new file mode 100644 index 0000000..9d3a630 --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/marker/trait.Unpin.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl Unpin for NetworkConfig",1,["tx_indexer::config::NetworkConfig"]],["impl Unpin for NetworkName",1,["tx_indexer::config::NetworkName"]],["impl Unpin for NodeAddress",1,["tx_indexer::config::NodeAddress"]],["impl Unpin for DBTypeConversionError",1,["tx_indexer::database::plutus::DBTypeConversionError"]],["impl Unpin for PlutusDataEncodingError",1,["tx_indexer::database::plutus::PlutusDataEncodingError"]],["impl Unpin for Events",1,["tx_indexer::handler::callback::Events"]],["impl Unpin for ChainEvent",1,["tx_indexer::handler::chain_event::ChainEvent"]],["impl Unpin for ParseCurrencySymbol",1,["tx_indexer::aux::ParseCurrencySymbol"]],["impl Unpin for NetworkNameParseErr",1,["tx_indexer::config::NetworkNameParseErr"]],["impl Unpin for Address",1,["tx_indexer::database::plutus::Address"]],["impl Unpin for AssetQuantity",1,["tx_indexer::database::plutus::AssetQuantity"]],["impl Unpin for ChainPointer",1,["tx_indexer::database::plutus::ChainPointer"]],["impl Unpin for Credential",1,["tx_indexer::database::plutus::Credential"]],["impl Unpin for CurrencySymbol",1,["tx_indexer::database::plutus::CurrencySymbol"]],["impl Unpin for DatumHash",1,["tx_indexer::database::plutus::DatumHash"]],["impl Unpin for Ed25519PubKeyHash",1,["tx_indexer::database::plutus::Ed25519PubKeyHash"]],["impl Unpin for OutputDatum",1,["tx_indexer::database::plutus::OutputDatum"]],["impl Unpin for PlutusData",1,["tx_indexer::database::plutus::PlutusData"]],["impl Unpin for ScriptHash",1,["tx_indexer::database::plutus::ScriptHash"]],["impl Unpin for Slot",1,["tx_indexer::database::plutus::Slot"]],["impl Unpin for StakingCredential",1,["tx_indexer::database::plutus::StakingCredential"]],["impl Unpin for TokenName",1,["tx_indexer::database::plutus::TokenName"]],["impl Unpin for TransactionHash",1,["tx_indexer::database::plutus::TransactionHash"]],["impl Unpin for TransactionInput",1,["tx_indexer::database::plutus::TransactionInput"]],["impl Unpin for TransactionOutput",1,["tx_indexer::database::plutus::TransactionOutput"]],["impl Unpin for TxInInfo",1,["tx_indexer::database::plutus::TxInInfo"]],["impl Unpin for Value",1,["tx_indexer::database::plutus::Value"]],["impl Unpin for SyncProgressTable",1,["tx_indexer::database::sync_progress::SyncProgressTable"]],["impl Unpin for Filter",1,["tx_indexer::filter::Filter"]],["impl Unpin for ChainEventTime",1,["tx_indexer::handler::chain_event::ChainEventTime"]],["impl Unpin for TransactionEventRecord",1,["tx_indexer::handler::chain_event::TransactionEventRecord"]],["impl Unpin for RetryPolicy",1,["tx_indexer::handler::retry::RetryPolicy"]],["impl Unpin for ProgressTracker",1,["tx_indexer::progress_tracker::ProgressTracker"]],["impl Unpin for TxIndexer",1,["tx_indexer::indexer::TxIndexer"]],["impl<E> Unpin for ErrorPolicy<E>",1,["tx_indexer::error::ErrorPolicy"]],["impl<H> Unpin for TxIndexerConfig<H>
where\n H: Unpin,
",1,["tx_indexer::config::TxIndexerConfig"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/artifacts/tx-indexer/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js new file mode 100644 index 0000000..41ad994 --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl !RefUnwindSafe for DBTypeConversionError",1,["tx_indexer::database::plutus::DBTypeConversionError"]],["impl !RefUnwindSafe for PlutusDataEncodingError",1,["tx_indexer::database::plutus::PlutusDataEncodingError"]],["impl !RefUnwindSafe for TxIndexer",1,["tx_indexer::indexer::TxIndexer"]],["impl RefUnwindSafe for NetworkConfig",1,["tx_indexer::config::NetworkConfig"]],["impl RefUnwindSafe for NetworkName",1,["tx_indexer::config::NetworkName"]],["impl RefUnwindSafe for NodeAddress",1,["tx_indexer::config::NodeAddress"]],["impl RefUnwindSafe for Events",1,["tx_indexer::handler::callback::Events"]],["impl RefUnwindSafe for ChainEvent",1,["tx_indexer::handler::chain_event::ChainEvent"]],["impl RefUnwindSafe for ParseCurrencySymbol",1,["tx_indexer::aux::ParseCurrencySymbol"]],["impl RefUnwindSafe for NetworkNameParseErr",1,["tx_indexer::config::NetworkNameParseErr"]],["impl RefUnwindSafe for Address",1,["tx_indexer::database::plutus::Address"]],["impl RefUnwindSafe for AssetQuantity",1,["tx_indexer::database::plutus::AssetQuantity"]],["impl RefUnwindSafe for ChainPointer",1,["tx_indexer::database::plutus::ChainPointer"]],["impl RefUnwindSafe for Credential",1,["tx_indexer::database::plutus::Credential"]],["impl RefUnwindSafe for CurrencySymbol",1,["tx_indexer::database::plutus::CurrencySymbol"]],["impl RefUnwindSafe for DatumHash",1,["tx_indexer::database::plutus::DatumHash"]],["impl RefUnwindSafe for Ed25519PubKeyHash",1,["tx_indexer::database::plutus::Ed25519PubKeyHash"]],["impl RefUnwindSafe for OutputDatum",1,["tx_indexer::database::plutus::OutputDatum"]],["impl RefUnwindSafe for PlutusData",1,["tx_indexer::database::plutus::PlutusData"]],["impl RefUnwindSafe for ScriptHash",1,["tx_indexer::database::plutus::ScriptHash"]],["impl RefUnwindSafe for Slot",1,["tx_indexer::database::plutus::Slot"]],["impl RefUnwindSafe for StakingCredential",1,["tx_indexer::database::plutus::StakingCredential"]],["impl RefUnwindSafe for TokenName",1,["tx_indexer::database::plutus::TokenName"]],["impl RefUnwindSafe for TransactionHash",1,["tx_indexer::database::plutus::TransactionHash"]],["impl RefUnwindSafe for TransactionInput",1,["tx_indexer::database::plutus::TransactionInput"]],["impl RefUnwindSafe for TransactionOutput",1,["tx_indexer::database::plutus::TransactionOutput"]],["impl RefUnwindSafe for TxInInfo",1,["tx_indexer::database::plutus::TxInInfo"]],["impl RefUnwindSafe for Value",1,["tx_indexer::database::plutus::Value"]],["impl RefUnwindSafe for SyncProgressTable",1,["tx_indexer::database::sync_progress::SyncProgressTable"]],["impl RefUnwindSafe for Filter",1,["tx_indexer::filter::Filter"]],["impl RefUnwindSafe for ChainEventTime",1,["tx_indexer::handler::chain_event::ChainEventTime"]],["impl RefUnwindSafe for TransactionEventRecord",1,["tx_indexer::handler::chain_event::TransactionEventRecord"]],["impl RefUnwindSafe for RetryPolicy",1,["tx_indexer::handler::retry::RetryPolicy"]],["impl RefUnwindSafe for ProgressTracker",1,["tx_indexer::progress_tracker::ProgressTracker"]],["impl<E> RefUnwindSafe for ErrorPolicy<E>",1,["tx_indexer::error::ErrorPolicy"]],["impl<H> RefUnwindSafe for TxIndexerConfig<H>
where\n H: RefUnwindSafe,
",1,["tx_indexer::config::TxIndexerConfig"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/artifacts/tx-indexer/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js new file mode 100644 index 0000000..c47b6ec --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl !UnwindSafe for DBTypeConversionError",1,["tx_indexer::database::plutus::DBTypeConversionError"]],["impl !UnwindSafe for PlutusDataEncodingError",1,["tx_indexer::database::plutus::PlutusDataEncodingError"]],["impl !UnwindSafe for TxIndexer",1,["tx_indexer::indexer::TxIndexer"]],["impl UnwindSafe for NetworkConfig",1,["tx_indexer::config::NetworkConfig"]],["impl UnwindSafe for NetworkName",1,["tx_indexer::config::NetworkName"]],["impl UnwindSafe for NodeAddress",1,["tx_indexer::config::NodeAddress"]],["impl UnwindSafe for Events",1,["tx_indexer::handler::callback::Events"]],["impl UnwindSafe for ChainEvent",1,["tx_indexer::handler::chain_event::ChainEvent"]],["impl UnwindSafe for ParseCurrencySymbol",1,["tx_indexer::aux::ParseCurrencySymbol"]],["impl UnwindSafe for NetworkNameParseErr",1,["tx_indexer::config::NetworkNameParseErr"]],["impl UnwindSafe for Address",1,["tx_indexer::database::plutus::Address"]],["impl UnwindSafe for AssetQuantity",1,["tx_indexer::database::plutus::AssetQuantity"]],["impl UnwindSafe for ChainPointer",1,["tx_indexer::database::plutus::ChainPointer"]],["impl UnwindSafe for Credential",1,["tx_indexer::database::plutus::Credential"]],["impl UnwindSafe for CurrencySymbol",1,["tx_indexer::database::plutus::CurrencySymbol"]],["impl UnwindSafe for DatumHash",1,["tx_indexer::database::plutus::DatumHash"]],["impl UnwindSafe for Ed25519PubKeyHash",1,["tx_indexer::database::plutus::Ed25519PubKeyHash"]],["impl UnwindSafe for OutputDatum",1,["tx_indexer::database::plutus::OutputDatum"]],["impl UnwindSafe for PlutusData",1,["tx_indexer::database::plutus::PlutusData"]],["impl UnwindSafe for ScriptHash",1,["tx_indexer::database::plutus::ScriptHash"]],["impl UnwindSafe for Slot",1,["tx_indexer::database::plutus::Slot"]],["impl UnwindSafe for StakingCredential",1,["tx_indexer::database::plutus::StakingCredential"]],["impl UnwindSafe for TokenName",1,["tx_indexer::database::plutus::TokenName"]],["impl UnwindSafe for TransactionHash",1,["tx_indexer::database::plutus::TransactionHash"]],["impl UnwindSafe for TransactionInput",1,["tx_indexer::database::plutus::TransactionInput"]],["impl UnwindSafe for TransactionOutput",1,["tx_indexer::database::plutus::TransactionOutput"]],["impl UnwindSafe for TxInInfo",1,["tx_indexer::database::plutus::TxInInfo"]],["impl UnwindSafe for Value",1,["tx_indexer::database::plutus::Value"]],["impl UnwindSafe for SyncProgressTable",1,["tx_indexer::database::sync_progress::SyncProgressTable"]],["impl UnwindSafe for Filter",1,["tx_indexer::filter::Filter"]],["impl UnwindSafe for ChainEventTime",1,["tx_indexer::handler::chain_event::ChainEventTime"]],["impl UnwindSafe for TransactionEventRecord",1,["tx_indexer::handler::chain_event::TransactionEventRecord"]],["impl UnwindSafe for RetryPolicy",1,["tx_indexer::handler::retry::RetryPolicy"]],["impl UnwindSafe for ProgressTracker",1,["tx_indexer::progress_tracker::ProgressTracker"]],["impl<E> UnwindSafe for ErrorPolicy<E>",1,["tx_indexer::error::ErrorPolicy"]],["impl<H> UnwindSafe for TxIndexerConfig<H>
where\n H: UnwindSafe,
",1,["tx_indexer::config::TxIndexerConfig"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/core/str/traits/trait.FromStr.js b/artifacts/tx-indexer/trait.impl/core/str/traits/trait.FromStr.js new file mode 100644 index 0000000..c2c4f2c --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/core/str/traits/trait.FromStr.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl FromStr for NetworkName"],["impl FromStr for ParseCurrencySymbol"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/sqlx_core/decode/trait.Decode.js b/artifacts/tx-indexer/trait.impl/sqlx_core/decode/trait.Decode.js new file mode 100644 index 0000000..cbe36a2 --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/sqlx_core/decode/trait.Decode.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl<'r> Decode<'r, Postgres> for Address"],["impl<'r> Decode<'r, Postgres> for AssetQuantity"],["impl<'r> Decode<'r, Postgres> for ChainPointer"],["impl<'r> Decode<'r, Postgres> for Credential"],["impl<'r> Decode<'r, Postgres> for OutputDatum"],["impl<'r> Decode<'r, Postgres> for StakingCredential"],["impl<'r> Decode<'r, Postgres> for TransactionInput"],["impl<'r> Decode<'r, Postgres> for TransactionOutput"],["impl<'r> Decode<'r, Postgres> for TxInInfo"],["impl<'r, DB: Database> Decode<'r, DB> for CurrencySymbol
where\n Vec<u8>: Decode<'r, DB>,
"],["impl<'r, DB: Database> Decode<'r, DB> for DatumHash
where\n Vec<u8>: Decode<'r, DB>,
"],["impl<'r, DB: Database> Decode<'r, DB> for Ed25519PubKeyHash
where\n Vec<u8>: Decode<'r, DB>,
"],["impl<'r, DB: Database> Decode<'r, DB> for PlutusData
where\n Value: Decode<'r, DB>,
"],["impl<'r, DB: Database> Decode<'r, DB> for ScriptHash
where\n Vec<u8>: Decode<'r, DB>,
"],["impl<'r, DB: Database> Decode<'r, DB> for Slot
where\n i64: Decode<'r, DB>,
"],["impl<'r, DB: Database> Decode<'r, DB> for TokenName
where\n Vec<u8>: Decode<'r, DB>,
"],["impl<'r, DB: Database> Decode<'r, DB> for TransactionHash
where\n Vec<u8>: Decode<'r, DB>,
"],["impl<'r, DB: Database> Decode<'r, DB> for Value
where\n Vec<AssetQuantity>: Decode<'r, DB>,
"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/sqlx_core/encode/trait.Encode.js b/artifacts/tx-indexer/trait.impl/sqlx_core/encode/trait.Encode.js new file mode 100644 index 0000000..a2302db --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/sqlx_core/encode/trait.Encode.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl<'q> Encode<'_, Postgres> for Address"],["impl<'q> Encode<'_, Postgres> for AssetQuantity"],["impl<'q> Encode<'_, Postgres> for ChainPointer"],["impl<'q> Encode<'_, Postgres> for Credential"],["impl<'q> Encode<'_, Postgres> for OutputDatum"],["impl<'q> Encode<'_, Postgres> for StakingCredential"],["impl<'q> Encode<'_, Postgres> for TransactionInput"],["impl<'q> Encode<'_, Postgres> for TransactionOutput"],["impl<'q> Encode<'_, Postgres> for TxInInfo"],["impl<'q, DB: Database> Encode<'q, DB> for CurrencySymbol
where\n Vec<u8>: Encode<'q, DB>,
"],["impl<'q, DB: Database> Encode<'q, DB> for DatumHash
where\n Vec<u8>: Encode<'q, DB>,
"],["impl<'q, DB: Database> Encode<'q, DB> for Ed25519PubKeyHash
where\n Vec<u8>: Encode<'q, DB>,
"],["impl<'q, DB: Database> Encode<'q, DB> for PlutusData
where\n Value: Encode<'q, DB>,
"],["impl<'q, DB: Database> Encode<'q, DB> for ScriptHash
where\n Vec<u8>: Encode<'q, DB>,
"],["impl<'q, DB: Database> Encode<'q, DB> for Slot
where\n i64: Encode<'q, DB>,
"],["impl<'q, DB: Database> Encode<'q, DB> for TokenName
where\n Vec<u8>: Encode<'q, DB>,
"],["impl<'q, DB: Database> Encode<'q, DB> for TransactionHash
where\n Vec<u8>: Encode<'q, DB>,
"],["impl<'q, DB: Database> Encode<'q, DB> for Value
where\n Vec<AssetQuantity>: Encode<'q, DB>,
"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/sqlx_core/from_row/trait.FromRow.js b/artifacts/tx-indexer/trait.impl/sqlx_core/from_row/trait.FromRow.js new file mode 100644 index 0000000..9e23383 --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/sqlx_core/from_row/trait.FromRow.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl<'a, R: Row> FromRow<'a, R> for SyncProgressTable
where\n &'a str: ColumnIndex<R>,\n i64: Decode<'a, R::Database> + Type<R::Database>,\n Vec<u8>: Decode<'a, R::Database> + Type<R::Database>,
"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/sqlx_core/types/trait.Type.js b/artifacts/tx-indexer/trait.impl/sqlx_core/types/trait.Type.js new file mode 100644 index 0000000..65cea8b --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/sqlx_core/types/trait.Type.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl Type<Postgres> for Address"],["impl Type<Postgres> for AssetQuantity"],["impl Type<Postgres> for ChainPointer"],["impl Type<Postgres> for Credential"],["impl Type<Postgres> for CurrencySymbol"],["impl Type<Postgres> for DatumHash"],["impl Type<Postgres> for Ed25519PubKeyHash"],["impl Type<Postgres> for OutputDatum"],["impl Type<Postgres> for PlutusData"],["impl Type<Postgres> for ScriptHash"],["impl Type<Postgres> for Slot"],["impl Type<Postgres> for StakingCredential"],["impl Type<Postgres> for TokenName"],["impl Type<Postgres> for TransactionHash"],["impl Type<Postgres> for TransactionInput"],["impl Type<Postgres> for TransactionOutput"],["impl Type<Postgres> for TxInInfo"],["impl Type<Postgres> for Value"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/trait.impl/sqlx_postgres/types/array/trait.PgHasArrayType.js b/artifacts/tx-indexer/trait.impl/sqlx_postgres/types/array/trait.PgHasArrayType.js new file mode 100644 index 0000000..2f6e69f --- /dev/null +++ b/artifacts/tx-indexer/trait.impl/sqlx_postgres/types/array/trait.PgHasArrayType.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"tx_indexer":[["impl PgHasArrayType for Address"],["impl PgHasArrayType for AssetQuantity"],["impl PgHasArrayType for ChainPointer"],["impl PgHasArrayType for Credential"],["impl PgHasArrayType for OutputDatum"],["impl PgHasArrayType for StakingCredential"],["impl PgHasArrayType for TransactionInput"],["impl PgHasArrayType for TransactionOutput"],["impl PgHasArrayType for TxInInfo"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/all.html b/artifacts/tx-indexer/tx_indexer/all.html new file mode 100644 index 0000000..85f3430 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/all.html @@ -0,0 +1,2 @@ +List of all items in this crate +
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/aux/index.html b/artifacts/tx-indexer/tx_indexer/aux/index.html new file mode 100644 index 0000000..c54d9cb --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/aux/index.html @@ -0,0 +1,2 @@ +tx_indexer::aux - Rust +
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/aux/sidebar-items.js b/artifacts/tx-indexer/tx_indexer/aux/sidebar-items.js new file mode 100644 index 0000000..cb37f5e --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/aux/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["ParseCurrencySymbol"]}; \ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/aux/struct.ParseCurrencySymbol.html b/artifacts/tx-indexer/tx_indexer/aux/struct.ParseCurrencySymbol.html new file mode 100644 index 0000000..01bb32b --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/aux/struct.ParseCurrencySymbol.html @@ -0,0 +1,38 @@ +ParseCurrencySymbol in tx_indexer::aux - Rust +
pub struct ParseCurrencySymbol(pub CurrencySymbol);

Tuple Fields§

§0: CurrencySymbol

Trait Implementations§

source§

impl Clone for ParseCurrencySymbol

source§

fn clone(&self) -> ParseCurrencySymbol

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 ParseCurrencySymbol

source§

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

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

impl FromStr for ParseCurrencySymbol

§

type Err = &'static str

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/config/deprecation_usage/fn.n2c_config.html b/artifacts/tx-indexer/tx_indexer/config/deprecation_usage/fn.n2c_config.html new file mode 100644 index 0000000..cca8029 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/config/deprecation_usage/fn.n2c_config.html @@ -0,0 +1,7 @@ +n2c_config in tx_indexer::config::deprecation_usage - Rust +
pub fn n2c_config(
+    addr: AddressArg,
+    magic: MagicArg,
+    since_slot: Option<(u64, String)>,
+    safe_block_depth: usize
+) -> Config
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/config/deprecation_usage/fn.n2n_config.html b/artifacts/tx-indexer/tx_indexer/config/deprecation_usage/fn.n2n_config.html new file mode 100644 index 0000000..61681a8 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/config/deprecation_usage/fn.n2n_config.html @@ -0,0 +1,7 @@ +n2n_config in tx_indexer::config::deprecation_usage - Rust +
pub fn n2n_config(
+    addr: AddressArg,
+    magic: MagicArg,
+    since_slot: Option<(u64, String)>,
+    safe_block_depth: usize
+) -> Config
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/config/deprecation_usage/index.html b/artifacts/tx-indexer/tx_indexer/config/deprecation_usage/index.html new file mode 100644 index 0000000..35e3cd4 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/config/deprecation_usage/index.html @@ -0,0 +1,2 @@ +tx_indexer::config::deprecation_usage - Rust +
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/config/deprecation_usage/sidebar-items.js b/artifacts/tx-indexer/tx_indexer/config/deprecation_usage/sidebar-items.js new file mode 100644 index 0000000..0ec8b8e --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/config/deprecation_usage/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"fn":["n2c_config","n2n_config"]}; \ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/config/enum.NetworkConfig.html b/artifacts/tx-indexer/tx_indexer/config/enum.NetworkConfig.html new file mode 100644 index 0000000..925a5f6 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/config/enum.NetworkConfig.html @@ -0,0 +1,44 @@ +NetworkConfig in tx_indexer::config - Rust +
pub enum NetworkConfig {
+    ConfigPath {
+        node_config_path: String,
+        magic: u64,
+    },
+    WellKnown(NetworkName),
+}

Variants§

§

ConfigPath

Fields

§node_config_path: String
§magic: u64
§

WellKnown(NetworkName)

Implementations§

source§

impl NetworkConfig

source

pub fn to_magic_arg(&self) -> MagicArg

source

pub fn to_chain_info(&self) -> Result<ChainWellKnownInfo, Error>

Trait Implementations§

source§

impl Clone for NetworkConfig

source§

fn clone(&self) -> NetworkConfig

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 NetworkConfig

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/config/enum.NetworkName.html b/artifacts/tx-indexer/tx_indexer/config/enum.NetworkName.html new file mode 100644 index 0000000..be0143f --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/config/enum.NetworkName.html @@ -0,0 +1,46 @@ +NetworkName in tx_indexer::config - Rust +
pub enum NetworkName {
+    PREPROD,
+    PREVIEW,
+    MAINNET,
+}
Expand description

Typed network magic restricted to specific networks fully supported by Oura.

+

Variants§

§

PREPROD

§

PREVIEW

§

MAINNET

Trait Implementations§

source§

impl Clone for NetworkName

source§

fn clone(&self) -> NetworkName

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 NetworkName

source§

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

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

impl Display for NetworkName

source§

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

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

impl FromStr for NetworkName

§

type Err = NetworkNameParseErr

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<NetworkName, Self::Err>

Parses a string s to return a value of this type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
§

impl<T> FromStr for T
where + T: FromStr, + <T as FromStr>::Err: Error + Send + Sync + 'static,

§

type Error = <T as FromStr>::Err

§

fn from_str(s: &str) -> Result<T, <T as FromStr>::Error>

§

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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

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

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/config/enum.NodeAddress.html b/artifacts/tx-indexer/tx_indexer/config/enum.NodeAddress.html new file mode 100644 index 0000000..5cd60ec --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/config/enum.NodeAddress.html @@ -0,0 +1,43 @@ +NodeAddress in tx_indexer::config - Rust +
pub enum NodeAddress {
+    UnixSocket(String),
+    TcpAddress(String, u16),
+}
Expand description

Simple description on how to connect to a local or remote node. +Used to build Oura source config.

+

Variants§

§

UnixSocket(String)

Path to Unix node.socket

+
§

TcpAddress(String, u16)

Hostname and port number for TCP connection to remote node

+

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. 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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/config/index.html b/artifacts/tx-indexer/tx_indexer/config/index.html new file mode 100644 index 0000000..8abd01b --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/config/index.html @@ -0,0 +1,3 @@ +tx_indexer::config - Rust +

Module tx_indexer::config

source ·

Re-exports§

Modules§

Structs§

Enums§

  • Typed network magic restricted to specific networks fully supported by Oura.
  • Simple description on how to connect to a local or remote node. +Used to build Oura source config.
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/config/sidebar-items.js b/artifacts/tx-indexer/tx_indexer/config/sidebar-items.js new file mode 100644 index 0000000..f3e404d --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/config/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"enum":["NetworkConfig","NetworkName","NodeAddress"],"mod":["deprecation_usage"],"struct":["NetworkNameParseErr","TxIndexerConfig"]}; \ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/config/struct.NetworkNameParseErr.html b/artifacts/tx-indexer/tx_indexer/config/struct.NetworkNameParseErr.html new file mode 100644 index 0000000..2f4877a --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/config/struct.NetworkNameParseErr.html @@ -0,0 +1,45 @@ +NetworkNameParseErr in tx_indexer::config - Rust +
pub struct NetworkNameParseErr;

Trait Implementations§

source§

impl Clone for NetworkNameParseErr

source§

fn clone(&self) -> NetworkNameParseErr

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 NetworkNameParseErr

source§

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

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

impl Display for NetworkNameParseErr

source§

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

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

impl Error for NetworkNameParseErr

1.30.0 · source§

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

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

fn description(&self) -> &str

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

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

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
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 PartialEq for NetworkNameParseErr

source§

fn eq(&self, other: &NetworkNameParseErr) -> 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 Eq for NetworkNameParseErr

source§

impl StructuralPartialEq for NetworkNameParseErr

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

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

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/config/struct.TxIndexerConfig.html b/artifacts/tx-indexer/tx_indexer/config/struct.TxIndexerConfig.html new file mode 100644 index 0000000..8afdb14 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/config/struct.TxIndexerConfig.html @@ -0,0 +1,64 @@ +TxIndexerConfig in tx_indexer::config - Rust +
pub struct TxIndexerConfig<H: EventHandler> {
+    pub handler: H,
+    pub node_address: NodeAddress,
+    pub network: NetworkConfig,
+    pub since_slot: Option<(u64, String)>,
+    pub safe_block_depth: usize,
+    pub event_filter: Filter,
+    pub retry_policy: RetryPolicy,
+}

Fields§

§handler: H§node_address: NodeAddress§network: NetworkConfig§since_slot: Option<(u64, String)>

Slot number and hash as hex string (optional). +If not provided, sync will begin from the tip of the chain.

+
§safe_block_depth: usize

Minimum depth a block has to be from the tip for it to be considered “confirmed” +See: https://oura.txpipe.io/v1/advanced/rollback_buffer

+
§event_filter: Filter§retry_policy: RetryPolicy

Retry policy - how much to retry for each event callback failure +This only takes effect on ErrorPolicy for a particular error is Retry. +Once retries are exhausted, the handler will error (same treatment as ErrorPolicy::Exit)

+

Implementations§

source§

impl<H: EventHandler> TxIndexerConfig<H>

source

pub fn new( + handler: H, + node_address: NodeAddress, + network: NetworkConfig, + since_slot: Option<(u64, String)>, + safe_block_depth: usize, + event_filter: Filter, + retry_policy: RetryPolicy +) -> Self

Auto Trait Implementations§

§

impl<H> Freeze for TxIndexerConfig<H>
where + H: Freeze,

§

impl<H> RefUnwindSafe for TxIndexerConfig<H>
where + H: RefUnwindSafe,

§

impl<H> Send for TxIndexerConfig<H>

§

impl<H> Sync for TxIndexerConfig<H>
where + H: Sync,

§

impl<H> Unpin for TxIndexerConfig<H>
where + H: Unpin,

§

impl<H> UnwindSafe for TxIndexerConfig<H>
where + H: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. 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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/index.html b/artifacts/tx-indexer/tx_indexer/database/index.html new file mode 100644 index 0000000..63440f9 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/index.html @@ -0,0 +1,2 @@ +tx_indexer::database - Rust +
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/enum.DBTypeConversionError.html b/artifacts/tx-indexer/tx_indexer/database/plutus/enum.DBTypeConversionError.html new file mode 100644 index 0000000..25d8a4c --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/enum.DBTypeConversionError.html @@ -0,0 +1,41 @@ +DBTypeConversionError in tx_indexer::database::plutus - Rust +
pub enum DBTypeConversionError {
+    InvariantBroken(String),
+    BigIntConversion(TryFromBigIntError<BigInt>),
+    PlutusDataEncodingError(PlutusDataEncodingError),
+}

Variants§

§

InvariantBroken(String)

§

BigIntConversion(TryFromBigIntError<BigInt>)

§

PlutusDataEncodingError(PlutusDataEncodingError)

Trait Implementations§

source§

impl Debug for DBTypeConversionError

source§

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

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

impl Display for DBTypeConversionError

source§

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

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

impl Error for DBTypeConversionError

source§

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

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

fn description(&self) -> &str

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

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

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
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 From<PlutusDataEncodingError> for DBTypeConversionError

source§

fn from(source: PlutusDataEncodingError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. 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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

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

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/enum.PlutusDataEncodingError.html b/artifacts/tx-indexer/tx_indexer/database/plutus/enum.PlutusDataEncodingError.html new file mode 100644 index 0000000..3c4d0c7 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/enum.PlutusDataEncodingError.html @@ -0,0 +1,42 @@ +PlutusDataEncodingError in tx_indexer::database::plutus - Rust +
pub enum PlutusDataEncodingError {
+    CSLConversionError(JsError),
+    TryFromPLAError(TryFromPLAError),
+    TryFromCSLError(TryFromCSLError),
+}
Expand description

PlutusData

+

Variants§

§

CSLConversionError(JsError)

§

TryFromPLAError(TryFromPLAError)

§

TryFromCSLError(TryFromCSLError)

Trait Implementations§

source§

impl Debug for PlutusDataEncodingError

source§

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

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

impl Display for PlutusDataEncodingError

source§

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

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

impl Error for PlutusDataEncodingError

source§

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

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

fn description(&self) -> &str

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

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

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
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 From<JsError> for PlutusDataEncodingError

source§

fn from(source: JsError) -> Self

Converts to this type from the input type.
source§

impl From<PlutusDataEncodingError> for DBTypeConversionError

source§

fn from(source: PlutusDataEncodingError) -> Self

Converts to this type from the input type.
source§

impl From<TryFromCSLError> for PlutusDataEncodingError

source§

fn from(source: TryFromCSLError) -> Self

Converts to this type from the input type.
source§

impl From<TryFromPLAError> for PlutusDataEncodingError

source§

fn from(source: TryFromPLAError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. 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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

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

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/index.html b/artifacts/tx-indexer/tx_indexer/database/plutus/index.html new file mode 100644 index 0000000..7292422 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/index.html @@ -0,0 +1,2 @@ +tx_indexer::database::plutus - Rust +

Module tx_indexer::database::plutus

source ·

Structs§

Enums§

\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/sidebar-items.js b/artifacts/tx-indexer/tx_indexer/database/plutus/sidebar-items.js new file mode 100644 index 0000000..164ce92 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"enum":["DBTypeConversionError","PlutusDataEncodingError"],"struct":["Address","AssetQuantity","ChainPointer","Credential","CurrencySymbol","DatumHash","Ed25519PubKeyHash","OutputDatum","PlutusData","ScriptHash","Slot","StakingCredential","TokenName","TransactionHash","TransactionInput","TransactionOutput","TxInInfo","Value"]}; \ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/struct.Address.html b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.Address.html new file mode 100644 index 0000000..2fa773d --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.Address.html @@ -0,0 +1,54 @@ +Address in tx_indexer::database::plutus - Rust +
pub struct Address { /* private fields */ }
Expand description

Address

+

Trait Implementations§

source§

impl Clone for Address

source§

fn clone(&self) -> Address

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 Address

source§

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

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

impl<'r> Decode<'r, Postgres> for Address

source§

fn decode( + value: PgValueRef<'r> +) -> Result<Self, Box<dyn Error + Send + Sync + 'static>>

Decode a new value of this type using a raw value from the database.
source§

impl<'q> Encode<'_, Postgres> for Address

source§

fn encode_by_ref( + &self, + buf: &mut PgArgumentBuffer +) -> Result<IsNull, BoxDynError>

Writes the value of self into buf without moving self. Read more
source§

fn size_hint(&self) -> usize

§

fn encode( + self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, Box<dyn Error + Send + Sync>>
where + Self: Sized,

Writes the value of self into buf in the expected format for the database.
§

fn produces(&self) -> Option<<DB as Database>::TypeInfo>

source§

impl PartialEq for Address

source§

fn eq(&self, other: &Address) -> 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 PgHasArrayType for Address

source§

fn array_type_info() -> PgTypeInfo

§

fn array_compatible(ty: &PgTypeInfo) -> bool

source§

impl TryFrom<Address> for Address

§

type Error = DBTypeConversionError

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

fn try_from(item: Address) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<Address> for Address

§

type Error = DBTypeConversionError

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

fn try_from(item: Address) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Type<Postgres> for Address

source§

fn type_info() -> PgTypeInfo

Returns the canonical SQL type for this Rust type. Read more
§

fn compatible(ty: &<DB as Database>::TypeInfo) -> bool

Determines if this Rust type is compatible with the given SQL type. Read more
source§

impl Eq for Address

source§

impl StructuralPartialEq for Address

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/struct.AssetQuantity.html b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.AssetQuantity.html new file mode 100644 index 0000000..fce0a15 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.AssetQuantity.html @@ -0,0 +1,56 @@ +AssetQuantity in tx_indexer::database::plutus - Rust +
pub struct AssetQuantity { /* private fields */ }
Expand description

AssetQuantity

+

Trait Implementations§

source§

impl Clone for AssetQuantity

source§

fn clone(&self) -> AssetQuantity

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 AssetQuantity

source§

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

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

impl<'r> Decode<'r, Postgres> for AssetQuantity

source§

fn decode( + value: PgValueRef<'r> +) -> Result<Self, Box<dyn Error + Send + Sync + 'static>>

Decode a new value of this type using a raw value from the database.
source§

impl<'q> Encode<'_, Postgres> for AssetQuantity

source§

fn encode_by_ref( + &self, + buf: &mut PgArgumentBuffer +) -> Result<IsNull, BoxDynError>

Writes the value of self into buf without moving self. Read more
source§

fn size_hint(&self) -> usize

§

fn encode( + self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, Box<dyn Error + Send + Sync>>
where + Self: Sized,

Writes the value of self into buf in the expected format for the database.
§

fn produces(&self) -> Option<<DB as Database>::TypeInfo>

source§

impl From<AssetQuantity> for (CurrencySymbol, TokenName, BigInt)

source§

fn from(item: AssetQuantity) -> Self

Converts to this type from the input type.
source§

impl PartialEq for AssetQuantity

source§

fn eq(&self, other: &AssetQuantity) -> 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 PgHasArrayType for AssetQuantity

source§

fn array_type_info() -> PgTypeInfo

§

fn array_compatible(ty: &PgTypeInfo) -> bool

source§

impl TryFrom<(CurrencySymbol, TokenName, BigInt)> for AssetQuantity

§

type Error = DBTypeConversionError

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

fn try_from( + item: (CurrencySymbol, TokenName, BigInt) +) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Type<Postgres> for AssetQuantity

source§

fn type_info() -> PgTypeInfo

Returns the canonical SQL type for this Rust type. Read more
§

fn compatible(ty: &<DB as Database>::TypeInfo) -> bool

Determines if this Rust type is compatible with the given SQL type. Read more
source§

impl Eq for AssetQuantity

source§

impl StructuralPartialEq for AssetQuantity

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/struct.ChainPointer.html b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.ChainPointer.html new file mode 100644 index 0000000..3309b34 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.ChainPointer.html @@ -0,0 +1,54 @@ +ChainPointer in tx_indexer::database::plutus - Rust +
pub struct ChainPointer { /* private fields */ }
Expand description

ChainPointer

+

Trait Implementations§

source§

impl Clone for ChainPointer

source§

fn clone(&self) -> ChainPointer

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 ChainPointer

source§

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

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

impl<'r> Decode<'r, Postgres> for ChainPointer

source§

fn decode( + value: PgValueRef<'r> +) -> Result<Self, Box<dyn Error + Send + Sync + 'static>>

Decode a new value of this type using a raw value from the database.
source§

impl<'q> Encode<'_, Postgres> for ChainPointer

source§

fn encode_by_ref( + &self, + buf: &mut PgArgumentBuffer +) -> Result<IsNull, BoxDynError>

Writes the value of self into buf without moving self. Read more
source§

fn size_hint(&self) -> usize

§

fn encode( + self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, Box<dyn Error + Send + Sync>>
where + Self: Sized,

Writes the value of self into buf in the expected format for the database.
§

fn produces(&self) -> Option<<DB as Database>::TypeInfo>

source§

impl From<ChainPointer> for ChainPointer

source§

fn from(item: ChainPointer) -> Self

Converts to this type from the input type.
source§

impl PartialEq for ChainPointer

source§

fn eq(&self, other: &ChainPointer) -> 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 PgHasArrayType for ChainPointer

source§

fn array_type_info() -> PgTypeInfo

§

fn array_compatible(ty: &PgTypeInfo) -> bool

source§

impl TryFrom<ChainPointer> for ChainPointer

§

type Error = DBTypeConversionError

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

fn try_from(item: ChainPointer) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Type<Postgres> for ChainPointer

source§

fn type_info() -> PgTypeInfo

Returns the canonical SQL type for this Rust type. Read more
§

fn compatible(ty: &<DB as Database>::TypeInfo) -> bool

Determines if this Rust type is compatible with the given SQL type. Read more
source§

impl Eq for ChainPointer

source§

impl StructuralPartialEq for ChainPointer

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/struct.Credential.html b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.Credential.html new file mode 100644 index 0000000..bc40cc7 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.Credential.html @@ -0,0 +1,54 @@ +Credential in tx_indexer::database::plutus - Rust +
pub struct Credential { /* private fields */ }
Expand description

Credential

+

Trait Implementations§

source§

impl Clone for Credential

source§

fn clone(&self) -> Credential

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 Credential

source§

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

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

impl<'r> Decode<'r, Postgres> for Credential

source§

fn decode( + value: PgValueRef<'r> +) -> Result<Self, Box<dyn Error + Send + Sync + 'static>>

Decode a new value of this type using a raw value from the database.
source§

impl<'q> Encode<'_, Postgres> for Credential

source§

fn encode_by_ref( + &self, + buf: &mut PgArgumentBuffer +) -> Result<IsNull, BoxDynError>

Writes the value of self into buf without moving self. Read more
source§

fn size_hint(&self) -> usize

§

fn encode( + self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, Box<dyn Error + Send + Sync>>
where + Self: Sized,

Writes the value of self into buf in the expected format for the database.
§

fn produces(&self) -> Option<<DB as Database>::TypeInfo>

source§

impl From<Credential> for Credential

source§

fn from(item: Credential) -> Self

Converts to this type from the input type.
source§

impl PartialEq for Credential

source§

fn eq(&self, other: &Credential) -> 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 PgHasArrayType for Credential

source§

fn array_type_info() -> PgTypeInfo

§

fn array_compatible(ty: &PgTypeInfo) -> bool

source§

impl TryFrom<Credential> for Credential

§

type Error = DBTypeConversionError

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

fn try_from(item: Credential) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Type<Postgres> for Credential

source§

fn type_info() -> PgTypeInfo

Returns the canonical SQL type for this Rust type. Read more
§

fn compatible(ty: &<DB as Database>::TypeInfo) -> bool

Determines if this Rust type is compatible with the given SQL type. Read more
source§

impl Eq for Credential

source§

impl StructuralPartialEq for Credential

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/struct.CurrencySymbol.html b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.CurrencySymbol.html new file mode 100644 index 0000000..9a138e8 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.CurrencySymbol.html @@ -0,0 +1,56 @@ +CurrencySymbol in tx_indexer::database::plutus - Rust +
pub struct CurrencySymbol(pub Vec<u8>);
Expand description

CurrencySymbol

+

Tuple Fields§

§0: Vec<u8>

Trait Implementations§

source§

impl Clone for CurrencySymbol

source§

fn clone(&self) -> CurrencySymbol

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 CurrencySymbol

source§

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

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

impl<'r, DB: Database> Decode<'r, DB> for CurrencySymbol
where + Vec<u8>: Decode<'r, DB>,

source§

fn decode( + value: <DB as Database>::ValueRef<'r> +) -> Result<Self, Box<dyn Error + Send + Sync + 'static>>

Decode a new value of this type using a raw value from the database.
source§

impl<'q, DB: Database> Encode<'q, DB> for CurrencySymbol
where + Vec<u8>: Encode<'q, DB>,

source§

fn encode_by_ref( + &self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, BoxDynError>

Writes the value of self into buf without moving self. Read more
source§

fn produces(&self) -> Option<DB::TypeInfo>

source§

fn size_hint(&self) -> usize

§

fn encode( + self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, Box<dyn Error + Send + Sync>>
where + Self: Sized,

Writes the value of self into buf in the expected format for the database.
source§

impl From<CurrencySymbol> for CurrencySymbol

source§

fn from(item: CurrencySymbol) -> Self

Converts to this type from the input type.
source§

impl From<CurrencySymbol> for CurrencySymbol

source§

fn from(item: CurrencySymbol) -> Self

Converts to this type from the input type.
source§

impl PartialEq for CurrencySymbol

source§

fn eq(&self, other: &CurrencySymbol) -> 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 Type<Postgres> for CurrencySymbol

source§

fn type_info() -> PgTypeInfo

Returns the canonical SQL type for this Rust type. Read more
§

fn compatible(ty: &<DB as Database>::TypeInfo) -> bool

Determines if this Rust type is compatible with the given SQL type. Read more
source§

impl Eq for CurrencySymbol

source§

impl StructuralPartialEq for CurrencySymbol

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/struct.DatumHash.html b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.DatumHash.html new file mode 100644 index 0000000..7a717e1 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.DatumHash.html @@ -0,0 +1,56 @@ +DatumHash in tx_indexer::database::plutus - Rust +
pub struct DatumHash(pub Vec<u8>);
Expand description

DatumHash

+

Tuple Fields§

§0: Vec<u8>

Trait Implementations§

source§

impl Clone for DatumHash

source§

fn clone(&self) -> DatumHash

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 DatumHash

source§

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

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

impl<'r, DB: Database> Decode<'r, DB> for DatumHash
where + Vec<u8>: Decode<'r, DB>,

source§

fn decode( + value: <DB as Database>::ValueRef<'r> +) -> Result<Self, Box<dyn Error + Send + Sync + 'static>>

Decode a new value of this type using a raw value from the database.
source§

impl<'q, DB: Database> Encode<'q, DB> for DatumHash
where + Vec<u8>: Encode<'q, DB>,

source§

fn encode_by_ref( + &self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, BoxDynError>

Writes the value of self into buf without moving self. Read more
source§

fn produces(&self) -> Option<DB::TypeInfo>

source§

fn size_hint(&self) -> usize

§

fn encode( + self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, Box<dyn Error + Send + Sync>>
where + Self: Sized,

Writes the value of self into buf in the expected format for the database.
source§

impl From<DatumHash> for DatumHash

source§

fn from(item: DatumHash) -> Self

Converts to this type from the input type.
source§

impl From<DatumHash> for DatumHash

source§

fn from(item: DatumHash) -> Self

Converts to this type from the input type.
source§

impl PartialEq for DatumHash

source§

fn eq(&self, other: &DatumHash) -> 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 Type<Postgres> for DatumHash

source§

fn type_info() -> PgTypeInfo

Returns the canonical SQL type for this Rust type. Read more
§

fn compatible(ty: &<DB as Database>::TypeInfo) -> bool

Determines if this Rust type is compatible with the given SQL type. Read more
source§

impl Eq for DatumHash

source§

impl StructuralPartialEq for DatumHash

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/struct.Ed25519PubKeyHash.html b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.Ed25519PubKeyHash.html new file mode 100644 index 0000000..dbd15a4 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.Ed25519PubKeyHash.html @@ -0,0 +1,56 @@ +Ed25519PubKeyHash in tx_indexer::database::plutus - Rust +
pub struct Ed25519PubKeyHash(pub Vec<u8>);
Expand description

Ed25519PubKeyHash

+

Tuple Fields§

§0: Vec<u8>

Trait Implementations§

source§

impl Clone for Ed25519PubKeyHash

source§

fn clone(&self) -> Ed25519PubKeyHash

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 Ed25519PubKeyHash

source§

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

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

impl<'r, DB: Database> Decode<'r, DB> for Ed25519PubKeyHash
where + Vec<u8>: Decode<'r, DB>,

source§

fn decode( + value: <DB as Database>::ValueRef<'r> +) -> Result<Self, Box<dyn Error + Send + Sync + 'static>>

Decode a new value of this type using a raw value from the database.
source§

impl<'q, DB: Database> Encode<'q, DB> for Ed25519PubKeyHash
where + Vec<u8>: Encode<'q, DB>,

source§

fn encode_by_ref( + &self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, BoxDynError>

Writes the value of self into buf without moving self. Read more
source§

fn produces(&self) -> Option<DB::TypeInfo>

source§

fn size_hint(&self) -> usize

§

fn encode( + self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, Box<dyn Error + Send + Sync>>
where + Self: Sized,

Writes the value of self into buf in the expected format for the database.
source§

impl From<Ed25519PubKeyHash> for Ed25519PubKeyHash

source§

fn from(item: Ed25519PubKeyHash) -> Self

Converts to this type from the input type.
source§

impl From<Ed25519PubKeyHash> for Ed25519PubKeyHash

source§

fn from(item: Ed25519PubKeyHash) -> Self

Converts to this type from the input type.
source§

impl PartialEq for Ed25519PubKeyHash

source§

fn eq(&self, other: &Ed25519PubKeyHash) -> 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 Type<Postgres> for Ed25519PubKeyHash

source§

fn type_info() -> PgTypeInfo

Returns the canonical SQL type for this Rust type. Read more
§

fn compatible(ty: &<DB as Database>::TypeInfo) -> bool

Determines if this Rust type is compatible with the given SQL type. Read more
source§

impl Eq for Ed25519PubKeyHash

source§

impl StructuralPartialEq for Ed25519PubKeyHash

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/struct.OutputDatum.html b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.OutputDatum.html new file mode 100644 index 0000000..837cbc3 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.OutputDatum.html @@ -0,0 +1,54 @@ +OutputDatum in tx_indexer::database::plutus - Rust +
pub struct OutputDatum { /* private fields */ }
Expand description

OutputDatum

+

Trait Implementations§

source§

impl Clone for OutputDatum

source§

fn clone(&self) -> OutputDatum

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 OutputDatum

source§

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

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

impl<'r> Decode<'r, Postgres> for OutputDatum

source§

fn decode( + value: PgValueRef<'r> +) -> Result<Self, Box<dyn Error + Send + Sync + 'static>>

Decode a new value of this type using a raw value from the database.
source§

impl<'q> Encode<'_, Postgres> for OutputDatum

source§

fn encode_by_ref( + &self, + buf: &mut PgArgumentBuffer +) -> Result<IsNull, BoxDynError>

Writes the value of self into buf without moving self. Read more
source§

fn size_hint(&self) -> usize

§

fn encode( + self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, Box<dyn Error + Send + Sync>>
where + Self: Sized,

Writes the value of self into buf in the expected format for the database.
§

fn produces(&self) -> Option<<DB as Database>::TypeInfo>

source§

impl PartialEq for OutputDatum

source§

fn eq(&self, other: &OutputDatum) -> 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 PgHasArrayType for OutputDatum

source§

fn array_type_info() -> PgTypeInfo

§

fn array_compatible(ty: &PgTypeInfo) -> bool

source§

impl TryFrom<OutputDatum> for OutputDatum

§

type Error = DBTypeConversionError

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

fn try_from(item: OutputDatum) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<OutputDatum> for OutputDatum

§

type Error = DBTypeConversionError

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

fn try_from(item: OutputDatum) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Type<Postgres> for OutputDatum

source§

fn type_info() -> PgTypeInfo

Returns the canonical SQL type for this Rust type. Read more
§

fn compatible(ty: &<DB as Database>::TypeInfo) -> bool

Determines if this Rust type is compatible with the given SQL type. Read more
source§

impl Eq for OutputDatum

source§

impl StructuralPartialEq for OutputDatum

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/struct.PlutusData.html b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.PlutusData.html new file mode 100644 index 0000000..b125b3e --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.PlutusData.html @@ -0,0 +1,55 @@ +PlutusData in tx_indexer::database::plutus - Rust +
pub struct PlutusData(pub Value);

Tuple Fields§

§0: Value

Trait Implementations§

source§

impl Clone for PlutusData

source§

fn clone(&self) -> PlutusData

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 PlutusData

source§

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

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

impl<'r, DB: Database> Decode<'r, DB> for PlutusData
where + Value: Decode<'r, DB>,

source§

fn decode( + value: <DB as Database>::ValueRef<'r> +) -> Result<Self, Box<dyn Error + Send + Sync + 'static>>

Decode a new value of this type using a raw value from the database.
source§

impl<'q, DB: Database> Encode<'q, DB> for PlutusData
where + Value: Encode<'q, DB>,

source§

fn encode_by_ref( + &self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, BoxDynError>

Writes the value of self into buf without moving self. Read more
source§

fn produces(&self) -> Option<DB::TypeInfo>

source§

fn size_hint(&self) -> usize

§

fn encode( + self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, Box<dyn Error + Send + Sync>>
where + Self: Sized,

Writes the value of self into buf in the expected format for the database.
source§

impl PartialEq for PlutusData

source§

fn eq(&self, other: &PlutusData) -> 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 TryFrom<PlutusData> for PlutusData

§

type Error = DBTypeConversionError

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

fn try_from(item: PlutusData) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<PlutusData> for PlutusData

§

type Error = DBTypeConversionError

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

fn try_from(item: PlutusData) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Type<Postgres> for PlutusData

source§

fn type_info() -> PgTypeInfo

Returns the canonical SQL type for this Rust type. Read more
§

fn compatible(ty: &<DB as Database>::TypeInfo) -> bool

Determines if this Rust type is compatible with the given SQL type. Read more
source§

impl Eq for PlutusData

source§

impl StructuralPartialEq for PlutusData

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/struct.ScriptHash.html b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.ScriptHash.html new file mode 100644 index 0000000..c7df719 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.ScriptHash.html @@ -0,0 +1,56 @@ +ScriptHash in tx_indexer::database::plutus - Rust +
pub struct ScriptHash(pub Vec<u8>);
Expand description

ScriptHash

+

Tuple Fields§

§0: Vec<u8>

Trait Implementations§

source§

impl Clone for ScriptHash

source§

fn clone(&self) -> ScriptHash

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 ScriptHash

source§

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

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

impl<'r, DB: Database> Decode<'r, DB> for ScriptHash
where + Vec<u8>: Decode<'r, DB>,

source§

fn decode( + value: <DB as Database>::ValueRef<'r> +) -> Result<Self, Box<dyn Error + Send + Sync + 'static>>

Decode a new value of this type using a raw value from the database.
source§

impl<'q, DB: Database> Encode<'q, DB> for ScriptHash
where + Vec<u8>: Encode<'q, DB>,

source§

fn encode_by_ref( + &self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, BoxDynError>

Writes the value of self into buf without moving self. Read more
source§

fn produces(&self) -> Option<DB::TypeInfo>

source§

fn size_hint(&self) -> usize

§

fn encode( + self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, Box<dyn Error + Send + Sync>>
where + Self: Sized,

Writes the value of self into buf in the expected format for the database.
source§

impl From<ScriptHash> for ScriptHash

source§

fn from(item: ScriptHash) -> Self

Converts to this type from the input type.
source§

impl From<ScriptHash> for ScriptHash

source§

fn from(item: ScriptHash) -> Self

Converts to this type from the input type.
source§

impl PartialEq for ScriptHash

source§

fn eq(&self, other: &ScriptHash) -> 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 Type<Postgres> for ScriptHash

source§

fn type_info() -> PgTypeInfo

Returns the canonical SQL type for this Rust type. Read more
§

fn compatible(ty: &<DB as Database>::TypeInfo) -> bool

Determines if this Rust type is compatible with the given SQL type. Read more
source§

impl Eq for ScriptHash

source§

impl StructuralPartialEq for ScriptHash

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/struct.Slot.html b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.Slot.html new file mode 100644 index 0000000..73e3bfd --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.Slot.html @@ -0,0 +1,63 @@ +Slot in tx_indexer::database::plutus - Rust +
pub struct Slot(pub i64);
Expand description

Slot

+

Tuple Fields§

§0: i64

Trait Implementations§

source§

impl Clone for Slot

source§

fn clone(&self) -> Slot

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 Slot

source§

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

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

impl<'r, DB: Database> Decode<'r, DB> for Slot
where + i64: Decode<'r, DB>,

source§

fn decode( + value: <DB as Database>::ValueRef<'r> +) -> Result<Self, Box<dyn Error + Send + Sync + 'static>>

Decode a new value of this type using a raw value from the database.
source§

impl<'q, DB: Database> Encode<'q, DB> for Slot
where + i64: Encode<'q, DB>,

source§

fn encode_by_ref( + &self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, BoxDynError>

Writes the value of self into buf without moving self. Read more
source§

fn produces(&self) -> Option<DB::TypeInfo>

source§

fn size_hint(&self) -> usize

§

fn encode( + self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, Box<dyn Error + Send + Sync>>
where + Self: Sized,

Writes the value of self into buf in the expected format for the database.
source§

impl From<&Slot> for u64

source§

fn from(item: &Slot) -> Self

Converts to this type from the input type.
source§

impl From<u64> for Slot

source§

fn from(item: u64) -> Self

Converts to this type from the input type.
source§

impl Ord for Slot

source§

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

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

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

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

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

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

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

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

impl PartialEq for Slot

source§

fn eq(&self, other: &Slot) -> 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 PartialOrd for Slot

source§

fn partial_cmp(&self, other: &Slot) -> 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 Type<Postgres> for Slot

source§

fn type_info() -> PgTypeInfo

Returns the canonical SQL type for this Rust type. Read more
§

fn compatible(ty: &<DB as Database>::TypeInfo) -> bool

Determines if this Rust type is compatible with the given SQL type. Read more
source§

impl Eq for Slot

source§

impl StructuralPartialEq for Slot

Auto Trait Implementations§

§

impl Freeze for Slot

§

impl RefUnwindSafe for Slot

§

impl Send for Slot

§

impl Sync for Slot

§

impl Unpin for Slot

§

impl UnwindSafe for Slot

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
§

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

§

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

Compare self to key and return their ordering.
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/struct.StakingCredential.html b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.StakingCredential.html new file mode 100644 index 0000000..4b2a32f --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.StakingCredential.html @@ -0,0 +1,54 @@ +StakingCredential in tx_indexer::database::plutus - Rust +
pub struct StakingCredential { /* private fields */ }
Expand description

StakingCredential

+

Trait Implementations§

source§

impl Clone for StakingCredential

source§

fn clone(&self) -> StakingCredential

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 StakingCredential

source§

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

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

impl<'r> Decode<'r, Postgres> for StakingCredential

source§

fn decode( + value: PgValueRef<'r> +) -> Result<Self, Box<dyn Error + Send + Sync + 'static>>

Decode a new value of this type using a raw value from the database.
source§

impl<'q> Encode<'_, Postgres> for StakingCredential

source§

fn encode_by_ref( + &self, + buf: &mut PgArgumentBuffer +) -> Result<IsNull, BoxDynError>

Writes the value of self into buf without moving self. Read more
source§

fn size_hint(&self) -> usize

§

fn encode( + self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, Box<dyn Error + Send + Sync>>
where + Self: Sized,

Writes the value of self into buf in the expected format for the database.
§

fn produces(&self) -> Option<<DB as Database>::TypeInfo>

source§

impl PartialEq for StakingCredential

source§

fn eq(&self, other: &StakingCredential) -> 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 PgHasArrayType for StakingCredential

source§

fn array_type_info() -> PgTypeInfo

§

fn array_compatible(ty: &PgTypeInfo) -> bool

source§

impl TryFrom<StakingCredential> for StakingCredential

§

type Error = DBTypeConversionError

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

fn try_from(item: StakingCredential) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<StakingCredential> for StakingCredential

§

type Error = DBTypeConversionError

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

fn try_from(item: StakingCredential) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Type<Postgres> for StakingCredential

source§

fn type_info() -> PgTypeInfo

Returns the canonical SQL type for this Rust type. Read more
§

fn compatible(ty: &<DB as Database>::TypeInfo) -> bool

Determines if this Rust type is compatible with the given SQL type. Read more
source§

impl Eq for StakingCredential

source§

impl StructuralPartialEq for StakingCredential

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/struct.TokenName.html b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.TokenName.html new file mode 100644 index 0000000..18e6f46 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.TokenName.html @@ -0,0 +1,56 @@ +TokenName in tx_indexer::database::plutus - Rust +
pub struct TokenName(pub Vec<u8>);
Expand description

TokenName

+

Tuple Fields§

§0: Vec<u8>

Trait Implementations§

source§

impl Clone for TokenName

source§

fn clone(&self) -> TokenName

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 TokenName

source§

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

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

impl<'r, DB: Database> Decode<'r, DB> for TokenName
where + Vec<u8>: Decode<'r, DB>,

source§

fn decode( + value: <DB as Database>::ValueRef<'r> +) -> Result<Self, Box<dyn Error + Send + Sync + 'static>>

Decode a new value of this type using a raw value from the database.
source§

impl<'q, DB: Database> Encode<'q, DB> for TokenName
where + Vec<u8>: Encode<'q, DB>,

source§

fn encode_by_ref( + &self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, BoxDynError>

Writes the value of self into buf without moving self. Read more
source§

fn produces(&self) -> Option<DB::TypeInfo>

source§

fn size_hint(&self) -> usize

§

fn encode( + self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, Box<dyn Error + Send + Sync>>
where + Self: Sized,

Writes the value of self into buf in the expected format for the database.
source§

impl From<TokenName> for TokenName

source§

fn from(item: TokenName) -> Self

Converts to this type from the input type.
source§

impl From<TokenName> for TokenName

source§

fn from(item: TokenName) -> Self

Converts to this type from the input type.
source§

impl PartialEq for TokenName

source§

fn eq(&self, other: &TokenName) -> 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 Type<Postgres> for TokenName

source§

fn type_info() -> PgTypeInfo

Returns the canonical SQL type for this Rust type. Read more
§

fn compatible(ty: &<DB as Database>::TypeInfo) -> bool

Determines if this Rust type is compatible with the given SQL type. Read more
source§

impl Eq for TokenName

source§

impl StructuralPartialEq for TokenName

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/struct.TransactionHash.html b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.TransactionHash.html new file mode 100644 index 0000000..e57a229 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.TransactionHash.html @@ -0,0 +1,56 @@ +TransactionHash in tx_indexer::database::plutus - Rust +
pub struct TransactionHash(pub Vec<u8>);
Expand description

TransactionHash

+

Tuple Fields§

§0: Vec<u8>

Trait Implementations§

source§

impl Clone for TransactionHash

source§

fn clone(&self) -> TransactionHash

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 TransactionHash

source§

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

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

impl<'r, DB: Database> Decode<'r, DB> for TransactionHash
where + Vec<u8>: Decode<'r, DB>,

source§

fn decode( + value: <DB as Database>::ValueRef<'r> +) -> Result<Self, Box<dyn Error + Send + Sync + 'static>>

Decode a new value of this type using a raw value from the database.
source§

impl<'q, DB: Database> Encode<'q, DB> for TransactionHash
where + Vec<u8>: Encode<'q, DB>,

source§

fn encode_by_ref( + &self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, BoxDynError>

Writes the value of self into buf without moving self. Read more
source§

fn produces(&self) -> Option<DB::TypeInfo>

source§

fn size_hint(&self) -> usize

§

fn encode( + self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, Box<dyn Error + Send + Sync>>
where + Self: Sized,

Writes the value of self into buf in the expected format for the database.
source§

impl From<TransactionHash> for TransactionHash

source§

fn from(item: TransactionHash) -> Self

Converts to this type from the input type.
source§

impl From<TransactionHash> for TransactionHash

source§

fn from(item: TransactionHash) -> Self

Converts to this type from the input type.
source§

impl PartialEq for TransactionHash

source§

fn eq(&self, other: &TransactionHash) -> 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 Type<Postgres> for TransactionHash

source§

fn type_info() -> PgTypeInfo

Returns the canonical SQL type for this Rust type. Read more
§

fn compatible(ty: &<DB as Database>::TypeInfo) -> bool

Determines if this Rust type is compatible with the given SQL type. Read more
source§

impl Eq for TransactionHash

source§

impl StructuralPartialEq for TransactionHash

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/struct.TransactionInput.html b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.TransactionInput.html new file mode 100644 index 0000000..ce50b1b --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.TransactionInput.html @@ -0,0 +1,54 @@ +TransactionInput in tx_indexer::database::plutus - Rust +
pub struct TransactionInput { /* private fields */ }
Expand description

TransactionInput

+

Trait Implementations§

source§

impl Clone for TransactionInput

source§

fn clone(&self) -> TransactionInput

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 TransactionInput

source§

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

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

impl<'r> Decode<'r, Postgres> for TransactionInput

source§

fn decode( + value: PgValueRef<'r> +) -> Result<Self, Box<dyn Error + Send + Sync + 'static>>

Decode a new value of this type using a raw value from the database.
source§

impl<'q> Encode<'_, Postgres> for TransactionInput

source§

fn encode_by_ref( + &self, + buf: &mut PgArgumentBuffer +) -> Result<IsNull, BoxDynError>

Writes the value of self into buf without moving self. Read more
source§

fn size_hint(&self) -> usize

§

fn encode( + self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, Box<dyn Error + Send + Sync>>
where + Self: Sized,

Writes the value of self into buf in the expected format for the database.
§

fn produces(&self) -> Option<<DB as Database>::TypeInfo>

source§

impl From<TransactionInput> for TransactionInput

source§

fn from(item: TransactionInput) -> Self

Converts to this type from the input type.
source§

impl PartialEq for TransactionInput

source§

fn eq(&self, other: &TransactionInput) -> 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 PgHasArrayType for TransactionInput

source§

fn array_type_info() -> PgTypeInfo

§

fn array_compatible(ty: &PgTypeInfo) -> bool

source§

impl TryFrom<TransactionInput> for TransactionInput

§

type Error = DBTypeConversionError

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

fn try_from(item: TransactionInput) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Type<Postgres> for TransactionInput

source§

fn type_info() -> PgTypeInfo

Returns the canonical SQL type for this Rust type. Read more
§

fn compatible(ty: &<DB as Database>::TypeInfo) -> bool

Determines if this Rust type is compatible with the given SQL type. Read more
source§

impl Eq for TransactionInput

source§

impl StructuralPartialEq for TransactionInput

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/struct.TransactionOutput.html b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.TransactionOutput.html new file mode 100644 index 0000000..0311477 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.TransactionOutput.html @@ -0,0 +1,54 @@ +TransactionOutput in tx_indexer::database::plutus - Rust +
pub struct TransactionOutput { /* private fields */ }
Expand description

TransactionOutput

+

Trait Implementations§

source§

impl Clone for TransactionOutput

source§

fn clone(&self) -> TransactionOutput

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 TransactionOutput

source§

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

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

impl<'r> Decode<'r, Postgres> for TransactionOutput

source§

fn decode( + value: PgValueRef<'r> +) -> Result<Self, Box<dyn Error + Send + Sync + 'static>>

Decode a new value of this type using a raw value from the database.
source§

impl<'q> Encode<'_, Postgres> for TransactionOutput

source§

fn encode_by_ref( + &self, + buf: &mut PgArgumentBuffer +) -> Result<IsNull, BoxDynError>

Writes the value of self into buf without moving self. Read more
source§

fn size_hint(&self) -> usize

§

fn encode( + self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, Box<dyn Error + Send + Sync>>
where + Self: Sized,

Writes the value of self into buf in the expected format for the database.
§

fn produces(&self) -> Option<<DB as Database>::TypeInfo>

source§

impl PartialEq for TransactionOutput

source§

fn eq(&self, other: &TransactionOutput) -> 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 PgHasArrayType for TransactionOutput

source§

fn array_type_info() -> PgTypeInfo

§

fn array_compatible(ty: &PgTypeInfo) -> bool

source§

impl TryFrom<TransactionOutput> for TransactionOutput

§

type Error = DBTypeConversionError

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

fn try_from(item: TransactionOutput) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<TransactionOutput> for TransactionOutput

§

type Error = DBTypeConversionError

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

fn try_from(item: TransactionOutput) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Type<Postgres> for TransactionOutput

source§

fn type_info() -> PgTypeInfo

Returns the canonical SQL type for this Rust type. Read more
§

fn compatible(ty: &<DB as Database>::TypeInfo) -> bool

Determines if this Rust type is compatible with the given SQL type. Read more
source§

impl Eq for TransactionOutput

source§

impl StructuralPartialEq for TransactionOutput

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/struct.TxInInfo.html b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.TxInInfo.html new file mode 100644 index 0000000..aee712d --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.TxInInfo.html @@ -0,0 +1,54 @@ +TxInInfo in tx_indexer::database::plutus - Rust +
pub struct TxInInfo { /* private fields */ }
Expand description

TxInInfo

+

Trait Implementations§

source§

impl Clone for TxInInfo

source§

fn clone(&self) -> TxInInfo

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 TxInInfo

source§

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

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

impl<'r> Decode<'r, Postgres> for TxInInfo

source§

fn decode( + value: PgValueRef<'r> +) -> Result<Self, Box<dyn Error + Send + Sync + 'static>>

Decode a new value of this type using a raw value from the database.
source§

impl<'q> Encode<'_, Postgres> for TxInInfo

source§

fn encode_by_ref( + &self, + buf: &mut PgArgumentBuffer +) -> Result<IsNull, BoxDynError>

Writes the value of self into buf without moving self. Read more
source§

fn size_hint(&self) -> usize

§

fn encode( + self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, Box<dyn Error + Send + Sync>>
where + Self: Sized,

Writes the value of self into buf in the expected format for the database.
§

fn produces(&self) -> Option<<DB as Database>::TypeInfo>

source§

impl PartialEq for TxInInfo

source§

fn eq(&self, other: &TxInInfo) -> 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 PgHasArrayType for TxInInfo

source§

fn array_type_info() -> PgTypeInfo

§

fn array_compatible(ty: &PgTypeInfo) -> bool

source§

impl TryFrom<TxInInfo> for TxInInfo

§

type Error = DBTypeConversionError

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

fn try_from(item: TxInInfo) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<TxInInfo> for TxInInfo

§

type Error = DBTypeConversionError

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

fn try_from(item: TxInInfo) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Type<Postgres> for TxInInfo

source§

fn type_info() -> PgTypeInfo

Returns the canonical SQL type for this Rust type. Read more
§

fn compatible(ty: &<DB as Database>::TypeInfo) -> bool

Determines if this Rust type is compatible with the given SQL type. Read more
source§

impl Eq for TxInInfo

source§

impl StructuralPartialEq for TxInInfo

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/plutus/struct.Value.html b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.Value.html new file mode 100644 index 0000000..f4a48ee --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/plutus/struct.Value.html @@ -0,0 +1,56 @@ +Value in tx_indexer::database::plutus - Rust +
pub struct Value(pub Vec<AssetQuantity>);
Expand description

Value

+

Tuple Fields§

§0: Vec<AssetQuantity>

Trait Implementations§

source§

impl Clone for Value

source§

fn clone(&self) -> Value

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 Value

source§

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

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

impl<'r, DB: Database> Decode<'r, DB> for Value
where + Vec<AssetQuantity>: Decode<'r, DB>,

source§

fn decode( + value: <DB as Database>::ValueRef<'r> +) -> Result<Self, Box<dyn Error + Send + Sync + 'static>>

Decode a new value of this type using a raw value from the database.
source§

impl<'q, DB: Database> Encode<'q, DB> for Value
where + Vec<AssetQuantity>: Encode<'q, DB>,

source§

fn encode_by_ref( + &self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, BoxDynError>

Writes the value of self into buf without moving self. Read more
source§

fn produces(&self) -> Option<DB::TypeInfo>

source§

fn size_hint(&self) -> usize

§

fn encode( + self, + buf: &mut <DB as Database>::ArgumentBuffer<'q> +) -> Result<IsNull, Box<dyn Error + Send + Sync>>
where + Self: Sized,

Writes the value of self into buf in the expected format for the database.
source§

impl From<Value> for Value

source§

fn from(item: Value) -> Self

Converts to this type from the input type.
source§

impl PartialEq for Value

source§

fn eq(&self, other: &Value) -> 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 TryFrom<Value> for Value

§

type Error = DBTypeConversionError

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

fn try_from(item: Value) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Type<Postgres> for Value

source§

fn type_info() -> PgTypeInfo

Returns the canonical SQL type for this Rust type. Read more
§

fn compatible(ty: &<DB as Database>::TypeInfo) -> bool

Determines if this Rust type is compatible with the given SQL type. Read more
source§

impl Eq for Value

source§

impl StructuralPartialEq for Value

Auto Trait Implementations§

§

impl Freeze for Value

§

impl RefUnwindSafe for Value

§

impl Send for Value

§

impl Sync for Value

§

impl Unpin for Value

§

impl UnwindSafe for Value

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/sidebar-items.js b/artifacts/tx-indexer/tx_indexer/database/sidebar-items.js new file mode 100644 index 0000000..6cbde48 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"mod":["plutus","sync_progress"]}; \ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/sync_progress/index.html b/artifacts/tx-indexer/tx_indexer/database/sync_progress/index.html new file mode 100644 index 0000000..2595c82 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/sync_progress/index.html @@ -0,0 +1,2 @@ +tx_indexer::database::sync_progress - Rust +
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/sync_progress/sidebar-items.js b/artifacts/tx-indexer/tx_indexer/database/sync_progress/sidebar-items.js new file mode 100644 index 0000000..1baa221 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/sync_progress/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["SyncProgressTable"]}; \ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/database/sync_progress/struct.SyncProgressTable.html b/artifacts/tx-indexer/tx_indexer/database/sync_progress/struct.SyncProgressTable.html new file mode 100644 index 0000000..9cc4d33 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/database/sync_progress/struct.SyncProgressTable.html @@ -0,0 +1,59 @@ +SyncProgressTable in tx_indexer::database::sync_progress - Rust +
pub struct SyncProgressTable {
+    pub block_slot: i64,
+    pub block_hash: Vec<u8>,
+}

Fields§

§block_slot: i64§block_hash: Vec<u8>

Implementations§

source§

impl SyncProgressTable

source

pub fn new( + block_slot: u64, + block_hash: String +) -> Result<SyncProgressTable, Error>

source

pub async fn get(conn: &mut PgConnection) -> Result<Option<Self>, Error>

Obtain the sync status of the DB

+
source

pub async fn store(&self, conn: &mut PgConnection) -> Result<(), Error>

Save a new entity to the database.

+
source

pub async fn get_or( + conn: &mut PgConnection, + since_slot: Option<u64>, + since_block: Option<String> +) -> Result<Option<(u64, String)>, Error>

Trait Implementations§

source§

impl Clone for SyncProgressTable

source§

fn clone(&self) -> SyncProgressTable

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 SyncProgressTable

source§

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

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

impl<'a, R: Row> FromRow<'a, R> for SyncProgressTable
where + &'a str: ColumnIndex<R>, + i64: Decode<'a, R::Database> + Type<R::Database>, + Vec<u8>: Decode<'a, R::Database> + Type<R::Database>,

source§

fn from_row(__row: &'a R) -> Result<Self>

source§

impl PartialEq for SyncProgressTable

source§

fn eq(&self, other: &SyncProgressTable) -> 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 Eq for SyncProgressTable

source§

impl StructuralPartialEq for SyncProgressTable

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/error/enum.ErrorPolicy.html b/artifacts/tx-indexer/tx_indexer/error/enum.ErrorPolicy.html new file mode 100644 index 0000000..989771d --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/error/enum.ErrorPolicy.html @@ -0,0 +1,49 @@ +ErrorPolicy in tx_indexer::error - Rust +
pub enum ErrorPolicy<E> {
+    Retry,
+    Skip,
+    Exit,
+    Call(fn(_: E)),
+}
Expand description

Specify what the indexer event handler should do for specific errors. See: ErrorPolicyProvider. +The idea is that an error type, E, implements ErrorPolicyProvider. +Based on the different variants of E, different ErrorPolicy can be returned, which influences +the behavior of the event handler.

+

Variants§

§

Retry

Indicate the callback operation should be retried. Also see: RetryPolicy.

+
§

Skip

Indicate that the error should be ignored, go to next event.

+
§

Exit

Indicate that the event handler should exit with error.

+
§

Call(fn(_: E))

Indicate that the event handler should call given error handling function with the error.

+

Auto Trait Implementations§

§

impl<E> Freeze for ErrorPolicy<E>

§

impl<E> RefUnwindSafe for ErrorPolicy<E>

§

impl<E> Send for ErrorPolicy<E>

§

impl<E> Sync for ErrorPolicy<E>

§

impl<E> Unpin for ErrorPolicy<E>

§

impl<E> UnwindSafe for ErrorPolicy<E>

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. 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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/error/index.html b/artifacts/tx-indexer/tx_indexer/error/index.html new file mode 100644 index 0000000..f742d69 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/error/index.html @@ -0,0 +1,6 @@ +tx_indexer::error - Rust +

Module tx_indexer::error

source ·

Enums§

  • Specify what the indexer event handler should do for specific errors. See: ErrorPolicyProvider. +The idea is that an error type, E, implements ErrorPolicyProvider. +Based on the different variants of E, different ErrorPolicy can be returned, which influences +the behavior of the event handler.

Traits§

  • Trait that can be implemented for custom error types. +Different variants in said error types can then be given different ErrorPolicy assignments.
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/error/sidebar-items.js b/artifacts/tx-indexer/tx_indexer/error/sidebar-items.js new file mode 100644 index 0000000..7586088 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/error/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"enum":["ErrorPolicy"],"trait":["ErrorPolicyProvider"]}; \ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/error/trait.ErrorPolicyProvider.html b/artifacts/tx-indexer/tx_indexer/error/trait.ErrorPolicyProvider.html new file mode 100644 index 0000000..64030b5 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/error/trait.ErrorPolicyProvider.html @@ -0,0 +1,8 @@ +ErrorPolicyProvider in tx_indexer::error - Rust +
pub trait ErrorPolicyProvider
where + Self: Sized,
{ + // Required method + fn get_error_policy(&self) -> ErrorPolicy<Self>; +}
Expand description

Trait that can be implemented for custom error types. +Different variants in said error types can then be given different ErrorPolicy assignments.

+

Required Methods§

Object Safety§

This trait is not object safe.

Implementors§

\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/filter/index.html b/artifacts/tx-indexer/tx_indexer/filter/index.html new file mode 100644 index 0000000..f8c6e55 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/filter/index.html @@ -0,0 +1,4 @@ +tx_indexer::filter - Rust +

Module tx_indexer::filter

source ·

Structs§

  • Interesting transaction components to look for when filtering transactions +relevant to the protocol. +Set curr_symbols to empty vectors to handle any transaction event indiscriminately.
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/filter/sidebar-items.js b/artifacts/tx-indexer/tx_indexer/filter/sidebar-items.js new file mode 100644 index 0000000..94299cf --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/filter/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Filter"]}; \ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/filter/struct.Filter.html b/artifacts/tx-indexer/tx_indexer/filter/struct.Filter.html new file mode 100644 index 0000000..2220f71 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/filter/struct.Filter.html @@ -0,0 +1,41 @@ +Filter in tx_indexer::filter - Rust +

Struct tx_indexer::filter::Filter

source ·
pub struct Filter {
+    pub curr_symbols: Vec<CurrencySymbol>,
+}
Expand description

Interesting transaction components to look for when filtering transactions +relevant to the protocol. +Set curr_symbols to empty vectors to handle any transaction event indiscriminately.

+

Fields§

§curr_symbols: Vec<CurrencySymbol>

Implementations§

source§

impl Filter

source

pub fn to_selection_config(self) -> Config

Auto Trait Implementations§

§

impl Freeze for Filter

§

impl RefUnwindSafe for Filter

§

impl Send for Filter

§

impl Sync for Filter

§

impl Unpin for Filter

§

impl UnwindSafe for Filter

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. 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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/handler/callback/enum.Events.html b/artifacts/tx-indexer/tx_indexer/handler/callback/enum.Events.html new file mode 100644 index 0000000..4c51b90 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/handler/callback/enum.Events.html @@ -0,0 +1,39 @@ +Events in tx_indexer::handler::callback - Rust +
pub enum Events {
+    EventHandlerFailure,
+}

Variants§

§

EventHandlerFailure

Trait Implementations§

source§

impl Display for Events

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Events

§

impl RefUnwindSafe for Events

§

impl Send for Events

§

impl Sync for Events

§

impl Unpin for Events

§

impl UnwindSafe for Events

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. 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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

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

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/handler/callback/index.html b/artifacts/tx-indexer/tx_indexer/handler/callback/index.html new file mode 100644 index 0000000..3e43e71 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/handler/callback/index.html @@ -0,0 +1,2 @@ +tx_indexer::handler::callback - Rust +
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/handler/callback/sidebar-items.js b/artifacts/tx-indexer/tx_indexer/handler/callback/sidebar-items.js new file mode 100644 index 0000000..70805cf --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/handler/callback/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"enum":["Events"],"trait":["EventHandler"]}; \ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/handler/callback/trait.EventHandler.html b/artifacts/tx-indexer/tx_indexer/handler/callback/trait.EventHandler.html new file mode 100644 index 0000000..b2a1ff6 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/handler/callback/trait.EventHandler.html @@ -0,0 +1,14 @@ +EventHandler in tx_indexer::handler::callback - Rust +
pub trait EventHandler
where + Self: Clone + Send + 'static,
{ + type Error: Error + ErrorPolicyProvider; + + // Required method + fn handle( + &self, + event: ChainEvent + ) -> impl Future<Output = Result<(), Self::Error>>; +}

Required Associated Types§

Required Methods§

source

fn handle( + &self, + event: ChainEvent +) -> impl Future<Output = Result<(), Self::Error>>

Object Safety§

This trait is not object safe.

Implementors§

\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/handler/chain_event/enum.ChainEvent.html b/artifacts/tx-indexer/tx_indexer/handler/chain_event/enum.ChainEvent.html new file mode 100644 index 0000000..3e9dc65 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/handler/chain_event/enum.ChainEvent.html @@ -0,0 +1,58 @@ +ChainEvent in tx_indexer::handler::chain_event - Rust +
pub enum ChainEvent {
+    TransactionEvent {
+        time: ChainEventTime,
+        transaction: TransactionEventRecord,
+    },
+    RollbackEvent {
+        block_slot: u64,
+        block_hash: String,
+    },
+    SyncProgressEvent {
+        block_slot: u64,
+        block_hash: String,
+        percentage: f32,
+    },
+}
Expand description

Chain events that the indexer is configured to produce.

+

Variants§

§

TransactionEvent

A filtered transaction was confirmed

+
§

RollbackEvent

Fields

§block_slot: u64
§block_hash: String

Rollback event occurred

+
§

SyncProgressEvent

Fields

§block_slot: u64
§block_hash: String
§percentage: f32

Chain syncronisation progressed

+

Trait Implementations§

source§

impl Clone for ChainEvent

source§

fn clone(&self) -> ChainEvent

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 ChainEvent

source§

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

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

impl PartialEq for ChainEvent

source§

fn eq(&self, other: &ChainEvent) -> 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 StructuralPartialEq for ChainEvent

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/handler/chain_event/fn.parse_oura_event.html b/artifacts/tx-indexer/tx_indexer/handler/chain_event/fn.parse_oura_event.html new file mode 100644 index 0000000..74108b9 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/handler/chain_event/fn.parse_oura_event.html @@ -0,0 +1,5 @@ +parse_oura_event in tx_indexer::handler::chain_event - Rust +
pub fn parse_oura_event(
+    ev: Event,
+    progress_tracker: &mut Option<ProgressTracker>
+) -> Result<Option<ChainEvent>, OuraParseError>
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/handler/chain_event/index.html b/artifacts/tx-indexer/tx_indexer/handler/chain_event/index.html new file mode 100644 index 0000000..e7ec629 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/handler/chain_event/index.html @@ -0,0 +1,2 @@ +tx_indexer::handler::chain_event - Rust +

Structs§

Enums§

  • Chain events that the indexer is configured to produce.

Functions§

\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/handler/chain_event/sidebar-items.js b/artifacts/tx-indexer/tx_indexer/handler/chain_event/sidebar-items.js new file mode 100644 index 0000000..356eb90 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/handler/chain_event/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"enum":["ChainEvent"],"fn":["parse_oura_event"],"struct":["ChainEventTime","TransactionEventRecord"]}; \ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/handler/chain_event/struct.ChainEventTime.html b/artifacts/tx-indexer/tx_indexer/handler/chain_event/struct.ChainEventTime.html new file mode 100644 index 0000000..8fbdc5e --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/handler/chain_event/struct.ChainEventTime.html @@ -0,0 +1,49 @@ +ChainEventTime in tx_indexer::handler::chain_event - Rust +
pub struct ChainEventTime {
+    pub block_number: u64,
+    pub block_hash: String,
+    pub slot: u64,
+}
Expand description

Indication of when an event happened in the context of the chain.

+

Fields§

§block_number: u64§block_hash: String§slot: u64

Trait Implementations§

source§

impl Clone for ChainEventTime

source§

fn clone(&self) -> ChainEventTime

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 ChainEventTime

source§

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

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

impl PartialEq for ChainEventTime

source§

fn eq(&self, other: &ChainEventTime) -> 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 Eq for ChainEventTime

source§

impl StructuralPartialEq for ChainEventTime

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/handler/chain_event/struct.TransactionEventRecord.html b/artifacts/tx-indexer/tx_indexer/handler/chain_event/struct.TransactionEventRecord.html new file mode 100644 index 0000000..43cdcd0 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/handler/chain_event/struct.TransactionEventRecord.html @@ -0,0 +1,53 @@ +TransactionEventRecord in tx_indexer::handler::chain_event - Rust +
pub struct TransactionEventRecord {
+    pub hash: TransactionHash,
+    pub fee: u64,
+    pub size: u32,
+    pub inputs: Vec<TransactionInput>,
+    pub outputs: Vec<TxInInfo>,
+    pub mint: Value,
+    pub plutus_data: HashMap<DatumHash, Datum>,
+}
Expand description

Details on an transaction event (excluding unnecessary information).

+

Fields§

§hash: TransactionHash§fee: u64§size: u32§inputs: Vec<TransactionInput>§outputs: Vec<TxInInfo>§mint: Value§plutus_data: HashMap<DatumHash, Datum>

Trait Implementations§

source§

impl Clone for TransactionEventRecord

source§

fn clone(&self) -> TransactionEventRecord

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 TransactionEventRecord

source§

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

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

impl PartialEq for TransactionEventRecord

source§

fn eq(&self, other: &TransactionEventRecord) -> 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 Eq for TransactionEventRecord

source§

impl StructuralPartialEq for TransactionEventRecord

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

§

impl<Q, K> Equivalent<K> for Q
where + 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 Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

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

Compare self to key and return true if they are equal.
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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/handler/index.html b/artifacts/tx-indexer/tx_indexer/handler/index.html new file mode 100644 index 0000000..e38f6ae --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/handler/index.html @@ -0,0 +1,2 @@ +tx_indexer::handler - Rust +
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/handler/retry/index.html b/artifacts/tx-indexer/tx_indexer/handler/retry/index.html new file mode 100644 index 0000000..cd44a9c --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/handler/retry/index.html @@ -0,0 +1,4 @@ +tx_indexer::handler::retry - Rust +

Module tx_indexer::handler::retry

source ·

Structs§

  • Influence retrying behavior. +i.e How many times and how often a failed operation should be retried. +Given we are dealing with ErrorPolicy::Retry
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/handler/retry/sidebar-items.js b/artifacts/tx-indexer/tx_indexer/handler/retry/sidebar-items.js new file mode 100644 index 0000000..210f4cf --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/handler/retry/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["RetryPolicy"]}; \ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/handler/retry/struct.RetryPolicy.html b/artifacts/tx-indexer/tx_indexer/handler/retry/struct.RetryPolicy.html new file mode 100644 index 0000000..d54ad2a --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/handler/retry/struct.RetryPolicy.html @@ -0,0 +1,46 @@ +RetryPolicy in tx_indexer::handler::retry - Rust +
pub struct RetryPolicy {
+    pub max_retries: u32,
+    pub backoff_unit: Duration,
+    pub backoff_factor: u32,
+    pub max_backoff: Duration,
+}
Expand description

Influence retrying behavior. +i.e How many times and how often a failed operation should be retried. +Given we are dealing with ErrorPolicy::Retry

+

Fields§

§max_retries: u32§backoff_unit: Duration§backoff_factor: u32§max_backoff: Duration

Trait Implementations§

source§

impl Clone for RetryPolicy

source§

fn clone(&self) -> RetryPolicy

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 RetryPolicy

source§

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

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

impl Default for RetryPolicy

source§

fn default() -> Self

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

impl Copy for RetryPolicy

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/handler/sidebar-items.js b/artifacts/tx-indexer/tx_indexer/handler/sidebar-items.js new file mode 100644 index 0000000..524af30 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/handler/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"mod":["callback","chain_event","retry"]}; \ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/index.html b/artifacts/tx-indexer/tx_indexer/index.html new file mode 100644 index 0000000..ec2f2c8 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/index.html @@ -0,0 +1,3 @@ +tx_indexer - Rust +
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/indexer/struct.TxIndexer.html b/artifacts/tx-indexer/tx_indexer/indexer/struct.TxIndexer.html new file mode 100644 index 0000000..2258b08 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/indexer/struct.TxIndexer.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../tx_indexer/struct.TxIndexer.html...

+ + + \ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/progress_tracker/index.html b/artifacts/tx-indexer/tx_indexer/progress_tracker/index.html new file mode 100644 index 0000000..9cd8b5f --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/progress_tracker/index.html @@ -0,0 +1,3 @@ +tx_indexer::progress_tracker - Rust +

Structs§

  • A progress tracker holds information about the chain info required to calculate +POSIX time from slots
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/progress_tracker/sidebar-items.js b/artifacts/tx-indexer/tx_indexer/progress_tracker/sidebar-items.js new file mode 100644 index 0000000..7e1e2fb --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/progress_tracker/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["ProgressTracker"]}; \ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/progress_tracker/struct.ProgressTracker.html b/artifacts/tx-indexer/tx_indexer/progress_tracker/struct.ProgressTracker.html new file mode 100644 index 0000000..425b48a --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/progress_tracker/struct.ProgressTracker.html @@ -0,0 +1,48 @@ +ProgressTracker in tx_indexer::progress_tracker - Rust +
pub struct ProgressTracker {
+    pub system_start: DateTime<Utc>,
+    pub era_summaries: Vec<EraSummary>,
+    pub since_slot: u64,
+    pub sync_progress: Arc<AtomicUsize>,
+}
Expand description

A progress tracker holds information about the chain info required to calculate +POSIX time from slots

+

Fields§

§system_start: DateTime<Utc>§era_summaries: Vec<EraSummary>§since_slot: u64§sync_progress: Arc<AtomicUsize>

Implementations§

source§

impl ProgressTracker

source

pub fn new( + since_slot: u64, + chain_info: &ChainWellKnownInfo +) -> Result<Self, Error>

source

pub fn get_percentage(&self, slot: u64) -> Result<f32, OuraParseError>

Trait Implementations§

source§

impl Clone for ProgressTracker

source§

fn clone(&self) -> ProgressTracker

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 ProgressTracker

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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

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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where + 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, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/sidebar-items.js b/artifacts/tx-indexer/tx_indexer/sidebar-items.js new file mode 100644 index 0000000..2eee585 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"mod":["aux","config","database","error","filter","handler","progress_tracker"],"struct":["TxIndexer"]}; \ No newline at end of file diff --git a/artifacts/tx-indexer/tx_indexer/struct.TxIndexer.html b/artifacts/tx-indexer/tx_indexer/struct.TxIndexer.html new file mode 100644 index 0000000..594c997 --- /dev/null +++ b/artifacts/tx-indexer/tx_indexer/struct.TxIndexer.html @@ -0,0 +1,42 @@ +TxIndexer in tx_indexer - Rust +

Struct tx_indexer::TxIndexer

source ·
pub struct TxIndexer {
+    pub source_handle: JoinHandle<()>,
+    pub filter_handle: JoinHandle<()>,
+    pub sink_handle: JoinHandle<()>,
+}

Fields§

§source_handle: JoinHandle<()>§filter_handle: JoinHandle<()>§sink_handle: JoinHandle<()>

Implementations§

source§

impl TxIndexer

source

pub async fn run<H: EventHandler>( + conf: TxIndexerConfig<H> +) -> Result<TxIndexer, Error>

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. 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, U> Into<U> for T
where + 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.

+
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> +if into_left is true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> +if into_left(&self) returns true. +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T, U> ToPLA<U> for T
where + U: FromCSL<T>,

§

fn to_pla(&self) -> U

source§

impl<T, U> TryFrom<U> for T
where + 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 T
where + 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<T, U> TryToCSL<U> for T
where + U: TryFromPLA<T>,

§

type ExtraInfo<'a> = <U as TryFromPLA<T>>::ExtraInfo<'a>

§

fn try_to_csl_with<'a>( + &self, + extra_info: <T as TryToCSL<U>>::ExtraInfo<'a> +) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToCSLWithDef<U> for T
where + U: TryFromPLAWithDef<T> + TryFromPLA<T>,

§

fn try_to_csl(&self) -> Result<U, TryFromPLAError>

§

impl<T, U> TryToPLA<U> for T
where + U: TryFromCSL<T>,

§

fn try_to_pla(&self) -> Result<U, TryFromCSLError>

§

impl<T, U> TryToPLAWith<U> for T
where + U: TryFromCSLWith<T>,

§

type ExtraInfo<'a> = <U as TryFromCSLWith<T>>::ExtraInfo<'a>

§

fn try_to_pla_with<'a>( + &self, + extra_info: <T as TryToPLAWith<U>>::ExtraInfo<'a> +) -> Result<U, TryFromCSLError>

§

impl<V, T> VZip<V> for T
where + 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
\ No newline at end of file