Skip to main content

chorus/
lib.rs

1//! # chorus-rs
2//!
3//! Official Rust SDK for Chorus — open-source CPaaS with SMS, Email, and OTP.
4//!
5//! This crate re-exports [`chorus-core`] (types, traits, routing) and
6//! [`chorus-providers`] (Telnyx, Twilio, Plivo, Resend, SES, Mailgun, SMTP)
7//! so you only need one dependency.
8//!
9//! ## Quick Start
10//!
11//! ```rust,no_run
12//! use chorus::prelude::*;
13//! use std::sync::Arc;
14//!
15//! # async fn example() -> Result<(), ChorusError> {
16//! let chorus = Chorus::builder()
17//!     .default_from_sms("+1234567890".into())
18//!     .build();
19//!
20//! let msg = SmsMessage {
21//!     to: "+0987654321".into(),
22//!     body: "Hello from Chorus!".into(),
23//!     from: None,
24//! };
25//! let result = chorus.send_sms(&msg).await?;
26//! # Ok(())
27//! # }
28//! ```
29
30// Re-export all public modules from chorus-core.
31pub use chorus_core::client;
32pub use chorus_core::email;
33pub use chorus_core::error;
34pub use chorus_core::router;
35pub use chorus_core::sms;
36pub use chorus_core::template;
37pub use chorus_core::templates;
38pub use chorus_core::types;
39
40// Re-export provider implementations from chorus-providers.
41pub mod providers {
42    pub use chorus_providers::email;
43    pub use chorus_providers::sms;
44}
45
46/// Prelude module — import commonly used types with `use chorus::prelude::*`.
47pub mod prelude {
48    pub use chorus_core::client::Chorus;
49    pub use chorus_core::email::EmailSender;
50    pub use chorus_core::error::ChorusError;
51    pub use chorus_core::router::WaterfallRouter;
52    pub use chorus_core::sms::SmsSender;
53    pub use chorus_core::types::{
54        Channel, DeliveryStatus, EmailMessage, SendResult, SmsMessage, TemplateEmailMessage,
55    };
56}