internal_prelude.rs
1 //! Imports used internally within this crate 2 //! 3 //! This file contains most of the imports we wish to use, throughout this crate. 4 //! 5 //! Every module does `use crate::internal_prelude::*;` 6 //! 7 //! Exceptions: 8 //! 9 //! * Names that are private to a module and its submodules (eg, `publish`) 10 //! are imported to the sub-modules via `use super::*`. 11 //! (Thus, the sub-module inherits the prelude from its parent.) 12 //! 13 //! * Broad names from specific contexts, that are unsuitable for wide imports. 14 //! For example, individual cell and message names from `tor-cell`, 15 //! and the types from `tor_proto::stream` other than the high-level `DataStream`. 16 17 //---------- std ---------- 18 19 pub(crate) use { 20 std::any::Any, 21 std::borrow::Cow, 22 std::cmp::max, 23 std::cmp::Ordering, 24 std::collections::{BinaryHeap, HashMap, HashSet, VecDeque}, 25 std::error::Error as StdError, 26 std::ffi::OsStr, 27 std::fmt::{self, Debug, Display}, 28 std::fs, 29 std::fs::{File, OpenOptions}, 30 std::future::Future, 31 std::hash::Hash, 32 std::io, 33 std::io::{BufReader, BufWriter, Read, Seek, SeekFrom, Write}, 34 std::iter, 35 std::marker::PhantomData, 36 std::panic::AssertUnwindSafe, 37 std::path::{Path, PathBuf}, 38 std::str::FromStr, 39 std::sync::{Arc, Mutex, MutexGuard}, 40 std::time::{Duration, Instant, SystemTime}, 41 }; 42 43 //---------- upstreams ---------- 44 45 pub(crate) use { 46 async_trait::async_trait, 47 derive_builder::Builder, 48 derive_deftly::{define_derive_deftly, Deftly}, 49 derive_more::{Constructor, Deref, DerefMut, From, Into}, 50 educe::Educe, 51 futures::channel::mpsc, 52 futures::future::{self, Either}, 53 futures::select_biased, 54 futures::stream::BoxStream, 55 futures::task::{SpawnError, SpawnExt as _}, 56 futures::{AsyncRead, AsyncWrite, Stream}, 57 futures::{FutureExt as _, SinkExt as _, StreamExt as _, TryStreamExt as _}, 58 itertools::{chain, Itertools as _}, 59 postage::{broadcast, watch}, 60 rand::Rng, 61 rand_core::{CryptoRng, RngCore}, 62 serde::{Deserialize, Deserializer, Serialize, Serializer}, 63 thiserror::Error, 64 tracing::{debug, error, info, trace, warn}, 65 void::{ResultVoidErrExt as _, Void}, 66 }; 67 68 //---------- tor-* crates ---------- 69 70 pub(crate) use { 71 oneshot_fused_workaround as oneshot, 72 retry_error::RetryError, 73 safelog::{sensitive, Redactable as _}, 74 tor_async_utils::mpsc_channel_no_memquota, 75 tor_async_utils::{DropNotifyWatchSender, PostageWatchSenderExt as _}, 76 tor_basic_utils::{impl_debug_hex, retry::RetryDelay, PathExt as _, RngExt as _}, 77 tor_cell::relaycell::{msg::AnyRelayMsg, RelayMsg as _}, 78 tor_circmgr::build::circparameters_from_netparameters, 79 tor_circmgr::hspool::{HsCircKind, HsCircPool}, 80 tor_config::{ConfigBuildError, Reconfigure, ReconfigureError}, 81 tor_dirclient::request::HsDescUploadRequest, 82 tor_dirclient::{send_request, Error as DirClientError, RequestFailedError}, 83 tor_error::define_asref_dyn_std_error, 84 tor_error::{bad_api_usage, internal, into_bad_api_usage, into_internal}, 85 tor_error::{debug_report, error_report, info_report, warn_report}, 86 tor_error::{Bug, ErrorKind, ErrorReport as _, HasKind}, 87 tor_hscrypto::ope::AesOpeKey, 88 tor_hscrypto::pk::{ 89 HsBlindId, HsBlindIdKey, HsBlindIdKeypair, HsClientDescEncKey, HsDescSigningKeypair, 90 HsIdKey, HsIdKeypair, HsIntroPtSessionIdKey, HsIntroPtSessionIdKeypair, HsSvcNtorKeypair, 91 }, 92 tor_hscrypto::time::TimePeriod, 93 tor_hscrypto::RevisionCounter, 94 tor_keymgr::{ 95 derive_deftly_template_KeySpecifier, KeyMgr, KeySpecifier, 96 KeySpecifierComponentViaDisplayFromStr, KeySpecifierPattern as _, KeystoreSelector, 97 {ArtiPathRange, KeySpecifierComponent}, 98 }, 99 tor_linkspec::{ 100 CircTarget, HasRelayIds as _, OwnedChanTargetBuilder, OwnedCircTarget, RelayIds, 101 }, 102 tor_llcrypto::pk::{curve25519, ed25519}, 103 tor_log_ratelim::log_ratelim, 104 tor_netdir::{HsDirParams, NetDirProvider, Relay, Timeliness}, 105 tor_netdoc::doc::hsdesc::{create_desc_sign_key_cert, HsDescBuilder}, 106 tor_netdoc::NetdocBuilder, 107 tor_persist::slug::Slug, 108 tor_persist::state_dir::{ 109 ContainsInstanceStateGuard as _, InstanceRawSubdir, LockFileGuard, StateDirectory, 110 }, 111 tor_proto::circuit::{ClientCirc, ConversationInHandler, MetaCellDisposition}, 112 tor_proto::stream::DataStream, 113 tor_rtcompat::SleepProvider, 114 tor_rtcompat::{Runtime, SleepProviderExt as _}, 115 }; 116 117 //---------- names from this crate ---------- 118 119 pub(crate) use { 120 crate::err::IptStoreError, 121 crate::err::StateExpiryError, 122 crate::ipt_lid::{InvalidIptLocalId, IptLocalId}, 123 crate::ipt_mgr::CreateIptError, 124 crate::ipt_mgr::IptManager, 125 crate::ipt_set::IptSet, 126 crate::ipt_set::IptsManagerView, 127 crate::ipt_set::IptsPublisherUploadView, 128 crate::ipt_set::IptsPublisherView, 129 crate::ipt_set::{self, PublishIptSet}, 130 crate::keys::expire_publisher_keys, 131 crate::keys::{IptKeyRole, IptKeySpecifier, IptKeySpecifierPattern}, 132 crate::publish::Publisher, 133 crate::replay::ReplayError, 134 crate::replay::ReplayLog, 135 crate::status::PublisherStatusSender, 136 crate::status::State, 137 crate::status::{IptMgrStatusSender, State as IptMgrState}, 138 crate::status::{OnionServiceStatus, OnionServiceStatusStream, StatusSender}, 139 crate::time_store, 140 crate::timeout_track::{TrackingInstantOffsetNow, TrackingNow, Update as _}, 141 crate::OnionServiceConfig, 142 crate::StartupError, 143 crate::StreamRequest, 144 crate::{ipt_establish, ShutdownStatus}, 145 crate::{ 146 keys::BlindIdKeypairSpecifierPattern, 147 rend_handshake::{self, RendCircConnector}, 148 ClientError, 149 }, 150 crate::{req::RendRequestContext, HsNickname, LinkSpecs, NtorPublicKey}, 151 crate::{ 152 BlindIdKeypairSpecifier, DescSigningKeypairSpecifier, HsIdKeypairSpecifier, 153 HsIdPublicKeySpecifier, 154 }, 155 crate::{DescUploadError, IptError}, 156 crate::{FatalError, RendRequest}, 157 ipt_establish::{IptEstablisher, IptParameters, IptStatus, IptStatusStatus, IptWantsToRetire}, 158 };