Client

Struct Client 

Source
pub struct Client { /* private fields */ }
Expand description

Async client for GuerrillaMail temporary email service.

Implementations§

Source§

impl Client

Source

pub async fn new() -> Result<Self>

Create a new GuerrillaMail client.

Connects to GuerrillaMail and retrieves the API token and available domains.

Examples found in repository?
examples/demo.rs (line 24)
14async fn main() -> Result<(), Box<dyn std::error::Error>> {
15    println!("📧 GuerrillaMail Rust Client - Full Demo");
16    println!("{}", "=".repeat(50));
17
18    // =========================================
19    // 1. Create client (optionally with proxy)
20    // =========================================
21    println!("\n🔌 Creating client...");
22
23    // Without proxy:
24    let client = Client::new().await?;
25
26    // With proxy (uncomment to use):
27    // let client = Client::with_proxy(Some("http://127.0.0.1:8080")).await?;
28
29    println!("   ✅ Connected to GuerrillaMail API");
30
31    // =========================================
32    // 2. View available domains
33    // =========================================
34    println!("\n🌐 Available email domains:");
35    for domain in client.domains() {
36        println!("   - {}", domain);
37    }
38
39    // =========================================
40    // 3. Create temporary email address
41    // =========================================
42    println!("\n📬 Creating temporary email...");
43    let alias = format!("demo{}", rand::random::<u16>());
44    let email = client.create_email(&alias, None).await?;
45    println!("   ✅ Created: {}", email);
46
47    // =========================================
48    // 4. Poll for messages (get_messages)
49    // =========================================
50    println!("\n⏳ Waiting for messages...");
51    println!("   Send an email to: {}", email);
52    println!("   (Polling for up to 2 minutes)");
53
54    let start = std::time::Instant::now();
55    let timeout = std::time::Duration::from_secs(120);
56    let poll_interval = std::time::Duration::from_secs(5);
57
58    loop {
59        // get_messages returns basic info: id, from, subject, excerpt
60        let messages = client.get_messages(&email).await?;
61
62        if !messages.is_empty() {
63            println!("\n\n📥 Received {} message(s)!", messages.len());
64
65            for msg in &messages {
66                println!("\n{}", "-".repeat(50));
67                println!("Message ID:  {}", msg.mail_id);
68                println!("From:        {}", msg.mail_from);
69                println!("Subject:     {}", msg.mail_subject);
70                println!(
71                    "Excerpt:     {}",
72                    &msg.mail_excerpt[..msg.mail_excerpt.len().min(80)]
73                );
74                println!("Timestamp:   {}", msg.mail_timestamp);
75
76                // =========================================
77                // 5. Fetch full email content (fetch_email)
78                // =========================================
79                println!("\n📄 Fetching full email body...");
80                match client.fetch_email(&email, &msg.mail_id).await {
81                    Ok(details) => {
82                        println!("   Body length: {} characters", details.mail_body.len());
83                        println!("   Preview (first 500 chars):");
84                        println!("   {}", "-".repeat(40));
85                        let preview: String = details.mail_body.chars().take(500).collect();
86                        for line in preview.lines().take(10) {
87                            println!("   {}", line);
88                        }
89                        if details.mail_body.len() > 500 {
90                            println!("   ... (truncated)");
91                        }
92                    }
93                    Err(e) => {
94                        eprintln!("   ❌ Failed to fetch: {}", e);
95                    }
96                }
97            }
98            break;
99        }
100
101        if start.elapsed() >= timeout {
102            println!("\n\n⚠️  Timeout: No messages received");
103            break;
104        }
105
106        let remaining = (timeout - start.elapsed()).as_secs();
107        print!("\r   Checking... {} seconds remaining   ", remaining);
108        use std::io::Write;
109        std::io::stdout().flush().ok();
110
111        tokio::time::sleep(poll_interval).await;
112    }
113
114    // =========================================
115    // 6. Delete/forget email address
116    // =========================================
117    println!("\n🗑️  Cleaning up email address...");
118    match client.delete_email(&email).await {
119        Ok(true) => println!("   ✅ Email address deleted"),
120        Ok(false) => println!("   ⚠️  Deletion may have failed"),
121        Err(e) => eprintln!("   ❌ Error: {}", e),
122    }
123
124    println!("\n{}", "=".repeat(50));
125    println!("✨ Demo complete!");
126
127    Ok(())
128}
Source

pub async fn with_proxy(proxy: Option<&str>) -> Result<Self>

Create a new GuerrillaMail client with an optional proxy.

§Arguments
  • proxy - Optional proxy URL (e.g., “http://127.0.0.1:8080”)
Source

pub fn domains(&self) -> &[String]

Get the list of available email domains.

Examples found in repository?
examples/demo.rs (line 35)
14async fn main() -> Result<(), Box<dyn std::error::Error>> {
15    println!("📧 GuerrillaMail Rust Client - Full Demo");
16    println!("{}", "=".repeat(50));
17
18    // =========================================
19    // 1. Create client (optionally with proxy)
20    // =========================================
21    println!("\n🔌 Creating client...");
22
23    // Without proxy:
24    let client = Client::new().await?;
25
26    // With proxy (uncomment to use):
27    // let client = Client::with_proxy(Some("http://127.0.0.1:8080")).await?;
28
29    println!("   ✅ Connected to GuerrillaMail API");
30
31    // =========================================
32    // 2. View available domains
33    // =========================================
34    println!("\n🌐 Available email domains:");
35    for domain in client.domains() {
36        println!("   - {}", domain);
37    }
38
39    // =========================================
40    // 3. Create temporary email address
41    // =========================================
42    println!("\n📬 Creating temporary email...");
43    let alias = format!("demo{}", rand::random::<u16>());
44    let email = client.create_email(&alias, None).await?;
45    println!("   ✅ Created: {}", email);
46
47    // =========================================
48    // 4. Poll for messages (get_messages)
49    // =========================================
50    println!("\n⏳ Waiting for messages...");
51    println!("   Send an email to: {}", email);
52    println!("   (Polling for up to 2 minutes)");
53
54    let start = std::time::Instant::now();
55    let timeout = std::time::Duration::from_secs(120);
56    let poll_interval = std::time::Duration::from_secs(5);
57
58    loop {
59        // get_messages returns basic info: id, from, subject, excerpt
60        let messages = client.get_messages(&email).await?;
61
62        if !messages.is_empty() {
63            println!("\n\n📥 Received {} message(s)!", messages.len());
64
65            for msg in &messages {
66                println!("\n{}", "-".repeat(50));
67                println!("Message ID:  {}", msg.mail_id);
68                println!("From:        {}", msg.mail_from);
69                println!("Subject:     {}", msg.mail_subject);
70                println!(
71                    "Excerpt:     {}",
72                    &msg.mail_excerpt[..msg.mail_excerpt.len().min(80)]
73                );
74                println!("Timestamp:   {}", msg.mail_timestamp);
75
76                // =========================================
77                // 5. Fetch full email content (fetch_email)
78                // =========================================
79                println!("\n📄 Fetching full email body...");
80                match client.fetch_email(&email, &msg.mail_id).await {
81                    Ok(details) => {
82                        println!("   Body length: {} characters", details.mail_body.len());
83                        println!("   Preview (first 500 chars):");
84                        println!("   {}", "-".repeat(40));
85                        let preview: String = details.mail_body.chars().take(500).collect();
86                        for line in preview.lines().take(10) {
87                            println!("   {}", line);
88                        }
89                        if details.mail_body.len() > 500 {
90                            println!("   ... (truncated)");
91                        }
92                    }
93                    Err(e) => {
94                        eprintln!("   ❌ Failed to fetch: {}", e);
95                    }
96                }
97            }
98            break;
99        }
100
101        if start.elapsed() >= timeout {
102            println!("\n\n⚠️  Timeout: No messages received");
103            break;
104        }
105
106        let remaining = (timeout - start.elapsed()).as_secs();
107        print!("\r   Checking... {} seconds remaining   ", remaining);
108        use std::io::Write;
109        std::io::stdout().flush().ok();
110
111        tokio::time::sleep(poll_interval).await;
112    }
113
114    // =========================================
115    // 6. Delete/forget email address
116    // =========================================
117    println!("\n🗑️  Cleaning up email address...");
118    match client.delete_email(&email).await {
119        Ok(true) => println!("   ✅ Email address deleted"),
120        Ok(false) => println!("   ⚠️  Deletion may have failed"),
121        Err(e) => eprintln!("   ❌ Error: {}", e),
122    }
123
124    println!("\n{}", "=".repeat(50));
125    println!("✨ Demo complete!");
126
127    Ok(())
128}
Source

pub fn proxy(&self) -> Option<&str>

Get the proxy URL if one was configured.

Source

pub async fn create_email( &self, alias: &str, _domain: Option<&str>, ) -> Result<String>

Create a temporary email address.

§Arguments
  • alias - The email alias (part before @)
  • domain - Optional domain (currently ignored by API - default domain is used)
§Returns

The full email address assigned by GuerrillaMail

Examples found in repository?
examples/demo.rs (line 44)
14async fn main() -> Result<(), Box<dyn std::error::Error>> {
15    println!("📧 GuerrillaMail Rust Client - Full Demo");
16    println!("{}", "=".repeat(50));
17
18    // =========================================
19    // 1. Create client (optionally with proxy)
20    // =========================================
21    println!("\n🔌 Creating client...");
22
23    // Without proxy:
24    let client = Client::new().await?;
25
26    // With proxy (uncomment to use):
27    // let client = Client::with_proxy(Some("http://127.0.0.1:8080")).await?;
28
29    println!("   ✅ Connected to GuerrillaMail API");
30
31    // =========================================
32    // 2. View available domains
33    // =========================================
34    println!("\n🌐 Available email domains:");
35    for domain in client.domains() {
36        println!("   - {}", domain);
37    }
38
39    // =========================================
40    // 3. Create temporary email address
41    // =========================================
42    println!("\n📬 Creating temporary email...");
43    let alias = format!("demo{}", rand::random::<u16>());
44    let email = client.create_email(&alias, None).await?;
45    println!("   ✅ Created: {}", email);
46
47    // =========================================
48    // 4. Poll for messages (get_messages)
49    // =========================================
50    println!("\n⏳ Waiting for messages...");
51    println!("   Send an email to: {}", email);
52    println!("   (Polling for up to 2 minutes)");
53
54    let start = std::time::Instant::now();
55    let timeout = std::time::Duration::from_secs(120);
56    let poll_interval = std::time::Duration::from_secs(5);
57
58    loop {
59        // get_messages returns basic info: id, from, subject, excerpt
60        let messages = client.get_messages(&email).await?;
61
62        if !messages.is_empty() {
63            println!("\n\n📥 Received {} message(s)!", messages.len());
64
65            for msg in &messages {
66                println!("\n{}", "-".repeat(50));
67                println!("Message ID:  {}", msg.mail_id);
68                println!("From:        {}", msg.mail_from);
69                println!("Subject:     {}", msg.mail_subject);
70                println!(
71                    "Excerpt:     {}",
72                    &msg.mail_excerpt[..msg.mail_excerpt.len().min(80)]
73                );
74                println!("Timestamp:   {}", msg.mail_timestamp);
75
76                // =========================================
77                // 5. Fetch full email content (fetch_email)
78                // =========================================
79                println!("\n📄 Fetching full email body...");
80                match client.fetch_email(&email, &msg.mail_id).await {
81                    Ok(details) => {
82                        println!("   Body length: {} characters", details.mail_body.len());
83                        println!("   Preview (first 500 chars):");
84                        println!("   {}", "-".repeat(40));
85                        let preview: String = details.mail_body.chars().take(500).collect();
86                        for line in preview.lines().take(10) {
87                            println!("   {}", line);
88                        }
89                        if details.mail_body.len() > 500 {
90                            println!("   ... (truncated)");
91                        }
92                    }
93                    Err(e) => {
94                        eprintln!("   ❌ Failed to fetch: {}", e);
95                    }
96                }
97            }
98            break;
99        }
100
101        if start.elapsed() >= timeout {
102            println!("\n\n⚠️  Timeout: No messages received");
103            break;
104        }
105
106        let remaining = (timeout - start.elapsed()).as_secs();
107        print!("\r   Checking... {} seconds remaining   ", remaining);
108        use std::io::Write;
109        std::io::stdout().flush().ok();
110
111        tokio::time::sleep(poll_interval).await;
112    }
113
114    // =========================================
115    // 6. Delete/forget email address
116    // =========================================
117    println!("\n🗑️  Cleaning up email address...");
118    match client.delete_email(&email).await {
119        Ok(true) => println!("   ✅ Email address deleted"),
120        Ok(false) => println!("   ⚠️  Deletion may have failed"),
121        Err(e) => eprintln!("   ❌ Error: {}", e),
122    }
123
124    println!("\n{}", "=".repeat(50));
125    println!("✨ Demo complete!");
126
127    Ok(())
128}
Source

pub async fn get_messages(&self, email: &str) -> Result<Vec<Message>>

Get messages for an email address.

§Arguments
  • email - The full email address
§Returns

A list of messages in the inbox

Examples found in repository?
examples/demo.rs (line 60)
14async fn main() -> Result<(), Box<dyn std::error::Error>> {
15    println!("📧 GuerrillaMail Rust Client - Full Demo");
16    println!("{}", "=".repeat(50));
17
18    // =========================================
19    // 1. Create client (optionally with proxy)
20    // =========================================
21    println!("\n🔌 Creating client...");
22
23    // Without proxy:
24    let client = Client::new().await?;
25
26    // With proxy (uncomment to use):
27    // let client = Client::with_proxy(Some("http://127.0.0.1:8080")).await?;
28
29    println!("   ✅ Connected to GuerrillaMail API");
30
31    // =========================================
32    // 2. View available domains
33    // =========================================
34    println!("\n🌐 Available email domains:");
35    for domain in client.domains() {
36        println!("   - {}", domain);
37    }
38
39    // =========================================
40    // 3. Create temporary email address
41    // =========================================
42    println!("\n📬 Creating temporary email...");
43    let alias = format!("demo{}", rand::random::<u16>());
44    let email = client.create_email(&alias, None).await?;
45    println!("   ✅ Created: {}", email);
46
47    // =========================================
48    // 4. Poll for messages (get_messages)
49    // =========================================
50    println!("\n⏳ Waiting for messages...");
51    println!("   Send an email to: {}", email);
52    println!("   (Polling for up to 2 minutes)");
53
54    let start = std::time::Instant::now();
55    let timeout = std::time::Duration::from_secs(120);
56    let poll_interval = std::time::Duration::from_secs(5);
57
58    loop {
59        // get_messages returns basic info: id, from, subject, excerpt
60        let messages = client.get_messages(&email).await?;
61
62        if !messages.is_empty() {
63            println!("\n\n📥 Received {} message(s)!", messages.len());
64
65            for msg in &messages {
66                println!("\n{}", "-".repeat(50));
67                println!("Message ID:  {}", msg.mail_id);
68                println!("From:        {}", msg.mail_from);
69                println!("Subject:     {}", msg.mail_subject);
70                println!(
71                    "Excerpt:     {}",
72                    &msg.mail_excerpt[..msg.mail_excerpt.len().min(80)]
73                );
74                println!("Timestamp:   {}", msg.mail_timestamp);
75
76                // =========================================
77                // 5. Fetch full email content (fetch_email)
78                // =========================================
79                println!("\n📄 Fetching full email body...");
80                match client.fetch_email(&email, &msg.mail_id).await {
81                    Ok(details) => {
82                        println!("   Body length: {} characters", details.mail_body.len());
83                        println!("   Preview (first 500 chars):");
84                        println!("   {}", "-".repeat(40));
85                        let preview: String = details.mail_body.chars().take(500).collect();
86                        for line in preview.lines().take(10) {
87                            println!("   {}", line);
88                        }
89                        if details.mail_body.len() > 500 {
90                            println!("   ... (truncated)");
91                        }
92                    }
93                    Err(e) => {
94                        eprintln!("   ❌ Failed to fetch: {}", e);
95                    }
96                }
97            }
98            break;
99        }
100
101        if start.elapsed() >= timeout {
102            println!("\n\n⚠️  Timeout: No messages received");
103            break;
104        }
105
106        let remaining = (timeout - start.elapsed()).as_secs();
107        print!("\r   Checking... {} seconds remaining   ", remaining);
108        use std::io::Write;
109        std::io::stdout().flush().ok();
110
111        tokio::time::sleep(poll_interval).await;
112    }
113
114    // =========================================
115    // 6. Delete/forget email address
116    // =========================================
117    println!("\n🗑️  Cleaning up email address...");
118    match client.delete_email(&email).await {
119        Ok(true) => println!("   ✅ Email address deleted"),
120        Ok(false) => println!("   ⚠️  Deletion may have failed"),
121        Err(e) => eprintln!("   ❌ Error: {}", e),
122    }
123
124    println!("\n{}", "=".repeat(50));
125    println!("✨ Demo complete!");
126
127    Ok(())
128}
Source

pub async fn fetch_email( &self, email: &str, mail_id: &str, ) -> Result<EmailDetails>

Fetch the full content of a specific email.

§Arguments
  • email - The full email address
  • mail_id - The message ID to fetch
§Returns

The full email details including the body

Examples found in repository?
examples/demo.rs (line 80)
14async fn main() -> Result<(), Box<dyn std::error::Error>> {
15    println!("📧 GuerrillaMail Rust Client - Full Demo");
16    println!("{}", "=".repeat(50));
17
18    // =========================================
19    // 1. Create client (optionally with proxy)
20    // =========================================
21    println!("\n🔌 Creating client...");
22
23    // Without proxy:
24    let client = Client::new().await?;
25
26    // With proxy (uncomment to use):
27    // let client = Client::with_proxy(Some("http://127.0.0.1:8080")).await?;
28
29    println!("   ✅ Connected to GuerrillaMail API");
30
31    // =========================================
32    // 2. View available domains
33    // =========================================
34    println!("\n🌐 Available email domains:");
35    for domain in client.domains() {
36        println!("   - {}", domain);
37    }
38
39    // =========================================
40    // 3. Create temporary email address
41    // =========================================
42    println!("\n📬 Creating temporary email...");
43    let alias = format!("demo{}", rand::random::<u16>());
44    let email = client.create_email(&alias, None).await?;
45    println!("   ✅ Created: {}", email);
46
47    // =========================================
48    // 4. Poll for messages (get_messages)
49    // =========================================
50    println!("\n⏳ Waiting for messages...");
51    println!("   Send an email to: {}", email);
52    println!("   (Polling for up to 2 minutes)");
53
54    let start = std::time::Instant::now();
55    let timeout = std::time::Duration::from_secs(120);
56    let poll_interval = std::time::Duration::from_secs(5);
57
58    loop {
59        // get_messages returns basic info: id, from, subject, excerpt
60        let messages = client.get_messages(&email).await?;
61
62        if !messages.is_empty() {
63            println!("\n\n📥 Received {} message(s)!", messages.len());
64
65            for msg in &messages {
66                println!("\n{}", "-".repeat(50));
67                println!("Message ID:  {}", msg.mail_id);
68                println!("From:        {}", msg.mail_from);
69                println!("Subject:     {}", msg.mail_subject);
70                println!(
71                    "Excerpt:     {}",
72                    &msg.mail_excerpt[..msg.mail_excerpt.len().min(80)]
73                );
74                println!("Timestamp:   {}", msg.mail_timestamp);
75
76                // =========================================
77                // 5. Fetch full email content (fetch_email)
78                // =========================================
79                println!("\n📄 Fetching full email body...");
80                match client.fetch_email(&email, &msg.mail_id).await {
81                    Ok(details) => {
82                        println!("   Body length: {} characters", details.mail_body.len());
83                        println!("   Preview (first 500 chars):");
84                        println!("   {}", "-".repeat(40));
85                        let preview: String = details.mail_body.chars().take(500).collect();
86                        for line in preview.lines().take(10) {
87                            println!("   {}", line);
88                        }
89                        if details.mail_body.len() > 500 {
90                            println!("   ... (truncated)");
91                        }
92                    }
93                    Err(e) => {
94                        eprintln!("   ❌ Failed to fetch: {}", e);
95                    }
96                }
97            }
98            break;
99        }
100
101        if start.elapsed() >= timeout {
102            println!("\n\n⚠️  Timeout: No messages received");
103            break;
104        }
105
106        let remaining = (timeout - start.elapsed()).as_secs();
107        print!("\r   Checking... {} seconds remaining   ", remaining);
108        use std::io::Write;
109        std::io::stdout().flush().ok();
110
111        tokio::time::sleep(poll_interval).await;
112    }
113
114    // =========================================
115    // 6. Delete/forget email address
116    // =========================================
117    println!("\n🗑️  Cleaning up email address...");
118    match client.delete_email(&email).await {
119        Ok(true) => println!("   ✅ Email address deleted"),
120        Ok(false) => println!("   ⚠️  Deletion may have failed"),
121        Err(e) => eprintln!("   ❌ Error: {}", e),
122    }
123
124    println!("\n{}", "=".repeat(50));
125    println!("✨ Demo complete!");
126
127    Ok(())
128}
Source

pub async fn delete_email(&self, email: &str) -> Result<bool>

Delete/forget an email address.

§Arguments
  • email - The full email address to delete
§Returns

true if deletion was successful

Examples found in repository?
examples/demo.rs (line 118)
14async fn main() -> Result<(), Box<dyn std::error::Error>> {
15    println!("📧 GuerrillaMail Rust Client - Full Demo");
16    println!("{}", "=".repeat(50));
17
18    // =========================================
19    // 1. Create client (optionally with proxy)
20    // =========================================
21    println!("\n🔌 Creating client...");
22
23    // Without proxy:
24    let client = Client::new().await?;
25
26    // With proxy (uncomment to use):
27    // let client = Client::with_proxy(Some("http://127.0.0.1:8080")).await?;
28
29    println!("   ✅ Connected to GuerrillaMail API");
30
31    // =========================================
32    // 2. View available domains
33    // =========================================
34    println!("\n🌐 Available email domains:");
35    for domain in client.domains() {
36        println!("   - {}", domain);
37    }
38
39    // =========================================
40    // 3. Create temporary email address
41    // =========================================
42    println!("\n📬 Creating temporary email...");
43    let alias = format!("demo{}", rand::random::<u16>());
44    let email = client.create_email(&alias, None).await?;
45    println!("   ✅ Created: {}", email);
46
47    // =========================================
48    // 4. Poll for messages (get_messages)
49    // =========================================
50    println!("\n⏳ Waiting for messages...");
51    println!("   Send an email to: {}", email);
52    println!("   (Polling for up to 2 minutes)");
53
54    let start = std::time::Instant::now();
55    let timeout = std::time::Duration::from_secs(120);
56    let poll_interval = std::time::Duration::from_secs(5);
57
58    loop {
59        // get_messages returns basic info: id, from, subject, excerpt
60        let messages = client.get_messages(&email).await?;
61
62        if !messages.is_empty() {
63            println!("\n\n📥 Received {} message(s)!", messages.len());
64
65            for msg in &messages {
66                println!("\n{}", "-".repeat(50));
67                println!("Message ID:  {}", msg.mail_id);
68                println!("From:        {}", msg.mail_from);
69                println!("Subject:     {}", msg.mail_subject);
70                println!(
71                    "Excerpt:     {}",
72                    &msg.mail_excerpt[..msg.mail_excerpt.len().min(80)]
73                );
74                println!("Timestamp:   {}", msg.mail_timestamp);
75
76                // =========================================
77                // 5. Fetch full email content (fetch_email)
78                // =========================================
79                println!("\n📄 Fetching full email body...");
80                match client.fetch_email(&email, &msg.mail_id).await {
81                    Ok(details) => {
82                        println!("   Body length: {} characters", details.mail_body.len());
83                        println!("   Preview (first 500 chars):");
84                        println!("   {}", "-".repeat(40));
85                        let preview: String = details.mail_body.chars().take(500).collect();
86                        for line in preview.lines().take(10) {
87                            println!("   {}", line);
88                        }
89                        if details.mail_body.len() > 500 {
90                            println!("   ... (truncated)");
91                        }
92                    }
93                    Err(e) => {
94                        eprintln!("   ❌ Failed to fetch: {}", e);
95                    }
96                }
97            }
98            break;
99        }
100
101        if start.elapsed() >= timeout {
102            println!("\n\n⚠️  Timeout: No messages received");
103            break;
104        }
105
106        let remaining = (timeout - start.elapsed()).as_secs();
107        print!("\r   Checking... {} seconds remaining   ", remaining);
108        use std::io::Write;
109        std::io::stdout().flush().ok();
110
111        tokio::time::sleep(poll_interval).await;
112    }
113
114    // =========================================
115    // 6. Delete/forget email address
116    // =========================================
117    println!("\n🗑️  Cleaning up email address...");
118    match client.delete_email(&email).await {
119        Ok(true) => println!("   ✅ Email address deleted"),
120        Ok(false) => println!("   ⚠️  Deletion may have failed"),
121        Err(e) => eprintln!("   ❌ Error: {}", e),
122    }
123
124    println!("\n{}", "=".repeat(50));
125    println!("✨ Demo complete!");
126
127    Ok(())
128}

Trait Implementations§

Source§

impl Debug for Client

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Client

§

impl !RefUnwindSafe for Client

§

impl Send for Client

§

impl Sync for Client

§

impl Unpin for Client

§

impl !UnwindSafe for Client

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more