leetcode_api/leetcode/resps/
run_res.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Default, Deserialize, Serialize, Debug, Clone, PartialEq, Eq)]
4pub struct TestInfo {
5    #[serde(default)]
6    interpret_id: String,
7    #[serde(default)]
8    test_case: String,
9    #[serde(default)]
10    interpret_expected_id: String,
11}
12
13impl TestInfo {
14    pub fn interpret_id(&self) -> &str {
15        &self.interpret_id
16    }
17}
18
19#[derive(Deserialize, Serialize, Default, Debug, Clone, Copy, PartialEq, Eq)]
20pub struct SubmitInfo {
21    #[serde(default)]
22    submission_id: u32,
23}
24
25impl SubmitInfo {
26    pub const fn submission_id(&self) -> u32 {
27        self.submission_id
28    }
29}
30
31#[derive(Deserialize, Serialize)]
32#[derive(Clone)]
33#[derive(Debug)]
34#[derive(Default)]
35#[derive(PartialEq)]
36pub struct RunResult {
37    #[serde(default)]
38    pub elapsed_time: u32,
39    #[serde(default)]
40    pub finished: bool,
41
42    // #[serde(default)]
43    // pub expected_elapsed_time: u32,
44    // #[serde(default)]
45    // pub expected_lang: String,
46    // #[serde(default)]
47    // pub expected_memory: u128,
48    // #[serde(default)]
49    // pub expected_run_success: bool,
50    // #[serde(default)]
51    // pub expected_status_code: i32,
52    // #[serde(default)]
53    // pub expected_status_runtime: String,
54    // #[serde(default)]
55    // pub expected_std_output_list: Vec<String>,
56    // #[serde(default)]
57    // pub expected_task_finish_time: u128,
58    // #[serde(default)]
59    // pub expected_task_name: String,
60    // #[serde(default)]
61    // pub fast_submit: bool,
62    #[serde(default)]
63    pub task_name: String,
64
65    #[serde(default)]
66    pub status_code: i64,
67    #[serde(default)]
68    pub status_msg: String,
69
70    #[serde(default)]
71    pub question_id: String,
72    #[serde(default)]
73    pub std_output: String,
74    #[serde(default)]
75    pub expected_output: String,
76    #[serde(default)]
77    pub last_testcase: String,
78
79    #[serde(default)]
80    pub code_answer: Vec<String>,
81    // #[serde(default)]
82    // pub code_output: String, // test:vec,submit:string, delete the field
83    #[serde(default)]
84    pub compare_result: String,
85    #[serde(default)]
86    pub correct_answer: bool,
87    #[serde(default)]
88    pub expected_code_answer: Vec<String>,
89    #[serde(default)]
90    pub expected_code_output: Vec<String>,
91
92    #[serde(default)]
93    pub pretty_lang: String,
94    #[serde(default)]
95    pub lang: String,
96
97    #[serde(default)]
98    pub memory: u64,
99    #[serde(default)]
100    pub status_memory: String,
101    #[serde(default)]
102    pub memory_percentile: Option<f64>,
103
104    #[serde(default)]
105    pub status_runtime: String,
106    #[serde(default)]
107    pub runtime_percentile: Option<f64>,
108    #[serde(default)]
109    pub run_success: bool,
110
111    #[serde(default)]
112    pub state: String,
113
114    #[serde(default)]
115    pub std_output_list: Vec<String>,
116    #[serde(default)]
117    pub submission_id: String,
118
119    #[serde(default)]
120    pub task_finish_time: u64,
121
122    #[serde(default)]
123    pub total_correct: Option<u64>,
124    #[serde(default)]
125    pub total_testcases: Option<u64>,
126
127    // runtime error
128    #[serde(default)]
129    pub full_runtime_error: String,
130    #[serde(default)]
131    pub runtime_error: String,
132
133    // compile error
134    #[serde(default)]
135    pub compile_error: String,
136    #[serde(default)]
137    pub full_compile_error: String,
138}
139
140impl RunResult {
141    pub fn success(&self) -> bool {
142        &self.state == "SUCCESS"
143    }
144    pub fn getting(&self) -> bool {
145        &self.state == "STARTED"
146    }
147
148    pub fn total_correct(&self) -> u64 {
149        self.total_correct.unwrap_or_default()
150    }
151
152    pub fn total_testcases(&self) -> u64 {
153        self.total_testcases.unwrap_or_default()
154    }
155
156    pub fn memory_percentile(&self) -> f64 {
157        self.memory_percentile
158            .unwrap_or_default()
159    }
160
161    pub fn runtime_percentile(&self) -> f64 {
162        self.runtime_percentile
163            .unwrap_or_default()
164    }
165}
166
167#[derive(Clone)]
168#[derive(Debug)]
169#[derive(Default)]
170pub struct RunResultBuild {
171    inner: RunResult,
172}
173
174impl RunResultBuild {
175    pub fn set_status_msg(mut self, status_msg: String) -> Self {
176        self.inner.status_msg = status_msg;
177        self
178    }
179    pub fn build(self) -> RunResult {
180        self.inner
181    }
182}