@@ -27,9 +27,11 @@ pub trait Request {
27pub struct ColumnDescriptor {
27pub struct ColumnDescriptor {
28 pub attribute_name: String,
28 pub attribute_name: String,
29 pub label: String,
29 pub label: String,
30+ #[serde(skip_serializing_if = "Option::is_none")]
30 pub format: Option<String>,
31 pub format: Option<String>,
31− #[serde(rename = "type")]
32+ #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
32 pub ty: Option<String>,
33 pub ty: Option<String>,
34+ #[serde(skip_serializing_if = "Option::is_none")]
33 pub width: Option<usize>,
35 pub width: Option<usize>,
@@ -38,52 +40,94 @@ pub struct ColumnDescriptor {
38pub struct ExceptionBreakpointsFilter {
40pub struct ExceptionBreakpointsFilter {
39 pub filter: String,
41 pub filter: String,
40 pub label: String,
42 pub label: String,
43+ #[serde(skip_serializing_if = "Option::is_none")]
41 pub description: Option<String>,
44 pub description: Option<String>,
45+ #[serde(skip_serializing_if = "Option::is_none")]
42 pub default: Option<bool>,
46 pub default: Option<bool>,
47+ #[serde(skip_serializing_if = "Option::is_none")]
43 pub supports_condition: Option<bool>,
48 pub supports_condition: Option<bool>,
49+ #[serde(skip_serializing_if = "Option::is_none")]
44 pub condition_description: Option<String>,
50 pub condition_description: Option<String>,
47#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
53#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
48#[serde(rename_all = "camelCase")]
54#[serde(rename_all = "camelCase")]
49pub struct DebuggerCapabilities {
55pub struct DebuggerCapabilities {
56+ #[serde(skip_serializing_if = "Option::is_none")]
50 pub supports_configuration_done_request: Option<bool>,
57 pub supports_configuration_done_request: Option<bool>,
58+ #[serde(skip_serializing_if = "Option::is_none")]
51 pub supports_function_breakpoints: Option<bool>,
59 pub supports_function_breakpoints: Option<bool>,
60+ #[serde(skip_serializing_if = "Option::is_none")]
52 pub supports_conditional_breakpoints: Option<bool>,
61 pub supports_conditional_breakpoints: Option<bool>,
62+ #[serde(skip_serializing_if = "Option::is_none")]
53 pub supports_hit_conditional_breakpoints: Option<bool>,
63 pub supports_hit_conditional_breakpoints: Option<bool>,
64+ #[serde(skip_serializing_if = "Option::is_none")]
54 pub supports_evaluate_for_hovers: Option<bool>,
65 pub supports_evaluate_for_hovers: Option<bool>,
66+ #[serde(skip_serializing_if = "Option::is_none")]
55 pub supports_step_back: Option<bool>,
67 pub supports_step_back: Option<bool>,
68+ #[serde(skip_serializing_if = "Option::is_none")]
56 pub supports_set_variable: Option<bool>,
69 pub supports_set_variable: Option<bool>,
70+ #[serde(skip_serializing_if = "Option::is_none")]
57 pub supports_restart_frame: Option<bool>,
71 pub supports_restart_frame: Option<bool>,
72+ #[serde(skip_serializing_if = "Option::is_none")]
58 pub supports_goto_targets_request: Option<bool>,
73 pub supports_goto_targets_request: Option<bool>,
74+ #[serde(skip_serializing_if = "Option::is_none")]
59 pub supports_step_in_targets_request: Option<bool>,
75 pub supports_step_in_targets_request: Option<bool>,
76+ #[serde(skip_serializing_if = "Option::is_none")]
60 pub supports_completions_request: Option<bool>,
77 pub supports_completions_request: Option<bool>,
78+ #[serde(skip_serializing_if = "Option::is_none")]
61 pub supports_modules_request: Option<bool>,
79 pub supports_modules_request: Option<bool>,
80+ #[serde(skip_serializing_if = "Option::is_none")]
62 pub supports_restart_request: Option<bool>,
81 pub supports_restart_request: Option<bool>,
82+ #[serde(skip_serializing_if = "Option::is_none")]
63 pub supports_exception_options: Option<bool>,
83 pub supports_exception_options: Option<bool>,
84+ #[serde(skip_serializing_if = "Option::is_none")]
64 pub supports_value_formatting_options: Option<bool>,
85 pub supports_value_formatting_options: Option<bool>,
86+ #[serde(skip_serializing_if = "Option::is_none")]
65 pub supports_exception_info_request: Option<bool>,
87 pub supports_exception_info_request: Option<bool>,
88+ #[serde(skip_serializing_if = "Option::is_none")]
66 pub support_terminate_debuggee: Option<bool>,
89 pub support_terminate_debuggee: Option<bool>,
90+ #[serde(skip_serializing_if = "Option::is_none")]
67 pub support_suspend_debuggee: Option<bool>,
91 pub support_suspend_debuggee: Option<bool>,
92+ #[serde(skip_serializing_if = "Option::is_none")]
68 pub supports_delayed_stack_trace_loading: Option<bool>,
93 pub supports_delayed_stack_trace_loading: Option<bool>,
94+ #[serde(skip_serializing_if = "Option::is_none")]
69 pub supports_loaded_sources_request: Option<bool>,
95 pub supports_loaded_sources_request: Option<bool>,
96+ #[serde(skip_serializing_if = "Option::is_none")]
70 pub supports_log_points: Option<bool>,
97 pub supports_log_points: Option<bool>,
98+ #[serde(skip_serializing_if = "Option::is_none")]
71 pub supports_terminate_threads_request: Option<bool>,
99 pub supports_terminate_threads_request: Option<bool>,
100+ #[serde(skip_serializing_if = "Option::is_none")]
72 pub supports_set_expression: Option<bool>,
101 pub supports_set_expression: Option<bool>,
102+ #[serde(skip_serializing_if = "Option::is_none")]
73 pub supports_terminate_request: Option<bool>,
103 pub supports_terminate_request: Option<bool>,
104+ #[serde(skip_serializing_if = "Option::is_none")]
74 pub supports_data_breakpoints: Option<bool>,
105 pub supports_data_breakpoints: Option<bool>,
106+ #[serde(skip_serializing_if = "Option::is_none")]
75 pub supports_read_memory_request: Option<bool>,
107 pub supports_read_memory_request: Option<bool>,
108+ #[serde(skip_serializing_if = "Option::is_none")]
76 pub supports_write_memory_request: Option<bool>,
109 pub supports_write_memory_request: Option<bool>,
110+ #[serde(skip_serializing_if = "Option::is_none")]
77 pub supports_disassemble_request: Option<bool>,
111 pub supports_disassemble_request: Option<bool>,
112+ #[serde(skip_serializing_if = "Option::is_none")]
78 pub supports_cancel_request: Option<bool>,
113 pub supports_cancel_request: Option<bool>,
114+ #[serde(skip_serializing_if = "Option::is_none")]
79 pub supports_breakpoint_locations_request: Option<bool>,
115 pub supports_breakpoint_locations_request: Option<bool>,
116+ #[serde(skip_serializing_if = "Option::is_none")]
80 pub supports_clipboard_context: Option<bool>,
117 pub supports_clipboard_context: Option<bool>,
118+ #[serde(skip_serializing_if = "Option::is_none")]
81 pub supports_stepping_granularity: Option<bool>,
119 pub supports_stepping_granularity: Option<bool>,
120+ #[serde(skip_serializing_if = "Option::is_none")]
82 pub supports_instruction_breakpoints: Option<bool>,
121 pub supports_instruction_breakpoints: Option<bool>,
122+ #[serde(skip_serializing_if = "Option::is_none")]
83 pub supports_exception_filter_options: Option<bool>,
123 pub supports_exception_filter_options: Option<bool>,
124+ #[serde(skip_serializing_if = "Option::is_none")]
84 pub exception_breakpoint_filters: Option<Vec<ExceptionBreakpointsFilter>>,
125 pub exception_breakpoint_filters: Option<Vec<ExceptionBreakpointsFilter>>,
126+ #[serde(skip_serializing_if = "Option::is_none")]
85 pub completion_trigger_characters: Option<Vec<String>>,
127 pub completion_trigger_characters: Option<Vec<String>>,
128+ #[serde(skip_serializing_if = "Option::is_none")]
86 pub additional_module_columns: Option<Vec<ColumnDescriptor>>,
129 pub additional_module_columns: Option<Vec<ColumnDescriptor>>,
130+ #[serde(skip_serializing_if = "Option::is_none")]
87 pub supported_checksum_algorithms: Option<Vec<String>>,
131 pub supported_checksum_algorithms: Option<Vec<String>>,
@@ -97,13 +141,21 @@ pub struct Checksum {
97#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
141#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
98#[serde(rename_all = "camelCase")]
142#[serde(rename_all = "camelCase")]
99pub struct Source {
143pub struct Source {
144+ #[serde(skip_serializing_if = "Option::is_none")]
100 pub name: Option<String>,
145 pub name: Option<String>,
146+ #[serde(skip_serializing_if = "Option::is_none")]
101 pub path: Option<PathBuf>,
147 pub path: Option<PathBuf>,
148+ #[serde(skip_serializing_if = "Option::is_none")]
102 pub source_reference: Option<usize>,
149 pub source_reference: Option<usize>,
150+ #[serde(skip_serializing_if = "Option::is_none")]
103 pub presentation_hint: Option<String>,
151 pub presentation_hint: Option<String>,
152+ #[serde(skip_serializing_if = "Option::is_none")]
104 pub origin: Option<String>,
153 pub origin: Option<String>,
154+ #[serde(skip_serializing_if = "Option::is_none")]
105 pub sources: Option<Vec<Source>>,
155 pub sources: Option<Vec<Source>>,
156+ #[serde(skip_serializing_if = "Option::is_none")]
106 pub adapter_data: Option<Value>,
157 pub adapter_data: Option<Value>,
158+ #[serde(skip_serializing_if = "Option::is_none")]
107 pub checksums: Option<Vec<Checksum>>,
159 pub checksums: Option<Vec<Checksum>>,
@@ -111,36 +163,56 @@ pub struct Source {
111#[serde(rename_all = "camelCase")]
163#[serde(rename_all = "camelCase")]
112pub struct SourceBreakpoint {
164pub struct SourceBreakpoint {
113 pub line: usize,
165 pub line: usize,
166+ #[serde(skip_serializing_if = "Option::is_none")]
114 pub column: Option<usize>,
167 pub column: Option<usize>,
168+ #[serde(skip_serializing_if = "Option::is_none")]
115 pub condition: Option<String>,
169 pub condition: Option<String>,
170+ #[serde(skip_serializing_if = "Option::is_none")]
116 pub hit_condition: Option<String>,
171 pub hit_condition: Option<String>,
172+ #[serde(skip_serializing_if = "Option::is_none")]
117 pub log_message: Option<String>,
173 pub log_message: Option<String>,
120#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
176#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
121#[serde(rename_all = "camelCase")]
177#[serde(rename_all = "camelCase")]
122pub struct Breakpoint {
178pub struct Breakpoint {
179+ #[serde(skip_serializing_if = "Option::is_none")]
123 pub id: Option<usize>,
180 pub id: Option<usize>,
124 pub verified: bool,
181 pub verified: bool,
182+ #[serde(skip_serializing_if = "Option::is_none")]
125 pub message: Option<String>,
183 pub message: Option<String>,
184+ #[serde(skip_serializing_if = "Option::is_none")]
126 pub source: Option<Source>,
185 pub source: Option<Source>,
186+ #[serde(skip_serializing_if = "Option::is_none")]
127 pub line: Option<usize>,
187 pub line: Option<usize>,
188+ #[serde(skip_serializing_if = "Option::is_none")]
128 pub column: Option<usize>,
189 pub column: Option<usize>,
190+ #[serde(skip_serializing_if = "Option::is_none")]
129 pub end_line: Option<usize>,
191 pub end_line: Option<usize>,
192+ #[serde(skip_serializing_if = "Option::is_none")]
130 pub end_column: Option<usize>,
193 pub end_column: Option<usize>,
194+ #[serde(skip_serializing_if = "Option::is_none")]
131 pub instruction_reference: Option<String>,
195 pub instruction_reference: Option<String>,
196+ #[serde(skip_serializing_if = "Option::is_none")]
132 pub offset: Option<usize>,
197 pub offset: Option<usize>,
135#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
200#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
136#[serde(rename_all = "camelCase")]
201#[serde(rename_all = "camelCase")]
137pub struct StackFrameFormat {
202pub struct StackFrameFormat {
203+ #[serde(skip_serializing_if = "Option::is_none")]
138 pub parameters: Option<bool>,
204 pub parameters: Option<bool>,
205+ #[serde(skip_serializing_if = "Option::is_none")]
139 pub parameter_types: Option<bool>,
206 pub parameter_types: Option<bool>,
207+ #[serde(skip_serializing_if = "Option::is_none")]
140 pub parameter_names: Option<bool>,
208 pub parameter_names: Option<bool>,
209+ #[serde(skip_serializing_if = "Option::is_none")]
141 pub parameter_values: Option<bool>,
210 pub parameter_values: Option<bool>,
211+ #[serde(skip_serializing_if = "Option::is_none")]
142 pub line: Option<bool>,
212 pub line: Option<bool>,
213+ #[serde(skip_serializing_if = "Option::is_none")]
143 pub module: Option<bool>,
214 pub module: Option<bool>,
215+ #[serde(skip_serializing_if = "Option::is_none")]
144 pub include_all: Option<bool>,
216 pub include_all: Option<bool>,
@@ -149,14 +221,21 @@ pub struct StackFrameFormat {
149pub struct StackFrame {
221pub struct StackFrame {
150 pub id: usize,
222 pub id: usize,
151 pub name: String,
223 pub name: String,
224+ #[serde(skip_serializing_if = "Option::is_none")]
152 pub source: Option<Source>,
225 pub source: Option<Source>,
153 pub line: usize,
226 pub line: usize,
154 pub column: usize,
227 pub column: usize,
228+ #[serde(skip_serializing_if = "Option::is_none")]
155 pub end_line: Option<usize>,
229 pub end_line: Option<usize>,
230+ #[serde(skip_serializing_if = "Option::is_none")]
156 pub end_column: Option<usize>,
231 pub end_column: Option<usize>,
232+ #[serde(skip_serializing_if = "Option::is_none")]
157 pub can_restart: Option<bool>,
233 pub can_restart: Option<bool>,
234+ #[serde(skip_serializing_if = "Option::is_none")]
158 pub instruction_pointer_reference: Option<String>,
235 pub instruction_pointer_reference: Option<String>,
236+ #[serde(skip_serializing_if = "Option::is_none")]
159 pub module_id: Option<Value>,
237 pub module_id: Option<Value>,
238+ #[serde(skip_serializing_if = "Option::is_none")]
160 pub presentation_hint: Option<String>,
239 pub presentation_hint: Option<String>,
@@ -171,29 +250,41 @@ pub struct Thread {
171#[serde(rename_all = "camelCase")]
250#[serde(rename_all = "camelCase")]
172pub struct Scope {
251pub struct Scope {
173 pub name: String,
252 pub name: String,
253+ #[serde(skip_serializing_if = "Option::is_none")]
174 pub presentation_hint: Option<String>,
254 pub presentation_hint: Option<String>,
175 pub variables_reference: usize,
255 pub variables_reference: usize,
256+ #[serde(skip_serializing_if = "Option::is_none")]
176 pub named_variables: Option<usize>,
257 pub named_variables: Option<usize>,
258+ #[serde(skip_serializing_if = "Option::is_none")]
177 pub indexed_variables: Option<usize>,
259 pub indexed_variables: Option<usize>,
178 pub expensive: bool,
260 pub expensive: bool,
261+ #[serde(skip_serializing_if = "Option::is_none")]
179 pub source: Option<Source>,
262 pub source: Option<Source>,
263+ #[serde(skip_serializing_if = "Option::is_none")]
180 pub line: Option<usize>,
264 pub line: Option<usize>,
265+ #[serde(skip_serializing_if = "Option::is_none")]
181 pub column: Option<usize>,
266 pub column: Option<usize>,
267+ #[serde(skip_serializing_if = "Option::is_none")]
182 pub end_line: Option<usize>,
268 pub end_line: Option<usize>,
269+ #[serde(skip_serializing_if = "Option::is_none")]
183 pub end_column: Option<usize>,
270 pub end_column: Option<usize>,
186#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
273#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
187#[serde(rename_all = "camelCase")]
274#[serde(rename_all = "camelCase")]
188pub struct ValueFormat {
275pub struct ValueFormat {
276+ #[serde(skip_serializing_if = "Option::is_none")]
189 pub hex: Option<bool>,
277 pub hex: Option<bool>,
192#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
280#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
193#[serde(rename_all = "camelCase")]
281#[serde(rename_all = "camelCase")]
194pub struct VariablePresentationHint {
282pub struct VariablePresentationHint {
283+ #[serde(skip_serializing_if = "Option::is_none")]
195 pub kind: Option<String>,
284 pub kind: Option<String>,
285+ #[serde(skip_serializing_if = "Option::is_none")]
196 pub attributes: Option<Vec<String>>,
286 pub attributes: Option<Vec<String>>,
287+ #[serde(skip_serializing_if = "Option::is_none")]
197 pub visibility: Option<String>,
288 pub visibility: Option<String>,
@@ -202,13 +293,18 @@ pub struct VariablePresentationHint {
202pub struct Variable {
293pub struct Variable {
203 pub name: String,
294 pub name: String,
204 pub value: String,
295 pub value: String,
205− #[serde(rename = "type")]
296+ #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
206 pub ty: Option<String>,
297 pub ty: Option<String>,
298+ #[serde(skip_serializing_if = "Option::is_none")]
207 pub presentation_hint: Option<VariablePresentationHint>,
299 pub presentation_hint: Option<VariablePresentationHint>,
300+ #[serde(skip_serializing_if = "Option::is_none")]
208 pub evaluate_name: Option<String>,
301 pub evaluate_name: Option<String>,
209 pub variables_reference: usize,
302 pub variables_reference: usize,
303+ #[serde(skip_serializing_if = "Option::is_none")]
210 pub named_variables: Option<usize>,
304 pub named_variables: Option<usize>,
305+ #[serde(skip_serializing_if = "Option::is_none")]
211 pub indexed_variables: Option<usize>,
306 pub indexed_variables: Option<usize>,
307+ #[serde(skip_serializing_if = "Option::is_none")]
212 pub memory_reference: Option<String>,
308 pub memory_reference: Option<String>,
@@ -217,13 +313,21 @@ pub struct Variable {
217pub struct Module {
313pub struct Module {
218 pub id: String, // TODO: || number
314 pub id: String, // TODO: || number
219 pub name: String,
315 pub name: String,
316+ #[serde(skip_serializing_if = "Option::is_none")]
220 pub path: Option<PathBuf>,
317 pub path: Option<PathBuf>,
318+ #[serde(skip_serializing_if = "Option::is_none")]
221 pub is_optimized: Option<bool>,
319 pub is_optimized: Option<bool>,
320+ #[serde(skip_serializing_if = "Option::is_none")]
222 pub is_user_code: Option<bool>,
321 pub is_user_code: Option<bool>,
322+ #[serde(skip_serializing_if = "Option::is_none")]
223 pub version: Option<String>,
323 pub version: Option<String>,
324+ #[serde(skip_serializing_if = "Option::is_none")]
224 pub symbol_status: Option<String>,
325 pub symbol_status: Option<String>,
326+ #[serde(skip_serializing_if = "Option::is_none")]
225 pub symbol_file_path: Option<String>,
327 pub symbol_file_path: Option<String>,
328+ #[serde(skip_serializing_if = "Option::is_none")]
226 pub date_time_stamp: Option<String>,
329 pub date_time_stamp: Option<String>,
330+ #[serde(skip_serializing_if = "Option::is_none")]
227 pub address_range: Option<String>,
331 pub address_range: Option<String>,
@@ -232,22 +336,31 @@ pub mod requests {
232 #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
336 #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
233 #[serde(rename_all = "camelCase")]
337 #[serde(rename_all = "camelCase")]
234 pub struct InitializeArguments {
338 pub struct InitializeArguments {
235− #[serde(rename = "clientID")]
339+ #[serde(rename = "clientID", skip_serializing_if = "Option::is_none")]
236 pub client_id: Option<String>,
340 pub client_id: Option<String>,
341+ #[serde(skip_serializing_if = "Option::is_none")]
237 pub client_name: Option<String>,
342 pub client_name: Option<String>,
238 #[serde(rename = "adapterID")]
343 #[serde(rename = "adapterID")]
239 pub adapter_id: String,
344 pub adapter_id: String,
345+ #[serde(skip_serializing_if = "Option::is_none")]
240 pub locale: Option<String>,
346 pub locale: Option<String>,
241− #[serde(rename = "linesStartAt1")]
347+ #[serde(rename = "linesStartAt1", skip_serializing_if = "Option::is_none")]
242 pub lines_start_at_one: Option<bool>,
348 pub lines_start_at_one: Option<bool>,
243− #[serde(rename = "columnsStartAt1")]
349+ #[serde(rename = "columnsStartAt1", skip_serializing_if = "Option::is_none")]
244 pub columns_start_at_one: Option<bool>,
350 pub columns_start_at_one: Option<bool>,
351+ #[serde(skip_serializing_if = "Option::is_none")]
245 pub path_format: Option<String>,
352 pub path_format: Option<String>,
353+ #[serde(skip_serializing_if = "Option::is_none")]
246 pub supports_variable_type: Option<bool>,
354 pub supports_variable_type: Option<bool>,
355+ #[serde(skip_serializing_if = "Option::is_none")]
247 pub supports_variable_paging: Option<bool>,
356 pub supports_variable_paging: Option<bool>,
357+ #[serde(skip_serializing_if = "Option::is_none")]
248 pub supports_run_in_terminal_request: Option<bool>,
358 pub supports_run_in_terminal_request: Option<bool>,
359+ #[serde(skip_serializing_if = "Option::is_none")]
249 pub supports_memory_references: Option<bool>,
360 pub supports_memory_references: Option<bool>,
361+ #[serde(skip_serializing_if = "Option::is_none")]
250 pub supports_progress_reporting: Option<bool>,
362 pub supports_progress_reporting: Option<bool>,
363+ #[serde(skip_serializing_if = "Option::is_none")]
251 pub supports_invalidated_event: Option<bool>,
364 pub supports_invalidated_event: Option<bool>,
@@ -300,14 +413,17 @@ pub mod requests {
300 #[serde(rename_all = "camelCase")]
413 #[serde(rename_all = "camelCase")]
301 pub struct SetBreakpointsArguments {
414 pub struct SetBreakpointsArguments {
302 pub source: Source,
415 pub source: Source,
416+ #[serde(skip_serializing_if = "Option::is_none")]
303 pub breakpoints: Option<Vec<SourceBreakpoint>>,
417 pub breakpoints: Option<Vec<SourceBreakpoint>>,
304 // lines is deprecated
418 // lines is deprecated
419+ #[serde(skip_serializing_if = "Option::is_none")]
305 pub source_modified: Option<bool>,
420 pub source_modified: Option<bool>,
308 #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
423 #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
309 #[serde(rename_all = "camelCase")]
424 #[serde(rename_all = "camelCase")]
310 pub struct SetBreakpointsResponse {
425 pub struct SetBreakpointsResponse {
426+ #[serde(skip_serializing_if = "Option::is_none")]
311 pub breakpoints: Option<Vec<Breakpoint>>,
427 pub breakpoints: Option<Vec<Breakpoint>>,
@@ -329,6 +445,7 @@ pub mod requests {
329 #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
445 #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
330 #[serde(rename_all = "camelCase")]
446 #[serde(rename_all = "camelCase")]
331 pub struct ContinueResponse {
447 pub struct ContinueResponse {
448+ #[serde(skip_serializing_if = "Option::is_none")]
332 pub all_threads_continued: Option<bool>,
449 pub all_threads_continued: Option<bool>,
@@ -345,14 +462,18 @@ pub mod requests {
345 #[serde(rename_all = "camelCase")]
462 #[serde(rename_all = "camelCase")]
346 pub struct StackTraceArguments {
463 pub struct StackTraceArguments {
347 pub thread_id: ThreadId,
464 pub thread_id: ThreadId,
465+ #[serde(skip_serializing_if = "Option::is_none")]
348 pub start_frame: Option<usize>,
466 pub start_frame: Option<usize>,
467+ #[serde(skip_serializing_if = "Option::is_none")]
349 pub levels: Option<usize>,
468 pub levels: Option<usize>,
469+ #[serde(skip_serializing_if = "Option::is_none")]
350 pub format: Option<StackFrameFormat>,
470 pub format: Option<StackFrameFormat>,
353 #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
473 #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
354 #[serde(rename_all = "camelCase")]
474 #[serde(rename_all = "camelCase")]
355 pub struct StackTraceResponse {
475 pub struct StackTraceResponse {
476+ #[serde(skip_serializing_if = "Option::is_none")]
356 pub total_frames: Option<usize>,
477 pub total_frames: Option<usize>,
357 pub stack_frames: Vec<StackFrame>,
478 pub stack_frames: Vec<StackFrame>,
@@ -406,9 +527,13 @@ pub mod requests {
406 #[serde(rename_all = "camelCase")]
527 #[serde(rename_all = "camelCase")]
407 pub struct VariablesArguments {
528 pub struct VariablesArguments {
408 pub variables_reference: usize,
529 pub variables_reference: usize,
530+ #[serde(skip_serializing_if = "Option::is_none")]
409 pub filter: Option<String>,
531 pub filter: Option<String>,
532+ #[serde(skip_serializing_if = "Option::is_none")]
410 pub start: Option<usize>,
533 pub start: Option<usize>,
534+ #[serde(skip_serializing_if = "Option::is_none")]
411 pub count: Option<usize>,
535 pub count: Option<usize>,
536+ #[serde(skip_serializing_if = "Option::is_none")]
412 pub format: Option<ValueFormat>,
537 pub format: Option<ValueFormat>,
@@ -431,7 +556,9 @@ pub mod requests {
431 #[serde(rename_all = "camelCase")]
556 #[serde(rename_all = "camelCase")]
432 pub struct StepInArguments {
557 pub struct StepInArguments {
433 pub thread_id: ThreadId,
558 pub thread_id: ThreadId,
559+ #[serde(skip_serializing_if = "Option::is_none")]
434 pub target_id: Option<usize>,
560 pub target_id: Option<usize>,
561+ #[serde(skip_serializing_if = "Option::is_none")]
435 pub granularity: Option<String>,
562 pub granularity: Option<String>,
@@ -448,6 +575,7 @@ pub mod requests {
448 #[serde(rename_all = "camelCase")]
575 #[serde(rename_all = "camelCase")]
449 pub struct StepOutArguments {
576 pub struct StepOutArguments {
450 pub thread_id: ThreadId,
577 pub thread_id: ThreadId,
578+ #[serde(skip_serializing_if = "Option::is_none")]
451 pub granularity: Option<String>,
579 pub granularity: Option<String>,
@@ -464,6 +592,7 @@ pub mod requests {
464 #[serde(rename_all = "camelCase")]
592 #[serde(rename_all = "camelCase")]
465 pub struct NextArguments {
593 pub struct NextArguments {
466 pub thread_id: ThreadId,
594 pub thread_id: ThreadId,
595+ #[serde(skip_serializing_if = "Option::is_none")]
467 pub granularity: Option<String>,
596 pub granularity: Option<String>,
@@ -495,8 +624,11 @@ pub mod requests {
495 #[serde(rename_all = "camelCase")]
624 #[serde(rename_all = "camelCase")]
496 pub struct EvaluateArguments {
625 pub struct EvaluateArguments {
497 pub expression: String,
626 pub expression: String,
627+ #[serde(skip_serializing_if = "Option::is_none")]
498 pub frame_id: Option<usize>,
628 pub frame_id: Option<usize>,
629+ #[serde(skip_serializing_if = "Option::is_none")]
499 pub context: Option<String>,
630 pub context: Option<String>,
631+ #[serde(skip_serializing_if = "Option::is_none")]
500 pub format: Option<ValueFormat>,
632 pub format: Option<ValueFormat>,
@@ -504,12 +636,16 @@ pub mod requests {
504 #[serde(rename_all = "camelCase")]
636 #[serde(rename_all = "camelCase")]
505 pub struct EvaluateResponse {
637 pub struct EvaluateResponse {
506 pub result: String,
638 pub result: String,
507− #[serde(rename = "type")]
639+ #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
508 pub ty: Option<String>,
640 pub ty: Option<String>,
641+ #[serde(skip_serializing_if = "Option::is_none")]
509 pub presentation_hint: Option<VariablePresentationHint>,
642 pub presentation_hint: Option<VariablePresentationHint>,
510 pub variables_reference: usize,
643 pub variables_reference: usize,
644+ #[serde(skip_serializing_if = "Option::is_none")]
511 pub named_variables: Option<usize>,
645 pub named_variables: Option<usize>,
646+ #[serde(skip_serializing_if = "Option::is_none")]
512 pub indexed_variables: Option<usize>,
647 pub indexed_variables: Option<usize>,
648+ #[serde(skip_serializing_if = "Option::is_none")]
513 pub memory_reference: Option<String>,
649 pub memory_reference: Option<String>,
@@ -533,6 +669,7 @@ pub mod requests {
533 #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
669 #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
534 #[serde(rename_all = "camelCase")]
670 #[serde(rename_all = "camelCase")]
535 pub struct SetExceptionBreakpointsResponse {
671 pub struct SetExceptionBreakpointsResponse {
672+ #[serde(skip_serializing_if = "Option::is_none")]
536 pub breakpoints: Option<Vec<Breakpoint>>,
673 pub breakpoints: Option<Vec<Breakpoint>>,
@@ -550,17 +687,23 @@ pub mod requests {
550 #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
687 #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
551 #[serde(rename_all = "camelCase")]
688 #[serde(rename_all = "camelCase")]
552 pub struct RunInTerminalResponse {
689 pub struct RunInTerminalResponse {
690+ #[serde(skip_serializing_if = "Option::is_none")]
553 pub process_id: Option<u32>,
691 pub process_id: Option<u32>,
692+ #[serde(skip_serializing_if = "Option::is_none")]
554 pub shell_process_id: Option<u32>,
693 pub shell_process_id: Option<u32>,
557 #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
696 #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
558 #[serde(rename_all = "camelCase")]
697 #[serde(rename_all = "camelCase")]
559 pub struct RunInTerminalArguments {
698 pub struct RunInTerminalArguments {
699+ #[serde(skip_serializing_if = "Option::is_none")]
560 pub kind: Option<String>,
700 pub kind: Option<String>,
701+ #[serde(skip_serializing_if = "Option::is_none")]
561 pub title: Option<String>,
702 pub title: Option<String>,
703+ #[serde(skip_serializing_if = "Option::is_none")]
562 pub cwd: Option<String>,
704 pub cwd: Option<String>,
563 pub args: Vec<String>,
705 pub args: Vec<String>,
706+ #[serde(skip_serializing_if = "Option::is_none")]
564 pub env: Option<HashMap<String, Option<String>>>,
707 pub env: Option<HashMap<String, Option<String>>>,
@@ -607,11 +750,17 @@ pub mod events {
607 #[serde(rename_all = "camelCase")]
750 #[serde(rename_all = "camelCase")]
608 pub struct Stopped {
751 pub struct Stopped {
609 pub reason: String,
752 pub reason: String,
753+ #[serde(skip_serializing_if = "Option::is_none")]
610 pub description: Option<String>,
754 pub description: Option<String>,
755+ #[serde(skip_serializing_if = "Option::is_none")]
611 pub thread_id: Option<ThreadId>,
756 pub thread_id: Option<ThreadId>,
757+ #[serde(skip_serializing_if = "Option::is_none")]
612 pub preserve_focus_hint: Option<bool>,
758 pub preserve_focus_hint: Option<bool>,
759+ #[serde(skip_serializing_if = "Option::is_none")]
613 pub text: Option<String>,
760 pub text: Option<String>,
761+ #[serde(skip_serializing_if = "Option::is_none")]
614 pub all_threads_stopped: Option<bool>,
762 pub all_threads_stopped: Option<bool>,
763+ #[serde(skip_serializing_if = "Option::is_none")]
615 pub hit_breakpoint_ids: Option<Vec<usize>>,
764 pub hit_breakpoint_ids: Option<Vec<usize>>,
@@ -619,6 +768,7 @@ pub mod events {
619 #[serde(rename_all = "camelCase")]
768 #[serde(rename_all = "camelCase")]
620 pub struct Continued {
769 pub struct Continued {
621 pub thread_id: ThreadId,
770 pub thread_id: ThreadId,
771+ #[serde(skip_serializing_if = "Option::is_none")]
622 pub all_threads_continued: Option<bool>,
772 pub all_threads_continued: Option<bool>,
@@ -631,6 +781,7 @@ pub mod events {
631 #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
781 #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
632 #[serde(rename_all = "camelCase")]
782 #[serde(rename_all = "camelCase")]
633 pub struct Terminated {
783 pub struct Terminated {
784+ #[serde(skip_serializing_if = "Option::is_none")]
634 pub restart: Option<Value>,
785 pub restart: Option<Value>,
@@ -645,12 +796,19 @@ pub mod events {
645 #[serde(rename_all = "camelCase")]
796 #[serde(rename_all = "camelCase")]
646 pub struct Output {
797 pub struct Output {
647 pub output: String,
798 pub output: String,
799+ #[serde(skip_serializing_if = "Option::is_none")]
648 pub category: Option<String>,
800 pub category: Option<String>,
801+ #[serde(skip_serializing_if = "Option::is_none")]
649 pub group: Option<String>,
802 pub group: Option<String>,
803+ #[serde(skip_serializing_if = "Option::is_none")]
650 pub line: Option<usize>,
804 pub line: Option<usize>,
805+ #[serde(skip_serializing_if = "Option::is_none")]
651 pub column: Option<usize>,
806 pub column: Option<usize>,
807+ #[serde(skip_serializing_if = "Option::is_none")]
652 pub variables_reference: Option<usize>,
808 pub variables_reference: Option<usize>,
809+ #[serde(skip_serializing_if = "Option::is_none")]
653 pub source: Option<Source>,
810 pub source: Option<Source>,
811+ #[serde(skip_serializing_if = "Option::is_none")]
654 pub data: Option<Value>,
812 pub data: Option<Value>,
@@ -679,9 +837,13 @@ pub mod events {
679 #[serde(rename_all = "camelCase")]
837 #[serde(rename_all = "camelCase")]
680 pub struct Process {
838 pub struct Process {
681 pub name: String,
839 pub name: String,
840+ #[serde(skip_serializing_if = "Option::is_none")]
682 pub system_process_id: Option<usize>,
841 pub system_process_id: Option<usize>,
842+ #[serde(skip_serializing_if = "Option::is_none")]
683 pub is_local_process: Option<bool>,
843 pub is_local_process: Option<bool>,
844+ #[serde(skip_serializing_if = "Option::is_none")]
684 pub start_method: Option<String>, // TODO: use enum
845 pub start_method: Option<String>, // TODO: use enum
846+ #[serde(skip_serializing_if = "Option::is_none")]
685 pub pointer_size: Option<usize>,
847 pub pointer_size: Option<usize>,