1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
//! A simple, thread-safe, and async-friendly IRC client library. pub mod conn; pub mod data; pub mod server; pub mod transport; pub mod prelude { //! A client-side IRC prelude, re-exporting the complete high-level IRC client API. //! //! # Structure //! A connection to an IRC server is represented by an `IrcServer` which is configured using a //! `Config` struct that defines data such as which server to connect to, on what port, and //! using what nickname. The `Server` trait provides an API for actually interacting with the //! server once a connection has been established. This API intentionally offers only a single //! method to send `Commands` because it makes it easy to see the whole set of possible //! interactions with a server. The `ServerExt` trait addresses this deficiency by defining a //! number of methods that provide a more clear and succinct interface for sending various //! common IRC commands to the server. //! //! The various `proto` types capture details of the IRC protocol that are used throughout the //! client API. `Message`, `Command`, and `Response` are used to send and receive messages along //! the connection, and are naturally at the heart of communication in the IRC protocol. //! `Capability` and `NegotiationVersion` are used to determine (with the server) what IRCv3 //! functionality to enable for the connection. Certain parts of the API offer suggestions for //! extensions that will improve the user experience, and give examples of how to enable them //! using `Capability`. `Mode`, `ChannelMode`, and `UserMode` are used in a high-level API for //! dealing with IRC channel and user modes. They appear in methods for sending mode commands, //! as well as in the parsed form of received mode commands. pub use client::data::Config; pub use client::server::{EachIncomingExt, IrcServer, Server}; pub use client::server::utils::ServerExt; pub use proto::{Capability, ChannelExt, Command, Message, NegotiationVersion, Response}; pub use proto::{ChannelMode, Mode, UserMode}; pub use futures::{Future, Stream}; }