//! # libthreema //! //! The one stop shop for all your Threema needs! // We have pretty strict linting rules and it would be a massive hassle having to conditionally // compile all `pub(crate)` exposed items, depending on the selected features. // // The goal is to get it right with features `uniffi`, `wasm` and `cli` enabled (and of course, all // feature variants still need to compile). // // However, it does make sense to disable this from time to time to check for actual issues. #![cfg_attr( not(all(feature = "uniffi", feature = "wasm", feature = "cli")), allow( dead_code, unfulfilled_lint_expectations, unused_crate_dependencies, unused_imports, reason = "Don't care for non full-feature builds" ) )] #![cfg_attr( test, allow( clippy::arithmetic_side_effects, clippy::borrow_interior_mutable_const, clippy::indexing_slicing, clippy::panic, clippy::struct_field_names, clippy::unchecked_time_subtraction, clippy::unreadable_literal, clippy::unwrap_used, unfulfilled_lint_expectations, unstable_features, reason = "Be less strict in tests" ) )] #![cfg_attr( test, allow(clippy::large_stack_arrays, reason = "tests do not need to be efficient") )] // Pin generic-array to version 0.14.7 as 0.14.8 was deprecated and RustCrypto needs to upgrade first. // See https://github.com/fizyk20/generic-array/issues/158 mod external_crate_false_positive_pinned_version { use generic_array as _; } // Avoids dev dependencies used only in examples to be picked up by the linter. Should no longer be // necessary once https://github.com/rust-lang/cargo/issues/1982 has been resolved. #[cfg(test)] mod external_crate_false_positives { use anyhow as _; } #[cfg(feature = "cli")] mod external_crate_false_positives_cli_feature { use clap as _; use futures_util as _; use rustls as _; use tokio as _; use tokio_tungstenite as _; } // Set up UniFFI scaffolding for UniFFI bindings #[cfg(feature = "uniffi")] uniffi::setup_scaffolding!(); /// Compiled low-level protobuf messages. #[allow( clippy::all, clippy::pedantic, clippy::restriction, dead_code, missing_docs, rustdoc::broken_intra_doc_links, rustdoc::unescaped_backticks, reason = "Code generated by prost" )] pub mod protobuf { /// Common protobuf messages. pub mod common { include!(concat!(env!("OUT_DIR"), "/common.rs")); } /// End-to-end encrypted messages. pub mod csp_e2e { include!(concat!(env!("OUT_DIR"), "/csp_e2e.rs")); } /// Device to Device Protocol messages. pub mod d2d { include!(concat!(env!("OUT_DIR"), "/d2d.rs")); } /// Device to Mediator Protocol messages. pub mod d2m { include!(concat!(env!("OUT_DIR"), "/d2m.rs")); } /// Data synchronisation messages pub mod sync { include!(concat!(env!("OUT_DIR"), "/sync.rs")); } pub use sync as d2d_sync; /// Connection Rendezvous Protocol messages. pub mod d2d_rendezvous { include!(concat!(env!("OUT_DIR"), "/rendezvous.rs")); } } pub mod bindings; #[cfg(feature = "cli")] pub mod cli; pub mod common; pub mod crypto; pub mod csp; pub mod csp_e2e; pub mod d2d_rendezvous; pub mod d2m; pub mod https; pub mod id_backup; pub mod model; pub mod remote_secret; pub mod utils;