Skip to main content

chai/interfaces/
mod.rs

1use serde::{Deserialize, Serialize};
2use serde_with::skip_serializing_none;
3
4use crate::{config::配置, 原始可编码对象, 原始当量信息, 原始键位分布信息};
5
6pub mod command_line;
7pub mod web;
8pub mod server;
9
10/// 向用户反馈的消息类型
11#[derive(Serialize)]
12#[serde(tag = "type", rename_all = "snake_case")]
13#[skip_serializing_none]
14pub enum 消息 {
15    TrialMax {
16        temperature: f64,
17        accept_rate: f64,
18    },
19    TrialMin {
20        temperature: f64,
21        improve_rate: f64,
22    },
23    Parameters {
24        t_max: f64,
25        t_min: f64,
26    },
27    Progress {
28        steps: usize,
29        temperature: f64,
30        metric: String,
31    },
32    BetterSolution {
33        metric: String,
34        config: String,
35        save: bool,
36    },
37    Elapsed {
38        time: u64,
39    },
40}
41
42/// 定义了向用户报告消息的接口,用于统一命令行和图形界面的输出方式
43///
44/// 命令行界面、图形界面只需要各自实现 post 方法,就可向用户报告各种用户数据
45pub trait 界面 {
46    fn 发送(&self, 消息: 消息);
47}
48
49/// 图形界面参数的定义
50#[derive(Debug, Default, Clone, Serialize, Deserialize)]
51pub struct 默认输入 {
52    pub 配置: 配置,
53    pub 词列表: Vec<原始可编码对象>,
54    pub 原始键位分布信息: 原始键位分布信息,
55    pub 原始当量信息: 原始当量信息,
56}