HtmlTranslator

Struct HtmlTranslator 

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

HTML翻译器

这是库的主要接口,提供完整的HTML翻译功能

Implementations§

Source§

impl HtmlTranslator

Source

pub async fn new(config: TranslationConfig) -> TranslationResult<Self>

创建新的翻译器实例

Examples found in repository?
examples/basic_translation.rs (line 26)
8async fn main() -> TranslationResult<()> {
9    // 初始化日志
10    tracing_subscriber::fmt::init();
11    
12    println!("HTML翻译库 - 基本使用示例");
13    println!("{}", "=".repeat(50));
14    
15    // 创建翻译配置
16    let config = TranslationConfig::new()
17        .target_language("zh")  // 翻译为中文
18        .api_url("http://localhost:1188/translate")  // DeepLX API地址
19        .enable_cache(true)     // 启用缓存
20        .batch_size(20)         // 批处理大小
21        .max_retries(3);        // 最大重试次数
22    
23    println!("✓ 翻译配置创建完成");
24    
25    // 创建翻译器
26    let mut translator = HtmlTranslator::new(config).await?;
27    println!("✓ 翻译器初始化完成");
28    
29    // 示例HTML内容 - 使用字符串连接来避免标识符冲突
30    let sample_html = format!(r##"
31    <!DOCTYPE html>
32    <html lang="en">
33    <head>
34        <meta charset="UTF-8">
35        <title>Welcome to Our Website</title>
36        <meta name="description" content="This is a sample webpage for translation testing">
37    </head>
38    <body>
39        <header>
40            <h1>Welcome to Our Amazing Website</h1>
41            <nav>
42                <a href="{}home" title="Go to home page">Home</a>
43                <a href="{}about" title="Learn about us">About</a>
44                <a href="{}contact" title="Get in touch">Contact</a>
45            </nav>
46        </header>
47        
48        <main>
49            <section id="hero">
50                <h2>Discover Something New Today</h2>
51                <p>We provide innovative solutions for your business needs. 
52                   Our team of experts is dedicated to helping you succeed.</p>
53                <button>Get Started Now</button>
54            </section>
55            
56            <section id="features">
57                <h3>Our Features</h3>
58                <div class="feature">
59                    <h4>Fast Performance</h4>
60                    <p>Lightning-fast load times for better user experience.</p>
61                </div>
62                <div class="feature">
63                    <h4>Secure & Reliable</h4>
64                    <p>Your data is protected with enterprise-grade security.</p>
65                </div>
66                <div class="feature">
67                    <h4>24/7 Support</h4>
68                    <p>Round-the-clock customer support whenever you need help.</p>
69                </div>
70            </section>
71            
72            <section id="contact">
73                <h3>Contact Us</h3>
74                <form>
75                    <label for="name">Your Name:</label>
76                    <input type="text" id="name" name="name" placeholder="Enter your name" required>
77                    
78                    <label for="email">Email Address:</label>
79                    <input type="email" id="email" name="email" placeholder="Enter your email" required>
80                    
81                    <label for="message">Message:</label>
82                    <textarea id="message" name="message" placeholder="Tell us how we can help you" required></textarea>
83                    
84                    <button type="submit">Send Message</button>
85                </form>
86            </section>
87        </main>
88        
89        <footer>
90            <p>&copy; 2024 Our Company. All rights reserved.</p>
91            <img src="logo.png" alt="Company Logo" title="Our company logo">
92        </footer>
93        
94        <script>
95            // This JavaScript code should not be translated
96            console.log('Page loaded successfully');
97        </script>
98    </body>
99    </html>
100    "##, "#", "#", "#");
101    
102    println!("\n原始HTML内容长度: {} 字符", sample_html.len());
103    
104    // 执行翻译
105    println!("\n🔄 开始翻译...");
106    let start_time = std::time::Instant::now();
107    
108    let translated_html = translator.translate_html(&sample_html).await?;
109    
110    let duration = start_time.elapsed();
111    println!("✅ 翻译完成!耗时: {:?}", duration);
112    
113    // 显示翻译统计
114    let stats = translator.get_stats();
115    println!("\n📊 翻译统计:");
116    println!("   - 收集文本数量: {}", stats.texts_collected);
117    println!("   - 过滤后文本数量: {}", stats.texts_filtered);
118    println!("   - 缓存命中: {}", stats.cache_hits);
119    println!("   - 缓存未命中: {}", stats.cache_misses);
120    println!("   - 缓存命中率: {:.1}%", stats.cache_hit_rate() * 100.0);
121    println!("   - 创建批次数量: {}", stats.batches_created);
122    println!("   - 处理时间: {:?}", stats.processing_time);
123    
124    // 保存翻译结果
125    std::fs::write("translated_example.html", &translated_html)?;
126    println!("\n💾 翻译结果已保存到: translated_example.html");
127    
128    // 显示部分翻译结果预览
129    let preview_length = 500;
130    let preview = if translated_html.len() > preview_length {
131        format!("{}...", &translated_html[..preview_length])
132    } else {
133        translated_html.clone()
134    };
135    
136    println!("\n📝 翻译结果预览:");
137    println!("{}", "=".repeat(60));
138    println!("{}", preview);
139    println!("{}", "=".repeat(60));
140    
141    // 对比原文和译文长度
142    println!("\n📏 长度对比:");
143    println!("   原文: {} 字符", sample_html.len());
144    println!("   译文: {} 字符", translated_html.len());
145    println!("   变化: {:.1}%", 
146             (translated_html.len() as f32 / sample_html.len() as f32 - 1.0) * 100.0);
147    
148    // 演示文件翻译
149    println!("\n🔄 演示文件翻译功能...");
150    std::fs::write("sample_input.html", &sample_html)?;
151    
152    translator.translate_file("sample_input.html", "sample_output.html").await?;
153    println!("✅ 文件翻译完成: sample_input.html → sample_output.html");
154    
155    println!("\n🎉 示例演示完成!");
156    
157    Ok(())
158}
Source

pub async fn translate_html(&mut self, html: &str) -> TranslationResult<String>

翻译HTML字符串

Examples found in repository?
examples/basic_translation.rs (line 108)
8async fn main() -> TranslationResult<()> {
9    // 初始化日志
10    tracing_subscriber::fmt::init();
11    
12    println!("HTML翻译库 - 基本使用示例");
13    println!("{}", "=".repeat(50));
14    
15    // 创建翻译配置
16    let config = TranslationConfig::new()
17        .target_language("zh")  // 翻译为中文
18        .api_url("http://localhost:1188/translate")  // DeepLX API地址
19        .enable_cache(true)     // 启用缓存
20        .batch_size(20)         // 批处理大小
21        .max_retries(3);        // 最大重试次数
22    
23    println!("✓ 翻译配置创建完成");
24    
25    // 创建翻译器
26    let mut translator = HtmlTranslator::new(config).await?;
27    println!("✓ 翻译器初始化完成");
28    
29    // 示例HTML内容 - 使用字符串连接来避免标识符冲突
30    let sample_html = format!(r##"
31    <!DOCTYPE html>
32    <html lang="en">
33    <head>
34        <meta charset="UTF-8">
35        <title>Welcome to Our Website</title>
36        <meta name="description" content="This is a sample webpage for translation testing">
37    </head>
38    <body>
39        <header>
40            <h1>Welcome to Our Amazing Website</h1>
41            <nav>
42                <a href="{}home" title="Go to home page">Home</a>
43                <a href="{}about" title="Learn about us">About</a>
44                <a href="{}contact" title="Get in touch">Contact</a>
45            </nav>
46        </header>
47        
48        <main>
49            <section id="hero">
50                <h2>Discover Something New Today</h2>
51                <p>We provide innovative solutions for your business needs. 
52                   Our team of experts is dedicated to helping you succeed.</p>
53                <button>Get Started Now</button>
54            </section>
55            
56            <section id="features">
57                <h3>Our Features</h3>
58                <div class="feature">
59                    <h4>Fast Performance</h4>
60                    <p>Lightning-fast load times for better user experience.</p>
61                </div>
62                <div class="feature">
63                    <h4>Secure & Reliable</h4>
64                    <p>Your data is protected with enterprise-grade security.</p>
65                </div>
66                <div class="feature">
67                    <h4>24/7 Support</h4>
68                    <p>Round-the-clock customer support whenever you need help.</p>
69                </div>
70            </section>
71            
72            <section id="contact">
73                <h3>Contact Us</h3>
74                <form>
75                    <label for="name">Your Name:</label>
76                    <input type="text" id="name" name="name" placeholder="Enter your name" required>
77                    
78                    <label for="email">Email Address:</label>
79                    <input type="email" id="email" name="email" placeholder="Enter your email" required>
80                    
81                    <label for="message">Message:</label>
82                    <textarea id="message" name="message" placeholder="Tell us how we can help you" required></textarea>
83                    
84                    <button type="submit">Send Message</button>
85                </form>
86            </section>
87        </main>
88        
89        <footer>
90            <p>&copy; 2024 Our Company. All rights reserved.</p>
91            <img src="logo.png" alt="Company Logo" title="Our company logo">
92        </footer>
93        
94        <script>
95            // This JavaScript code should not be translated
96            console.log('Page loaded successfully');
97        </script>
98    </body>
99    </html>
100    "##, "#", "#", "#");
101    
102    println!("\n原始HTML内容长度: {} 字符", sample_html.len());
103    
104    // 执行翻译
105    println!("\n🔄 开始翻译...");
106    let start_time = std::time::Instant::now();
107    
108    let translated_html = translator.translate_html(&sample_html).await?;
109    
110    let duration = start_time.elapsed();
111    println!("✅ 翻译完成!耗时: {:?}", duration);
112    
113    // 显示翻译统计
114    let stats = translator.get_stats();
115    println!("\n📊 翻译统计:");
116    println!("   - 收集文本数量: {}", stats.texts_collected);
117    println!("   - 过滤后文本数量: {}", stats.texts_filtered);
118    println!("   - 缓存命中: {}", stats.cache_hits);
119    println!("   - 缓存未命中: {}", stats.cache_misses);
120    println!("   - 缓存命中率: {:.1}%", stats.cache_hit_rate() * 100.0);
121    println!("   - 创建批次数量: {}", stats.batches_created);
122    println!("   - 处理时间: {:?}", stats.processing_time);
123    
124    // 保存翻译结果
125    std::fs::write("translated_example.html", &translated_html)?;
126    println!("\n💾 翻译结果已保存到: translated_example.html");
127    
128    // 显示部分翻译结果预览
129    let preview_length = 500;
130    let preview = if translated_html.len() > preview_length {
131        format!("{}...", &translated_html[..preview_length])
132    } else {
133        translated_html.clone()
134    };
135    
136    println!("\n📝 翻译结果预览:");
137    println!("{}", "=".repeat(60));
138    println!("{}", preview);
139    println!("{}", "=".repeat(60));
140    
141    // 对比原文和译文长度
142    println!("\n📏 长度对比:");
143    println!("   原文: {} 字符", sample_html.len());
144    println!("   译文: {} 字符", translated_html.len());
145    println!("   变化: {:.1}%", 
146             (translated_html.len() as f32 / sample_html.len() as f32 - 1.0) * 100.0);
147    
148    // 演示文件翻译
149    println!("\n🔄 演示文件翻译功能...");
150    std::fs::write("sample_input.html", &sample_html)?;
151    
152    translator.translate_file("sample_input.html", "sample_output.html").await?;
153    println!("✅ 文件翻译完成: sample_input.html → sample_output.html");
154    
155    println!("\n🎉 示例演示完成!");
156    
157    Ok(())
158}
Source

pub async fn translate_file<P: AsRef<Path>>( &mut self, input_path: P, output_path: P, ) -> TranslationResult<()>

翻译HTML文件

Examples found in repository?
examples/basic_translation.rs (line 152)
8async fn main() -> TranslationResult<()> {
9    // 初始化日志
10    tracing_subscriber::fmt::init();
11    
12    println!("HTML翻译库 - 基本使用示例");
13    println!("{}", "=".repeat(50));
14    
15    // 创建翻译配置
16    let config = TranslationConfig::new()
17        .target_language("zh")  // 翻译为中文
18        .api_url("http://localhost:1188/translate")  // DeepLX API地址
19        .enable_cache(true)     // 启用缓存
20        .batch_size(20)         // 批处理大小
21        .max_retries(3);        // 最大重试次数
22    
23    println!("✓ 翻译配置创建完成");
24    
25    // 创建翻译器
26    let mut translator = HtmlTranslator::new(config).await?;
27    println!("✓ 翻译器初始化完成");
28    
29    // 示例HTML内容 - 使用字符串连接来避免标识符冲突
30    let sample_html = format!(r##"
31    <!DOCTYPE html>
32    <html lang="en">
33    <head>
34        <meta charset="UTF-8">
35        <title>Welcome to Our Website</title>
36        <meta name="description" content="This is a sample webpage for translation testing">
37    </head>
38    <body>
39        <header>
40            <h1>Welcome to Our Amazing Website</h1>
41            <nav>
42                <a href="{}home" title="Go to home page">Home</a>
43                <a href="{}about" title="Learn about us">About</a>
44                <a href="{}contact" title="Get in touch">Contact</a>
45            </nav>
46        </header>
47        
48        <main>
49            <section id="hero">
50                <h2>Discover Something New Today</h2>
51                <p>We provide innovative solutions for your business needs. 
52                   Our team of experts is dedicated to helping you succeed.</p>
53                <button>Get Started Now</button>
54            </section>
55            
56            <section id="features">
57                <h3>Our Features</h3>
58                <div class="feature">
59                    <h4>Fast Performance</h4>
60                    <p>Lightning-fast load times for better user experience.</p>
61                </div>
62                <div class="feature">
63                    <h4>Secure & Reliable</h4>
64                    <p>Your data is protected with enterprise-grade security.</p>
65                </div>
66                <div class="feature">
67                    <h4>24/7 Support</h4>
68                    <p>Round-the-clock customer support whenever you need help.</p>
69                </div>
70            </section>
71            
72            <section id="contact">
73                <h3>Contact Us</h3>
74                <form>
75                    <label for="name">Your Name:</label>
76                    <input type="text" id="name" name="name" placeholder="Enter your name" required>
77                    
78                    <label for="email">Email Address:</label>
79                    <input type="email" id="email" name="email" placeholder="Enter your email" required>
80                    
81                    <label for="message">Message:</label>
82                    <textarea id="message" name="message" placeholder="Tell us how we can help you" required></textarea>
83                    
84                    <button type="submit">Send Message</button>
85                </form>
86            </section>
87        </main>
88        
89        <footer>
90            <p>&copy; 2024 Our Company. All rights reserved.</p>
91            <img src="logo.png" alt="Company Logo" title="Our company logo">
92        </footer>
93        
94        <script>
95            // This JavaScript code should not be translated
96            console.log('Page loaded successfully');
97        </script>
98    </body>
99    </html>
100    "##, "#", "#", "#");
101    
102    println!("\n原始HTML内容长度: {} 字符", sample_html.len());
103    
104    // 执行翻译
105    println!("\n🔄 开始翻译...");
106    let start_time = std::time::Instant::now();
107    
108    let translated_html = translator.translate_html(&sample_html).await?;
109    
110    let duration = start_time.elapsed();
111    println!("✅ 翻译完成!耗时: {:?}", duration);
112    
113    // 显示翻译统计
114    let stats = translator.get_stats();
115    println!("\n📊 翻译统计:");
116    println!("   - 收集文本数量: {}", stats.texts_collected);
117    println!("   - 过滤后文本数量: {}", stats.texts_filtered);
118    println!("   - 缓存命中: {}", stats.cache_hits);
119    println!("   - 缓存未命中: {}", stats.cache_misses);
120    println!("   - 缓存命中率: {:.1}%", stats.cache_hit_rate() * 100.0);
121    println!("   - 创建批次数量: {}", stats.batches_created);
122    println!("   - 处理时间: {:?}", stats.processing_time);
123    
124    // 保存翻译结果
125    std::fs::write("translated_example.html", &translated_html)?;
126    println!("\n💾 翻译结果已保存到: translated_example.html");
127    
128    // 显示部分翻译结果预览
129    let preview_length = 500;
130    let preview = if translated_html.len() > preview_length {
131        format!("{}...", &translated_html[..preview_length])
132    } else {
133        translated_html.clone()
134    };
135    
136    println!("\n📝 翻译结果预览:");
137    println!("{}", "=".repeat(60));
138    println!("{}", preview);
139    println!("{}", "=".repeat(60));
140    
141    // 对比原文和译文长度
142    println!("\n📏 长度对比:");
143    println!("   原文: {} 字符", sample_html.len());
144    println!("   译文: {} 字符", translated_html.len());
145    println!("   变化: {:.1}%", 
146             (translated_html.len() as f32 / sample_html.len() as f32 - 1.0) * 100.0);
147    
148    // 演示文件翻译
149    println!("\n🔄 演示文件翻译功能...");
150    std::fs::write("sample_input.html", &sample_html)?;
151    
152    translator.translate_file("sample_input.html", "sample_output.html").await?;
153    println!("✅ 文件翻译完成: sample_input.html → sample_output.html");
154    
155    println!("\n🎉 示例演示完成!");
156    
157    Ok(())
158}
Source

pub async fn translate_dom(&mut self, dom: RcDom) -> TranslationResult<RcDom>

翻译DOM树

Source

pub fn get_stats(&self) -> &TranslationStats

获取翻译统计信息

Examples found in repository?
examples/basic_translation.rs (line 114)
8async fn main() -> TranslationResult<()> {
9    // 初始化日志
10    tracing_subscriber::fmt::init();
11    
12    println!("HTML翻译库 - 基本使用示例");
13    println!("{}", "=".repeat(50));
14    
15    // 创建翻译配置
16    let config = TranslationConfig::new()
17        .target_language("zh")  // 翻译为中文
18        .api_url("http://localhost:1188/translate")  // DeepLX API地址
19        .enable_cache(true)     // 启用缓存
20        .batch_size(20)         // 批处理大小
21        .max_retries(3);        // 最大重试次数
22    
23    println!("✓ 翻译配置创建完成");
24    
25    // 创建翻译器
26    let mut translator = HtmlTranslator::new(config).await?;
27    println!("✓ 翻译器初始化完成");
28    
29    // 示例HTML内容 - 使用字符串连接来避免标识符冲突
30    let sample_html = format!(r##"
31    <!DOCTYPE html>
32    <html lang="en">
33    <head>
34        <meta charset="UTF-8">
35        <title>Welcome to Our Website</title>
36        <meta name="description" content="This is a sample webpage for translation testing">
37    </head>
38    <body>
39        <header>
40            <h1>Welcome to Our Amazing Website</h1>
41            <nav>
42                <a href="{}home" title="Go to home page">Home</a>
43                <a href="{}about" title="Learn about us">About</a>
44                <a href="{}contact" title="Get in touch">Contact</a>
45            </nav>
46        </header>
47        
48        <main>
49            <section id="hero">
50                <h2>Discover Something New Today</h2>
51                <p>We provide innovative solutions for your business needs. 
52                   Our team of experts is dedicated to helping you succeed.</p>
53                <button>Get Started Now</button>
54            </section>
55            
56            <section id="features">
57                <h3>Our Features</h3>
58                <div class="feature">
59                    <h4>Fast Performance</h4>
60                    <p>Lightning-fast load times for better user experience.</p>
61                </div>
62                <div class="feature">
63                    <h4>Secure & Reliable</h4>
64                    <p>Your data is protected with enterprise-grade security.</p>
65                </div>
66                <div class="feature">
67                    <h4>24/7 Support</h4>
68                    <p>Round-the-clock customer support whenever you need help.</p>
69                </div>
70            </section>
71            
72            <section id="contact">
73                <h3>Contact Us</h3>
74                <form>
75                    <label for="name">Your Name:</label>
76                    <input type="text" id="name" name="name" placeholder="Enter your name" required>
77                    
78                    <label for="email">Email Address:</label>
79                    <input type="email" id="email" name="email" placeholder="Enter your email" required>
80                    
81                    <label for="message">Message:</label>
82                    <textarea id="message" name="message" placeholder="Tell us how we can help you" required></textarea>
83                    
84                    <button type="submit">Send Message</button>
85                </form>
86            </section>
87        </main>
88        
89        <footer>
90            <p>&copy; 2024 Our Company. All rights reserved.</p>
91            <img src="logo.png" alt="Company Logo" title="Our company logo">
92        </footer>
93        
94        <script>
95            // This JavaScript code should not be translated
96            console.log('Page loaded successfully');
97        </script>
98    </body>
99    </html>
100    "##, "#", "#", "#");
101    
102    println!("\n原始HTML内容长度: {} 字符", sample_html.len());
103    
104    // 执行翻译
105    println!("\n🔄 开始翻译...");
106    let start_time = std::time::Instant::now();
107    
108    let translated_html = translator.translate_html(&sample_html).await?;
109    
110    let duration = start_time.elapsed();
111    println!("✅ 翻译完成!耗时: {:?}", duration);
112    
113    // 显示翻译统计
114    let stats = translator.get_stats();
115    println!("\n📊 翻译统计:");
116    println!("   - 收集文本数量: {}", stats.texts_collected);
117    println!("   - 过滤后文本数量: {}", stats.texts_filtered);
118    println!("   - 缓存命中: {}", stats.cache_hits);
119    println!("   - 缓存未命中: {}", stats.cache_misses);
120    println!("   - 缓存命中率: {:.1}%", stats.cache_hit_rate() * 100.0);
121    println!("   - 创建批次数量: {}", stats.batches_created);
122    println!("   - 处理时间: {:?}", stats.processing_time);
123    
124    // 保存翻译结果
125    std::fs::write("translated_example.html", &translated_html)?;
126    println!("\n💾 翻译结果已保存到: translated_example.html");
127    
128    // 显示部分翻译结果预览
129    let preview_length = 500;
130    let preview = if translated_html.len() > preview_length {
131        format!("{}...", &translated_html[..preview_length])
132    } else {
133        translated_html.clone()
134    };
135    
136    println!("\n📝 翻译结果预览:");
137    println!("{}", "=".repeat(60));
138    println!("{}", preview);
139    println!("{}", "=".repeat(60));
140    
141    // 对比原文和译文长度
142    println!("\n📏 长度对比:");
143    println!("   原文: {} 字符", sample_html.len());
144    println!("   译文: {} 字符", translated_html.len());
145    println!("   变化: {:.1}%", 
146             (translated_html.len() as f32 / sample_html.len() as f32 - 1.0) * 100.0);
147    
148    // 演示文件翻译
149    println!("\n🔄 演示文件翻译功能...");
150    std::fs::write("sample_input.html", &sample_html)?;
151    
152    translator.translate_file("sample_input.html", "sample_output.html").await?;
153    println!("✅ 文件翻译完成: sample_input.html → sample_output.html");
154    
155    println!("\n🎉 示例演示完成!");
156    
157    Ok(())
158}
Source

pub fn reset_stats(&mut self)

重置统计信息

Auto Trait Implementations§

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
Source§

impl<T> ErasedDestructor for T
where T: 'static,