#![doc(html_root_url = "https://docs.rs/serenity/*")]
#![cfg_attr(docsrs, feature(doc_cfg))]
#![deny(rust_2018_idioms)]
#![deny(broken_intra_doc_links)]
#![deny(
clippy::unwrap_used,
clippy::non_ascii_literal,
clippy::missing_errors_doc,
clippy::let_underscore_must_use
)]
#![type_length_limit = "3294819"]
#[macro_use]
extern crate serde;
#[cfg(all(feature = "tokio_compat", not(feature = "tokio")))]
extern crate tokio_compat as tokio;
#[cfg(all(feature = "reqwest_compat", not(feature = "reqwest")))]
extern crate reqwest_compat as reqwest;
#[cfg(all(feature = "async-tungstenite_compat", not(feature = "async-tungstenite")))]
extern crate async_tungstenite_compat as async_tungstenite;
#[cfg(all(feature = "bytes_compat", not(feature = "bytes")))]
extern crate bytes_compat as bytes;
#[macro_use]
mod internal;
pub mod constants;
pub mod model;
pub mod prelude;
#[cfg(feature = "builder")]
pub mod builder;
#[cfg(feature = "cache")]
pub mod cache;
#[cfg(feature = "client")]
pub mod client;
#[cfg(feature = "collector")]
#[cfg_attr(docsrs, doc(cfg(feature = "collector")))]
pub mod collector;
#[cfg(feature = "framework")]
pub mod framework;
#[cfg(feature = "gateway")]
pub mod gateway;
#[cfg(feature = "http")]
pub mod http;
#[cfg(feature = "utils")]
pub mod utils;
mod error;
#[cfg(feature = "client")]
use std::sync::Arc;
#[cfg(all(feature = "client", feature = "cache"))]
use std::time::Duration;
#[cfg(all(feature = "client", feature = "cache"))]
use crate::cache::Cache;
#[cfg(all(feature = "client", feature = "gateway"))]
pub use crate::client::Client;
pub use crate::error::{Error, Result};
#[cfg(feature = "client")]
use crate::http::Http;
#[cfg(feature = "client")]
#[derive(Clone, Default)]
#[non_exhaustive]
pub struct CacheAndHttp {
#[cfg(feature = "cache")]
pub cache: Arc<Cache>,
#[cfg(feature = "cache")]
pub update_cache_timeout: Option<Duration>,
pub http: Arc<Http>,
}
pub use async_trait::async_trait;
pub use futures;
pub use futures::future::FutureExt;
#[cfg(feature = "standard_framework")]
#[doc(hidden)]
pub use static_assertions;