async_translate/
options.rs

1//! 翻译配置选项
2
3use std::time::Duration;
4
5/// 翻译配置选项
6#[derive(Debug, Clone)]
7pub struct TranslateOptions {
8    /// 请求超时时间,None 表示不超时
9    pub timeout: Option<Duration>,
10    /// 最大重试次数
11    pub max_retries: u32,
12}
13
14impl Default for TranslateOptions {
15    fn default() -> Self {
16        Self {
17            timeout: Some(Duration::from_secs(30)), // 30秒超时
18            max_retries: 3,                         // 重试3次
19        }
20    }
21}
22
23impl TranslateOptions {
24    /// 设置超时时间
25    pub fn timeout(mut self, timeout: Duration) -> Self {
26        self.timeout = Some(timeout);
27        self
28    }
29
30    /// 禁用超时
31    pub fn no_timeout(mut self) -> Self {
32        self.timeout = None;
33        self
34    }
35
36    /// 设置最大重试次数
37    pub fn max_retries(mut self, max_retries: u32) -> Self {
38        self.max_retries = max_retries;
39        self
40    }
41
42    /// 禁用重试
43    pub fn no_retries(mut self) -> Self {
44        self.max_retries = 0;
45        self
46    }
47}