Run with mutagen on travis.
[rust-lightning] / lightning / src / lib.rs
1 #![crate_name = "lightning"]
2
3 //! Rust-Lightning, not Rusty's Lightning!
4 //!
5 //! A full-featured but also flexible lightning implementation, in library form. This allows the
6 //! user (you) to decide how they wish to use it instead of being a fully self-contained daemon.
7 //! This means there is no built-in threading/execution environment and it's up to the user to
8 //! figure out how best to make networking happen/timers fire/things get written to disk/keys get
9 //! generated/etc. This makes it a good candidate for tight integration into an existing wallet
10 //! instead of having a rather-separate lightning appendage to a wallet.
11
12 #![cfg_attr(not(feature = "fuzztarget"), deny(missing_docs))]
13 #![forbid(unsafe_code)]
14
15 // In general, rust is absolutely horrid at supporting users doing things like,
16 // for example, compiling Rust code for real environments. Disable useless lints
17 // that don't do anything but annoy us and cant actually ever be resolved.
18 #![allow(bare_trait_objects)]
19 #![allow(ellipsis_inclusive_range_patterns)]
20
21 extern crate bitcoin;
22 #[cfg(test)] extern crate rand;
23 #[cfg(test)] extern crate hex;
24 #[cfg(all(test, feature = "mutation_testing"))] extern crate mutagen;
25
26 #[macro_use]
27 pub mod util;
28 pub mod chain;
29 pub mod ln;
30 pub mod routing;
31
32 #[cfg(all(
33                 any(feature = "mutation_testing", feature = "fuzztarget"),
34                 not(any(test, debug_assertions))
35                 ))]
36 const ERR: () = "You should never be building with feature = mutation_testing or feature = fuzztarget! They are used to compile with broken code for testing only!";