correspondent/
lib.rs

1/* SPDX-License-Identifier: (Apache-2.0 OR MIT OR Zlib) */
2/* Copyright © 2021 Violet Leonard */
3
4//! # Overview
5//!
6//! correspondent is a high-level networking library which facilitates a
7//! non-hierarchical network of peers to send messages.
8//!
9//! correspondent uses
10//! [DNS-SD](https://en.wikipedia.org/wiki/Zero-configuration_networking#DNS-based_service_discovery)
11//! to discover peers on the local network.
12//!
13//! correspondent uses [Quinn](https://github.com/quinn-rs/quinn), an
14//! implementation of the QUIC protocol, as a transport layer. These docs may
15//! assume some familiarity with Quinn's API.
16//!
17//! See `examples/chat.rs` for a simple example application.
18//!
19//! # Supported Services
20//!
21//! | Operating System | Service          |
22//! | ---------------- |:----------------:|
23//! | Windows 10       | Dnsapi.dll       |
24//! | Linux            | Avahi (via dbus) |
25
26#![warn(missing_docs)]
27#![warn(clippy::clone_on_ref_ptr)]
28#![deny(clippy::unwrap_used)]
29#![warn(clippy::default_trait_access)]
30#![warn(clippy::cast_lossless)]
31#![warn(clippy::explicit_into_iter_loop)]
32#![warn(clippy::explicit_iter_loop)]
33#![warn(clippy::implicit_clone)]
34#![warn(clippy::if_then_some_else_none)]
35#![warn(clippy::fn_params_excessive_bools)]
36#![warn(clippy::inefficient_to_string)]
37#![warn(clippy::let_unit_value)]
38#![warn(clippy::manual_ok_or)]
39#![warn(clippy::match_bool)]
40#![deny(clippy::mem_forget)]
41#![warn(clippy::mut_mut)]
42#![warn(clippy::mutex_integer)]
43#![warn(clippy::needless_borrow)]
44#![warn(clippy::needless_continue)]
45#![warn(clippy::option_option)]
46#![warn(clippy::path_buf_push_overwrite)]
47#![warn(clippy::rc_buffer)]
48#![warn(clippy::ref_option_ref)]
49#![warn(clippy::rest_pat_in_fully_bound_structs)]
50#![warn(clippy::semicolon_if_nothing_returned)]
51#![warn(clippy::trait_duplication_in_bounds)]
52#![warn(clippy::type_repetition_in_bounds)]
53#![warn(clippy::unreadable_literal)]
54#![warn(clippy::unseparated_literal_suffix)]
55#![warn(clippy::useless_let_if_seq)]
56#![warn(clippy::verbose_file_reads)]
57
58mod application;
59mod nsd;
60mod peer;
61mod socket;
62mod socket_builder;
63mod util;
64
65pub use self::{
66    application::IdentityCanonicalizer,
67    peer::{PeerId, PeerNotConnected},
68    socket::{Event, Events, Socket},
69    socket_builder::{
70        CertificateResponse, CertificateSigner, SocketBuilder,
71        SocketCertificate,
72    },
73};