leetcode_api/leetcode/resps/
run_res.rs1use 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)]
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)]
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 #[serde(default)]
129 pub full_runtime_error: String,
130 #[serde(default)]
131 pub runtime_error: String,
132
133 #[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}