1#![cfg_attr(not(feature = "std"), no_std)]
6#![forbid(unsafe_code)]
7#![warn(
8 clippy::all,
10 clippy::pedantic,
11 clippy::cargo,
12 rust_2018_idioms,
13 future_incompatible,
14 unused,
15
16 unused_lifetimes,
18 unused_qualifications,
19 unused_results,
20
21 anonymous_parameters,
23 deprecated_in_future,
24 elided_lifetimes_in_paths,
25 explicit_outlives_requirements,
26 keyword_idents,
27 macro_use_extern_crate,
28 missing_doc_code_examples,
30 private_doc_tests,
31 single_use_lifetimes,
32 trivial_casts,
33 trivial_numeric_casts,
34 unreachable_pub,
35 unsafe_code,
36 variant_size_differences
37)]
38#![cfg_attr(feature = "std", warn(missing_debug_implementations,))]
39#![allow(clippy::multiple_crate_versions)]
41#![allow(clippy::must_use_candidate)]
43#![allow(clippy::inline_always)]
47#![allow(clippy::missing_errors_doc)]
49#![cfg_attr(all(feature = "asm", not(feature = "stable")), feature(asm))]
54#![cfg_attr(all(feature = "asm", not(feature = "stable")), feature(llvm_asm))]
56
57mod additive;
58pub(crate) mod algorithms;
59mod arch;
60mod binary;
61mod conversion;
62mod division;
63mod encoding;
64mod functions;
65mod multiplicative;
66#[cfg(feature = "rand")]
67mod rand;
68mod traits;
69mod u256;
70mod u256_traits;
71
72pub use u256::U256;
76
77pub use algorithms::{adc, div_2_1, mac, msb, sbb, to_montgomery_const};
78pub use num_traits::{Bounded, Inv, MulAdd, MulAddAssign, One, Pow, Zero};
80pub use traits::{
81 AddFullInline, AddInline, Binary, BinaryAssignRef, BinaryOps, BinaryRing, DivRem, InvMod,
82 Montgomery, MontgomeryParameters, MulFullInline, MulInline, NegInline, SquareFullInline,
83 SquareInline, SubFromFullInline, SubFromInline, SubFullInline, SubInline, GCD,
84};
85
86#[cfg(not(feature = "std"))]
87extern crate no_std_compat as std;