#![warn(rustc::all)]
#![warn(clippy::pedantic)]
#![deny(unsafe_code)]
#![deny(unsafe_op_in_unsafe_fn)]
#![deny(nonstandard_style)]
#![deny(missing_debug_implementations)]
#![deny(clippy::missing_errors_doc)]
#![deny(clippy::missing_panics_doc)]
#![deny(rustdoc::broken_intra_doc_links)]
#![allow(
clippy::doc_markdown,
reason = "serialization docs are heavy on Arrow and domain-specific type names where blanket backticks add noise"
)]
#![allow(
clippy::too_many_lines,
reason = "wide encode and decode functions mirror protocol schemas and Arrow record layouts"
)]
#![allow(
clippy::implicit_hasher,
reason = "serialization metadata uses a standardized HashMap<String, String> shape across traits and helpers"
)]
#![allow(
clippy::similar_names,
reason = "domain terms such as trade/trader and side/size are intentionally similar"
)]
#![allow(
clippy::cast_possible_truncation,
clippy::cast_possible_wrap,
clippy::cast_precision_loss,
clippy::cast_sign_loss,
clippy::cast_lossless,
reason = "wire-format and fixed-point conversions in serialization code require explicit numeric casts"
)]
#![cfg_attr(
test,
allow(
clippy::float_cmp,
reason = "serialization tests assert exact float encodings and decoded values"
)
)]
#[cfg(feature = "arrow")]
pub mod arrow;
#[cfg(feature = "arrow")]
pub use arrow::custom::ensure_custom_data_registered;
pub use nautilus_core::serialization::msgpack;
#[cfg(feature = "capnp")]
pub mod capnp;
#[cfg(feature = "sbe")]
pub mod sbe;
#[cfg(feature = "capnp")]
macro_rules! include_capnp_module {
($name:ident, $path:expr) => {
#[cfg(all(feature = "capnp", not(docsrs)))]
#[allow(
clippy::all,
clippy::missing_errors_doc,
clippy::missing_panics_doc,
warnings,
dead_code,
missing_debug_implementations
)]
pub mod $name {
include!(concat!(env!("OUT_DIR"), $path));
}
#[cfg(all(feature = "capnp", docsrs))]
#[allow(
clippy::all,
clippy::missing_errors_doc,
clippy::missing_panics_doc,
warnings,
dead_code,
missing_debug_implementations
)]
pub mod $name {
include!(concat!(
env!("CARGO_MANIFEST_DIR"),
"/generated/capnp",
$path
));
}
};
}
#[cfg(feature = "capnp")]
include_capnp_module!(base_capnp, "/common/base_capnp.rs");
#[cfg(feature = "capnp")]
include_capnp_module!(identifiers_capnp, "/common/identifiers_capnp.rs");
#[cfg(feature = "capnp")]
include_capnp_module!(types_capnp, "/common/types_capnp.rs");
#[cfg(feature = "capnp")]
include_capnp_module!(enums_capnp, "/common/enums_capnp.rs");
#[cfg(feature = "capnp")]
include_capnp_module!(trading_capnp, "/commands/trading_capnp.rs");
#[cfg(feature = "capnp")]
include_capnp_module!(data_capnp, "/commands/data_capnp.rs");
#[cfg(feature = "capnp")]
include_capnp_module!(order_capnp, "/events/order_capnp.rs");
#[cfg(feature = "capnp")]
include_capnp_module!(position_capnp, "/events/position_capnp.rs");
#[cfg(feature = "capnp")]
include_capnp_module!(account_capnp, "/events/account_capnp.rs");
#[cfg(feature = "capnp")]
include_capnp_module!(market_capnp, "/data/market_capnp.rs");
#[cfg(feature = "python")]
pub mod python;