#![recursion_limit = "1024"]
#![cfg_attr(
not(test),
deny(
clippy::todo,
clippy::dbg_macro,
clippy::indexing_slicing,
clippy::get_unwrap
)
)]
#![cfg_attr(
doc,
deny(rustdoc::all),
allow(
rustdoc::private_intra_doc_links,
rustdoc::private_doc_tests,
rustdoc::missing_crate_level_docs
)
)]
cfg_if::cfg_if! {
if #[cfg(feature = "rustalloc")] {
} else if #[cfg(feature = "mimalloc")] {
use crate::cli_shared::mimalloc::MiMalloc;
#[global_allocator]
static GLOBAL: MiMalloc = MiMalloc;
} else if #[cfg(feature = "jemalloc")] {
use crate::cli_shared::tikv_jemallocator::Jemalloc;
#[global_allocator]
static GLOBAL: Jemalloc = Jemalloc;
}
}
mod auth;
mod beacon;
mod blocks;
mod chain;
mod chain_sync;
mod cid_collections;
mod cli;
mod cli_shared;
mod daemon;
mod db;
mod documentation;
mod fil_cns;
mod genesis;
mod health;
mod interpreter;
mod ipld;
mod key_management;
mod libp2p;
mod libp2p_bitswap;
mod lotus_json;
mod message;
mod message_pool;
mod metrics;
mod networks;
mod rpc;
mod shim;
mod state_manager;
mod state_migration;
mod statediff;
#[cfg(any(test, doc))]
mod test_utils;
mod tool;
mod utils;
mod wallet;
#[cfg(feature = "doctest-private")]
#[doc(hidden)]
pub mod doctest_private {
pub use crate::{
blocks::{CachingBlockHeader, Ticket, TipsetKey},
cli::humantoken::{parse, TokenAmountPretty},
shim::{
address::Address, crypto::Signature, econ::TokenAmount, error::ExitCode,
randomness::Randomness, sector::RegisteredSealProof, state_tree::ActorState,
version::NetworkVersion,
},
utils::io::progress_log::WithProgress,
utils::{encoding::blake2b_256, io::read_toml},
};
}
#[cfg(feature = "benchmark-private")]
#[doc(hidden)]
pub mod benchmark_private {
pub use crate::db::car::forest;
pub use crate::utils::cid;
}
pub use auth::{verify_token, JWT_IDENTIFIER};
pub use cli::main::main as forest_main;
pub use cli_shared::cli::{Client, Config};
pub use daemon::main::main as forestd_main;
pub use key_management::{
KeyStore, KeyStoreConfig, ENCRYPTED_KEYSTORE_NAME, FOREST_KEYSTORE_PHRASE_ENV, KEYSTORE_NAME,
};
pub use tool::main::main as forest_tool_main;
pub use wallet::main::main as forest_wallet_main;
#[cfg(test)]
fn block_on<T>(f: impl std::future::Future<Output = T>) -> T {
tokio::runtime::Builder::new_multi_thread()
.enable_all()
.build()
.unwrap()
.block_on(f)
}