1#![warn(clippy::all)]
3#![allow(unused_parens, unused_variables, unused_mut, unused_imports, unreachable_code)]
4
5pub mod natural {
6
7 #[doc = " A key/value pair in a `Dictionary`.\n"]
8 #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
9 pub struct DictionaryEntry {
10 pub key: ::std::string::String,
11
12 pub value: ::core::option::Option<::std::boxed::Box<crate::natural::DictionaryValue>>,
13 }
14
15 unsafe impl<___E> ::fidl_next::Encode<crate::wire::DictionaryEntry<'static>, ___E>
16 for DictionaryEntry
17 where
18 ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
19 ___E: ::fidl_next::Encoder,
20 {
21 #[inline]
22 fn encode(
23 self,
24 encoder_: &mut ___E,
25 out_: &mut ::core::mem::MaybeUninit<crate::wire::DictionaryEntry<'static>>,
26 _: (),
27 ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
28 ::fidl_next::munge! {
29 let crate::wire::DictionaryEntry {
30 key,
31 value,
32
33 } = out_;
34 }
35
36 ::fidl_next::Encode::encode(self.key, encoder_, key, 1024)?;
37
38 let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(key.as_mut_ptr()) };
39 ::fidl_next::Constrained::validate(_field, 1024)?;
40
41 ::fidl_next::Encode::encode(self.value, encoder_, value, ())?;
42
43 let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(value.as_mut_ptr()) };
44
45 Ok(())
46 }
47 }
48
49 unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::DictionaryEntry<'static>, ___E>
50 for &'a DictionaryEntry
51 where
52 ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
53 ___E: ::fidl_next::Encoder,
54 {
55 #[inline]
56 fn encode(
57 self,
58 encoder_: &mut ___E,
59 out_: &mut ::core::mem::MaybeUninit<crate::wire::DictionaryEntry<'static>>,
60 _: (),
61 ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
62 ::fidl_next::munge! {
63 let crate::wire::DictionaryEntry {
64
65 key,
66 value,
67
68 } = out_;
69 }
70
71 ::fidl_next::Encode::encode(&self.key, encoder_, key, 1024)?;
72
73 let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(key.as_mut_ptr()) };
74 ::fidl_next::Constrained::validate(_field, 1024)?;
75
76 ::fidl_next::Encode::encode(&self.value, encoder_, value, ())?;
77
78 let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(value.as_mut_ptr()) };
79
80 Ok(())
81 }
82 }
83
84 unsafe impl<___E>
85 ::fidl_next::EncodeOption<
86 ::fidl_next::wire::Box<'static, crate::wire::DictionaryEntry<'static>>,
87 ___E,
88 > for DictionaryEntry
89 where
90 ___E: ::fidl_next::Encoder + ?Sized,
91 DictionaryEntry: ::fidl_next::Encode<crate::wire::DictionaryEntry<'static>, ___E>,
92 {
93 #[inline]
94 fn encode_option(
95 this: ::core::option::Option<Self>,
96 encoder: &mut ___E,
97 out: &mut ::core::mem::MaybeUninit<
98 ::fidl_next::wire::Box<'static, crate::wire::DictionaryEntry<'static>>,
99 >,
100 _: (),
101 ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
102 if let Some(inner) = this {
103 ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
104 ::fidl_next::wire::Box::encode_present(out);
105 } else {
106 ::fidl_next::wire::Box::encode_absent(out);
107 }
108
109 Ok(())
110 }
111 }
112
113 unsafe impl<'a, ___E>
114 ::fidl_next::EncodeOption<
115 ::fidl_next::wire::Box<'static, crate::wire::DictionaryEntry<'static>>,
116 ___E,
117 > for &'a DictionaryEntry
118 where
119 ___E: ::fidl_next::Encoder + ?Sized,
120 &'a DictionaryEntry: ::fidl_next::Encode<crate::wire::DictionaryEntry<'static>, ___E>,
121 {
122 #[inline]
123 fn encode_option(
124 this: ::core::option::Option<Self>,
125 encoder: &mut ___E,
126 out: &mut ::core::mem::MaybeUninit<
127 ::fidl_next::wire::Box<'static, crate::wire::DictionaryEntry<'static>>,
128 >,
129 _: (),
130 ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
131 if let Some(inner) = this {
132 ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
133 ::fidl_next::wire::Box::encode_present(out);
134 } else {
135 ::fidl_next::wire::Box::encode_absent(out);
136 }
137
138 Ok(())
139 }
140 }
141
142 impl<'de> ::fidl_next::FromWire<crate::wire::DictionaryEntry<'de>> for DictionaryEntry {
143 #[inline]
144 fn from_wire(wire: crate::wire::DictionaryEntry<'de>) -> Self {
145 Self {
146 key: ::fidl_next::FromWire::from_wire(wire.key),
147
148 value: ::fidl_next::FromWire::from_wire(wire.value),
149 }
150 }
151 }
152
153 impl<'de> ::fidl_next::FromWireRef<crate::wire::DictionaryEntry<'de>> for DictionaryEntry {
154 #[inline]
155 fn from_wire_ref(wire: &crate::wire::DictionaryEntry<'de>) -> Self {
156 Self {
157 key: ::fidl_next::FromWireRef::from_wire_ref(&wire.key),
158
159 value: ::fidl_next::FromWireRef::from_wire_ref(&wire.value),
160 }
161 }
162 }
163
164 #[doc = " A dictionary is a sequence of key/value pairs.\n Keys must be unique and sorted in lexicographically increasing order.\n"]
165 #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
166 pub struct Dictionary {
167 pub entries: ::core::option::Option<::std::vec::Vec<crate::natural::DictionaryEntry>>,
168 }
169
170 impl Dictionary {
171 fn __max_ordinal(&self) -> usize {
172 if self.entries.is_some() {
173 return 1;
174 }
175
176 0
177 }
178 }
179
180 unsafe impl<___E> ::fidl_next::Encode<crate::wire::Dictionary<'static>, ___E> for Dictionary
181 where
182 ___E: ::fidl_next::Encoder + ?Sized,
183 {
184 #[inline]
185 fn encode(
186 mut self,
187 encoder: &mut ___E,
188 out: &mut ::core::mem::MaybeUninit<crate::wire::Dictionary<'static>>,
189 _: (),
190 ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
191 ::fidl_next::munge!(let crate::wire::Dictionary { table } = out);
192
193 let max_ord = self.__max_ordinal();
194
195 let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
196 ::fidl_next::Wire::zero_padding(&mut out);
197
198 let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
199 ::fidl_next::wire::Envelope,
200 >(encoder, max_ord);
201
202 for i in 1..=max_ord {
203 match i {
204 1 => {
205 if let Some(value) = self.entries.take() {
206 ::fidl_next::wire::Envelope::encode_value::<
207 ::fidl_next::wire::Vector<
208 'static,
209 crate::wire::DictionaryEntry<'static>,
210 >,
211 ___E,
212 >(
213 value, preallocated.encoder, &mut out, (1024, ())
214 )?;
215 } else {
216 ::fidl_next::wire::Envelope::encode_zero(&mut out)
217 }
218 }
219
220 _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
221 }
222 unsafe {
223 preallocated.write_next(out.assume_init_ref());
224 }
225 }
226
227 ::fidl_next::wire::Table::encode_len(table, max_ord);
228
229 Ok(())
230 }
231 }
232
233 unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::Dictionary<'static>, ___E> for &'a Dictionary
234 where
235 ___E: ::fidl_next::Encoder + ?Sized,
236 {
237 #[inline]
238 fn encode(
239 self,
240 encoder: &mut ___E,
241 out: &mut ::core::mem::MaybeUninit<crate::wire::Dictionary<'static>>,
242 _: (),
243 ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
244 ::fidl_next::munge!(let crate::wire::Dictionary { table } = out);
245
246 let max_ord = self.__max_ordinal();
247
248 let mut out = ::core::mem::MaybeUninit::<::fidl_next::wire::Envelope>::uninit();
249 ::fidl_next::Wire::zero_padding(&mut out);
250
251 let mut preallocated = ::fidl_next::EncoderExt::preallocate::<
252 ::fidl_next::wire::Envelope,
253 >(encoder, max_ord);
254
255 for i in 1..=max_ord {
256 match i {
257 1 => {
258 if let Some(value) = &self.entries {
259 ::fidl_next::wire::Envelope::encode_value::<
260 ::fidl_next::wire::Vector<
261 'static,
262 crate::wire::DictionaryEntry<'static>,
263 >,
264 ___E,
265 >(
266 value, preallocated.encoder, &mut out, (1024, ())
267 )?;
268 } else {
269 ::fidl_next::wire::Envelope::encode_zero(&mut out)
270 }
271 }
272
273 _ => ::fidl_next::wire::Envelope::encode_zero(&mut out),
274 }
275 unsafe {
276 preallocated.write_next(out.assume_init_ref());
277 }
278 }
279
280 ::fidl_next::wire::Table::encode_len(table, max_ord);
281
282 Ok(())
283 }
284 }
285
286 impl<'de> ::fidl_next::FromWire<crate::wire::Dictionary<'de>> for Dictionary {
287 #[inline]
288 fn from_wire(wire_: crate::wire::Dictionary<'de>) -> Self {
289 let wire_ = ::core::mem::ManuallyDrop::new(wire_);
290
291 let entries = wire_.table.get(1);
292
293 Self {
294
295
296 entries: entries.map(|envelope| ::fidl_next::FromWire::from_wire(
297 unsafe { envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::DictionaryEntry<'de>>>() }
298 )),
299
300 }
301 }
302 }
303
304 impl<'de> ::fidl_next::FromWireRef<crate::wire::Dictionary<'de>> for Dictionary {
305 #[inline]
306 fn from_wire_ref(wire: &crate::wire::Dictionary<'de>) -> Self {
307 Self {
308
309
310 entries: wire.table.get(1)
311 .map(|envelope| ::fidl_next::FromWireRef::from_wire_ref(
312 unsafe { envelope.deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::DictionaryEntry<'de>>>() }
313 )),
314
315 }
316 }
317 }
318
319 #[doc = " A dictionary\'s value is a string, a list of strings, or a list of objects.\n"]
320 #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
321 pub enum DictionaryValue {
322 Str(::std::string::String),
323
324 StrVec(::std::vec::Vec<::std::string::String>),
325
326 ObjVec(::std::vec::Vec<crate::natural::Dictionary>),
327
328 UnknownOrdinal_(u64),
329 }
330
331 impl DictionaryValue {
332 pub fn is_unknown(&self) -> bool {
333 #[allow(unreachable_patterns)]
334 match self {
335 Self::UnknownOrdinal_(_) => true,
336 _ => false,
337 }
338 }
339 }
340
341 unsafe impl<___E> ::fidl_next::Encode<crate::wire::DictionaryValue<'static>, ___E>
342 for DictionaryValue
343 where
344 ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
345 ___E: ::fidl_next::Encoder,
346 {
347 #[inline]
348 fn encode(
349 self,
350 encoder: &mut ___E,
351 out: &mut ::core::mem::MaybeUninit<crate::wire::DictionaryValue<'static>>,
352 _: (),
353 ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
354 ::fidl_next::munge!(let crate::wire::DictionaryValue { raw, _phantom: _ } = out);
355
356 match self {
357 Self::Str(value) => ::fidl_next::wire::Union::encode_as::<
358 ___E,
359 ::fidl_next::wire::String<'static>,
360 >(value, 1, encoder, raw, 32768)?,
361
362 Self::StrVec(value) => ::fidl_next::wire::Union::encode_as::<
363 ___E,
364 ::fidl_next::wire::Vector<'static, ::fidl_next::wire::String<'static>>,
365 >(value, 2, encoder, raw, (1024, 32768))?,
366
367 Self::ObjVec(value) => ::fidl_next::wire::Union::encode_as::<
368 ___E,
369 ::fidl_next::wire::Vector<'static, crate::wire::Dictionary<'static>>,
370 >(value, 3, encoder, raw, (1024, ()))?,
371
372 Self::UnknownOrdinal_(ordinal) => {
373 return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(ordinal as usize));
374 }
375 }
376
377 Ok(())
378 }
379 }
380
381 unsafe impl<'a, ___E> ::fidl_next::Encode<crate::wire::DictionaryValue<'static>, ___E>
382 for &'a DictionaryValue
383 where
384 ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
385 ___E: ::fidl_next::Encoder,
386 {
387 #[inline]
388 fn encode(
389 self,
390 encoder: &mut ___E,
391 out: &mut ::core::mem::MaybeUninit<crate::wire::DictionaryValue<'static>>,
392 _: (),
393 ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
394 ::fidl_next::munge!(let crate::wire::DictionaryValue { raw, _phantom: _ } = out);
395
396 match self {
397 DictionaryValue::Str(value) => ::fidl_next::wire::Union::encode_as::<
398 ___E,
399 ::fidl_next::wire::String<'static>,
400 >(value, 1, encoder, raw, 32768)?,
401
402 DictionaryValue::StrVec(value) => {
403 ::fidl_next::wire::Union::encode_as::<
404 ___E,
405 ::fidl_next::wire::Vector<'static, ::fidl_next::wire::String<'static>>,
406 >(value, 2, encoder, raw, (1024, 32768))?
407 }
408
409 DictionaryValue::ObjVec(value) => {
410 ::fidl_next::wire::Union::encode_as::<
411 ___E,
412 ::fidl_next::wire::Vector<'static, crate::wire::Dictionary<'static>>,
413 >(value, 3, encoder, raw, (1024, ()))?
414 }
415
416 DictionaryValue::UnknownOrdinal_(ordinal) => {
417 return Err(::fidl_next::EncodeError::UnknownUnionOrdinal(*ordinal as usize));
418 }
419 }
420
421 Ok(())
422 }
423 }
424
425 unsafe impl<___E>
426 ::fidl_next::EncodeOption<crate::wire_optional::DictionaryValue<'static>, ___E>
427 for DictionaryValue
428 where
429 ___E: ?Sized,
430 DictionaryValue: ::fidl_next::Encode<crate::wire::DictionaryValue<'static>, ___E>,
431 {
432 #[inline]
433 fn encode_option(
434 this: ::core::option::Option<Self>,
435 encoder: &mut ___E,
436 out: &mut ::core::mem::MaybeUninit<crate::wire_optional::DictionaryValue<'static>>,
437 _: (),
438 ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
439 ::fidl_next::munge!(let crate::wire_optional::DictionaryValue { raw, _phantom: _ } = &mut *out);
440
441 if let Some(inner) = this {
442 let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
443 ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
444 } else {
445 ::fidl_next::wire::Union::encode_absent(raw);
446 }
447
448 Ok(())
449 }
450 }
451
452 unsafe impl<'a, ___E>
453 ::fidl_next::EncodeOption<crate::wire_optional::DictionaryValue<'static>, ___E>
454 for &'a DictionaryValue
455 where
456 ___E: ?Sized,
457 &'a DictionaryValue: ::fidl_next::Encode<crate::wire::DictionaryValue<'static>, ___E>,
458 {
459 #[inline]
460 fn encode_option(
461 this: ::core::option::Option<Self>,
462 encoder: &mut ___E,
463 out: &mut ::core::mem::MaybeUninit<crate::wire_optional::DictionaryValue<'static>>,
464 _: (),
465 ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
466 ::fidl_next::munge!(let crate::wire_optional::DictionaryValue { raw, _phantom: _ } = &mut *out);
467
468 if let Some(inner) = this {
469 let value_out = unsafe { &mut *out.as_mut_ptr().cast() };
470 ::fidl_next::Encode::encode(inner, encoder, value_out, ())?;
471 } else {
472 ::fidl_next::wire::Union::encode_absent(raw);
473 }
474
475 Ok(())
476 }
477 }
478
479 impl<'de> ::fidl_next::FromWire<crate::wire::DictionaryValue<'de>> for DictionaryValue {
480 #[inline]
481 fn from_wire(wire: crate::wire::DictionaryValue<'de>) -> Self {
482 let wire = ::core::mem::ManuallyDrop::new(wire);
483 match wire.raw.ordinal() {
484 1 => Self::Str(::fidl_next::FromWire::from_wire(unsafe {
485 wire.raw.get().read_unchecked::<::fidl_next::wire::String<'de>>()
486 })),
487
488 2 => Self::StrVec(::fidl_next::FromWire::from_wire(unsafe {
489 wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>()
490 })),
491
492 3 => Self::ObjVec(::fidl_next::FromWire::from_wire(unsafe {
493 wire.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Dictionary<'de>>>()
494 })),
495
496 ord => return Self::UnknownOrdinal_(ord as u64),
497 }
498 }
499 }
500
501 impl<'de> ::fidl_next::FromWireRef<crate::wire::DictionaryValue<'de>> for DictionaryValue {
502 #[inline]
503 fn from_wire_ref(wire: &crate::wire::DictionaryValue<'de>) -> Self {
504 match wire.raw.ordinal() {
505 1 => Self::Str(::fidl_next::FromWireRef::from_wire_ref(unsafe {
506 wire.raw.get().deref_unchecked::<::fidl_next::wire::String<'de>>()
507 })),
508
509 2 => Self::StrVec(::fidl_next::FromWireRef::from_wire_ref(unsafe {
510 wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>()
511 })),
512
513 3 => Self::ObjVec(::fidl_next::FromWireRef::from_wire_ref(unsafe {
514 wire.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Dictionary<'de>>>()
515 })),
516
517 ord => return Self::UnknownOrdinal_(ord as u64),
518 }
519 }
520 }
521
522 impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::DictionaryValue<'de>>
523 for DictionaryValue
524 {
525 #[inline]
526 fn from_wire_option(
527 wire: crate::wire_optional::DictionaryValue<'de>,
528 ) -> ::core::option::Option<Self> {
529 if let Some(inner) = wire.into_option() {
530 Some(::fidl_next::FromWire::from_wire(inner))
531 } else {
532 None
533 }
534 }
535 }
536
537 impl<'de> ::fidl_next::FromWireOption<crate::wire_optional::DictionaryValue<'de>>
538 for Box<DictionaryValue>
539 {
540 #[inline]
541 fn from_wire_option(
542 wire: crate::wire_optional::DictionaryValue<'de>,
543 ) -> ::core::option::Option<Self> {
544 <DictionaryValue as ::fidl_next::FromWireOption<
545 crate::wire_optional::DictionaryValue<'de>,
546 >>::from_wire_option(wire)
547 .map(Box::new)
548 }
549 }
550
551 impl<'de> ::fidl_next::FromWireOptionRef<crate::wire_optional::DictionaryValue<'de>>
552 for Box<DictionaryValue>
553 {
554 #[inline]
555 fn from_wire_option_ref(
556 wire: &crate::wire_optional::DictionaryValue<'de>,
557 ) -> ::core::option::Option<Self> {
558 if let Some(inner) = wire.as_ref() {
559 Some(Box::new(::fidl_next::FromWireRef::from_wire_ref(inner)))
560 } else {
561 None
562 }
563 }
564 }
565}
566
567pub mod wire {
568
569 #[derive(Debug)]
571 #[repr(C)]
572 pub struct DictionaryEntry<'de> {
573 pub key: ::fidl_next::wire::String<'de>,
574
575 pub value: crate::wire_optional::DictionaryValue<'de>,
576 }
577
578 static_assertions::const_assert_eq!(std::mem::size_of::<DictionaryEntry<'_>>(), 32);
579 static_assertions::const_assert_eq!(std::mem::align_of::<DictionaryEntry<'_>>(), 8);
580
581 static_assertions::const_assert_eq!(std::mem::offset_of!(DictionaryEntry<'_>, key), 0);
582
583 static_assertions::const_assert_eq!(std::mem::offset_of!(DictionaryEntry<'_>, value), 16);
584
585 impl ::fidl_next::Constrained for DictionaryEntry<'_> {
586 type Constraint = ();
587
588 fn validate(
589 _: ::fidl_next::Slot<'_, Self>,
590 _: Self::Constraint,
591 ) -> Result<(), ::fidl_next::ValidationError> {
592 Ok(())
593 }
594 }
595
596 unsafe impl ::fidl_next::Wire for DictionaryEntry<'static> {
597 type Narrowed<'de> = DictionaryEntry<'de>;
598
599 #[inline]
600 fn zero_padding(out_: &mut ::core::mem::MaybeUninit<Self>) {
601 ::fidl_next::munge! {
602 let Self {
603
604 key,
605 value,
606
607 } = &mut *out_;
608 }
609
610 ::fidl_next::Wire::zero_padding(key);
611
612 ::fidl_next::Wire::zero_padding(value);
613 }
614 }
615
616 unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for DictionaryEntry<'de>
617 where
618 ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
619 ___D: ::fidl_next::Decoder<'de>,
620 {
621 fn decode(
622 slot_: ::fidl_next::Slot<'_, Self>,
623 decoder_: &mut ___D,
624 _: (),
625 ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
626 ::fidl_next::munge! {
627 let Self {
628
629 mut key,
630 mut value,
631
632 } = slot_;
633 }
634
635 let _field = key.as_mut();
636 ::fidl_next::Constrained::validate(_field, 1024)?;
637 ::fidl_next::Decode::decode(key.as_mut(), decoder_, 1024)?;
638
639 let key = unsafe { key.deref_unchecked() };
640
641 if key.len() > 1024 {
642 return Err(::fidl_next::DecodeError::VectorTooLong {
643 size: key.len() as u64,
644 limit: 1024,
645 });
646 }
647
648 let _field = value.as_mut();
649
650 ::fidl_next::Decode::decode(value.as_mut(), decoder_, ())?;
651
652 Ok(())
653 }
654 }
655
656 impl<'de> ::fidl_next::IntoNatural for DictionaryEntry<'de> {
657 type Natural = crate::natural::DictionaryEntry;
658 }
659
660 #[repr(C)]
662 pub struct Dictionary<'de> {
663 pub(crate) table: ::fidl_next::wire::Table<'de>,
664 }
665
666 impl<'de> Drop for Dictionary<'de> {
667 fn drop(&mut self) {
668 let _ = self.table.get(1)
669 .map(|envelope| unsafe {
670 envelope.read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::DictionaryEntry<'de>>>()
671 });
672 }
673 }
674
675 impl ::fidl_next::Constrained for Dictionary<'_> {
676 type Constraint = ();
677
678 fn validate(
679 _: ::fidl_next::Slot<'_, Self>,
680 _: Self::Constraint,
681 ) -> Result<(), ::fidl_next::ValidationError> {
682 Ok(())
683 }
684 }
685
686 unsafe impl ::fidl_next::Wire for Dictionary<'static> {
687 type Narrowed<'de> = Dictionary<'de>;
688
689 #[inline]
690 fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
691 ::fidl_next::munge!(let Self { table } = out);
692 ::fidl_next::wire::Table::zero_padding(table);
693 }
694 }
695
696 unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for Dictionary<'de>
697 where
698 ___D: ::fidl_next::Decoder<'de> + ?Sized,
699 {
700 fn decode(
701 slot: ::fidl_next::Slot<'_, Self>,
702 decoder: &mut ___D,
703 _: (),
704 ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
705 ::fidl_next::munge!(let Self { table } = slot);
706
707 ::fidl_next::wire::Table::decode_with(table, decoder, |ordinal, mut slot, decoder| {
708 match ordinal {
709 0 => unsafe { ::core::hint::unreachable_unchecked() },
710
711 1 => {
712 ::fidl_next::wire::Envelope::decode_as::<
713 ___D,
714 ::fidl_next::wire::Vector<'de, crate::wire::DictionaryEntry<'de>>,
715 >(slot.as_mut(), decoder, (1024, ()))?;
716
717 let value = unsafe {
718 slot
719 .deref_unchecked()
720 .deref_unchecked::<
721 ::fidl_next::wire::Vector<'_, crate::wire::DictionaryEntry<'_>>
722 >()
723 };
724
725 if value.len() > 1024 {
726 return Err(::fidl_next::DecodeError::VectorTooLong {
727 size: value.len() as u64,
728 limit: 1024,
729 });
730 }
731
732 Ok(())
733 }
734
735 _ => ::fidl_next::wire::Envelope::decode_unknown(slot, decoder),
736 }
737 })
738 }
739 }
740
741 impl<'de> Dictionary<'de> {
742 pub fn entries(
743 &self,
744 ) -> ::core::option::Option<
745 &::fidl_next::wire::Vector<'de, crate::wire::DictionaryEntry<'de>>,
746 > {
747 unsafe { Some(self.table.get(1)?.deref_unchecked()) }
748 }
749 }
750
751 impl<'de> ::core::fmt::Debug for Dictionary<'de> {
752 fn fmt(
753 &self,
754 f: &mut ::core::fmt::Formatter<'_>,
755 ) -> ::core::result::Result<(), ::core::fmt::Error> {
756 f.debug_struct("Dictionary").field("entries", &self.entries()).finish()
757 }
758 }
759
760 impl<'de> ::fidl_next::IntoNatural for Dictionary<'de> {
761 type Natural = crate::natural::Dictionary;
762 }
763
764 #[repr(transparent)]
766 pub struct DictionaryValue<'de> {
767 pub(crate) raw: ::fidl_next::wire::Union,
768 pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
769 }
770
771 impl<'de> Drop for DictionaryValue<'de> {
772 fn drop(&mut self) {
773 match self.raw.ordinal() {
774 1 => {
775 let _ = unsafe {
776 self.raw.get().read_unchecked::<::fidl_next::wire::String<'de>>()
777 };
778 }
779
780 2 => {
781 let _ = unsafe {
782 self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>>()
783 };
784 }
785
786 3 => {
787 let _ = unsafe {
788 self.raw.get().read_unchecked::<::fidl_next::wire::Vector<'de, crate::wire::Dictionary<'de>>>()
789 };
790 }
791
792 _ => (),
793 }
794 }
795 }
796
797 impl ::fidl_next::Constrained for DictionaryValue<'_> {
798 type Constraint = ();
799
800 fn validate(
801 _: ::fidl_next::Slot<'_, Self>,
802 _: Self::Constraint,
803 ) -> Result<(), ::fidl_next::ValidationError> {
804 Ok(())
805 }
806 }
807
808 unsafe impl ::fidl_next::Wire for DictionaryValue<'static> {
809 type Narrowed<'de> = DictionaryValue<'de>;
810
811 #[inline]
812 fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
813 ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
814 ::fidl_next::wire::Union::zero_padding(raw);
815 }
816 }
817
818 pub mod dictionary_value {
819 pub enum Ref<'de> {
820 Str(&'de ::fidl_next::wire::String<'de>),
821
822 StrVec(&'de ::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>),
823
824 ObjVec(&'de ::fidl_next::wire::Vector<'de, crate::wire::Dictionary<'de>>),
825
826 UnknownOrdinal_(u64),
827 }
828 }
829
830 impl<'de> DictionaryValue<'de> {
831 pub fn as_ref(&self) -> crate::wire::dictionary_value::Ref<'_> {
832 match self.raw.ordinal() {
833 1 => crate::wire::dictionary_value::Ref::Str(unsafe {
834 self.raw.get().deref_unchecked::<::fidl_next::wire::String<'_>>()
835 }),
836
837 2 => crate::wire::dictionary_value::Ref::StrVec(unsafe {
838 self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, ::fidl_next::wire::String<'_>>>()
839 }),
840
841 3 => crate::wire::dictionary_value::Ref::ObjVec(unsafe {
842 self.raw.get().deref_unchecked::<::fidl_next::wire::Vector<'_, crate::wire::Dictionary<'_>>>()
843 }),
844
845 unknown => crate::wire::dictionary_value::Ref::UnknownOrdinal_(unknown),
846 }
847 }
848 }
849
850 unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for DictionaryValue<'de>
851 where
852 ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
853 ___D: ::fidl_next::Decoder<'de>,
854 {
855 fn decode(
856 mut slot: ::fidl_next::Slot<'_, Self>,
857 decoder: &mut ___D,
858 _: (),
859 ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
860 ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
861 match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
862 1 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::String<'de>>(
863 raw, decoder, 32768,
864 )?,
865
866 2 => ::fidl_next::wire::Union::decode_as::<
867 ___D,
868 ::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>,
869 >(raw, decoder, (1024, 32768))?,
870
871 3 => ::fidl_next::wire::Union::decode_as::<
872 ___D,
873 ::fidl_next::wire::Vector<'de, crate::wire::Dictionary<'de>>,
874 >(raw, decoder, (1024, ()))?,
875
876 _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
877 }
878
879 Ok(())
880 }
881 }
882
883 impl<'de> ::core::fmt::Debug for DictionaryValue<'de> {
884 fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
885 match self.raw.ordinal() {
886 1 => unsafe {
887 self.raw.get().deref_unchecked::<::fidl_next::wire::String<'_>>().fmt(f)
888 },
889 2 => unsafe {
890 self.raw.get().deref_unchecked::<
891 ::fidl_next::wire::Vector<'_, ::fidl_next::wire::String<'_>>
892 >().fmt(f)
893 },
894 3 => unsafe {
895 self.raw.get().deref_unchecked::<
896 ::fidl_next::wire::Vector<'_, crate::wire::Dictionary<'_>>
897 >().fmt(f)
898 },
899 _ => unsafe { ::core::hint::unreachable_unchecked() },
900 }
901 }
902 }
903
904 impl<'de> ::fidl_next::IntoNatural for DictionaryValue<'de> {
905 type Natural = crate::natural::DictionaryValue;
906 }
907}
908
909pub mod wire_optional {
910
911 #[repr(transparent)]
912 pub struct DictionaryValue<'de> {
913 pub(crate) raw: ::fidl_next::wire::Union,
914 pub(crate) _phantom: ::core::marker::PhantomData<&'de mut [::fidl_next::Chunk]>,
915 }
916
917 impl ::fidl_next::Constrained for DictionaryValue<'_> {
918 type Constraint = ();
919
920 fn validate(
921 _: ::fidl_next::Slot<'_, Self>,
922 _: Self::Constraint,
923 ) -> Result<(), ::fidl_next::ValidationError> {
924 Ok(())
925 }
926 }
927
928 unsafe impl ::fidl_next::Wire for DictionaryValue<'static> {
929 type Narrowed<'de> = DictionaryValue<'de>;
930
931 #[inline]
932 fn zero_padding(out: &mut ::core::mem::MaybeUninit<Self>) {
933 ::fidl_next::munge!(let Self { raw, _phantom: _ } = out);
934 ::fidl_next::wire::Union::zero_padding(raw);
935 }
936 }
937
938 impl<'de> DictionaryValue<'de> {
939 pub fn is_some(&self) -> bool {
940 self.raw.is_some()
941 }
942
943 pub fn is_none(&self) -> bool {
944 self.raw.is_none()
945 }
946
947 pub fn as_ref(&self) -> ::core::option::Option<&crate::wire::DictionaryValue<'de>> {
948 if self.is_some() { Some(unsafe { &*(self as *const Self).cast() }) } else { None }
949 }
950
951 pub fn into_option(self) -> ::core::option::Option<crate::wire::DictionaryValue<'de>> {
952 if self.is_some() {
953 Some(crate::wire::DictionaryValue {
954 raw: self.raw,
955 _phantom: ::core::marker::PhantomData,
956 })
957 } else {
958 None
959 }
960 }
961 }
962
963 unsafe impl<'de, ___D> ::fidl_next::Decode<___D> for DictionaryValue<'de>
964 where
965 ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
966 ___D: ::fidl_next::Decoder<'de>,
967 {
968 fn decode(
969 mut slot: ::fidl_next::Slot<'_, Self>,
970 decoder: &mut ___D,
971 _: (),
972 ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
973 ::fidl_next::munge!(let Self { mut raw, _phantom: _ } = slot.as_mut());
974 match ::fidl_next::wire::Union::encoded_ordinal(raw.as_mut()) {
975 1 => ::fidl_next::wire::Union::decode_as::<___D, ::fidl_next::wire::String<'de>>(
976 raw, decoder, 32768,
977 )?,
978
979 2 => ::fidl_next::wire::Union::decode_as::<
980 ___D,
981 ::fidl_next::wire::Vector<'de, ::fidl_next::wire::String<'de>>,
982 >(raw, decoder, (1024, 32768))?,
983
984 3 => ::fidl_next::wire::Union::decode_as::<
985 ___D,
986 ::fidl_next::wire::Vector<'de, crate::wire::Dictionary<'de>>,
987 >(raw, decoder, (1024, ()))?,
988
989 0 => ::fidl_next::wire::Union::decode_absent(raw)?,
990 _ => ::fidl_next::wire::Union::decode_unknown(raw, decoder)?,
991 }
992
993 Ok(())
994 }
995 }
996
997 impl<'de> ::core::fmt::Debug for DictionaryValue<'de> {
998 fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
999 self.as_ref().fmt(f)
1000 }
1001 }
1002
1003 impl<'de> ::fidl_next::IntoNatural for DictionaryValue<'de> {
1004 type Natural = ::core::option::Option<crate::natural::DictionaryValue>;
1005 }
1006}
1007
1008pub mod generic {
1009
1010 pub struct DictionaryEntry<T0, T1> {
1011 pub key: T0,
1012
1013 pub value: T1,
1014 }
1015
1016 unsafe impl<___E, T0, T1> ::fidl_next::Encode<crate::wire::DictionaryEntry<'static>, ___E>
1017 for DictionaryEntry<T0, T1>
1018 where
1019 ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
1020 ___E: ::fidl_next::Encoder,
1021 T0: ::fidl_next::Encode<::fidl_next::wire::String<'static>, ___E>,
1022 T1: ::fidl_next::Encode<crate::wire_optional::DictionaryValue<'static>, ___E>,
1023 {
1024 #[inline]
1025 fn encode(
1026 self,
1027 encoder_: &mut ___E,
1028 out_: &mut ::core::mem::MaybeUninit<crate::wire::DictionaryEntry<'static>>,
1029 _: (),
1030 ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
1031 ::fidl_next::munge! {
1032 let crate::wire::DictionaryEntry {
1033
1034 key,
1035 value,
1036
1037 } = out_;
1038 }
1039
1040 ::fidl_next::Encode::encode(self.key, encoder_, key, 1024)?;
1041
1042 ::fidl_next::Encode::encode(self.value, encoder_, value, ())?;
1043
1044 Ok(())
1045 }
1046 }
1047}
1048
1049pub use self::natural::*;
1050
1051pub const MAX_KEY_LENGTH: u32 = 1024 as u32;
1052
1053pub const MAX_NUM_ENTRIES: u32 = 1024 as u32;
1054
1055pub const MAX_NUM_VALUE_ITEMS: u32 = 1024 as u32;
1056
1057pub const MAX_VALUE_LENGTH: u32 = 32768 as u32;
1058
1059pub mod compat {
1061
1062 impl ::fidl_next::CompatFrom<crate::DictionaryEntry> for ::fidl_fuchsia_data::DictionaryEntry {
1063 #[inline]
1064 fn compat_from(value: crate::DictionaryEntry) -> Self {
1065 Self {
1066 key: ::fidl_next::CompatFrom::compat_from(value.key),
1067
1068 value: ::fidl_next::CompatFrom::compat_from(value.value),
1069 }
1070 }
1071 }
1072
1073 impl ::fidl_next::CompatFrom<::fidl_fuchsia_data::DictionaryEntry> for crate::DictionaryEntry {
1074 #[inline]
1075 fn compat_from(value: ::fidl_fuchsia_data::DictionaryEntry) -> Self {
1076 Self {
1077 key: ::fidl_next::CompatFrom::compat_from(value.key),
1078
1079 value: ::fidl_next::CompatFrom::compat_from(value.value),
1080 }
1081 }
1082 }
1083
1084 impl ::fidl_next::CompatFrom<crate::Dictionary> for ::fidl_fuchsia_data::Dictionary {
1085 fn compat_from(value: crate::Dictionary) -> Self {
1086 Self {
1087 entries: ::fidl_next::CompatFrom::compat_from(value.entries),
1088
1089 __source_breaking: ::fidl::marker::SourceBreaking,
1090 }
1091 }
1092 }
1093
1094 impl ::fidl_next::CompatFrom<::fidl_fuchsia_data::Dictionary> for crate::Dictionary {
1095 fn compat_from(value: ::fidl_fuchsia_data::Dictionary) -> Self {
1096 Self { entries: ::fidl_next::CompatFrom::compat_from(value.entries) }
1097 }
1098 }
1099
1100 impl ::fidl_next::CompatFrom<crate::DictionaryValue> for ::fidl_fuchsia_data::DictionaryValue {
1101 fn compat_from(value: crate::DictionaryValue) -> Self {
1102 match value {
1103 crate::DictionaryValue::Str(value) => {
1104 Self::Str(::fidl_next::CompatFrom::compat_from(value))
1105 }
1106
1107 crate::DictionaryValue::StrVec(value) => {
1108 Self::StrVec(::fidl_next::CompatFrom::compat_from(value))
1109 }
1110
1111 crate::DictionaryValue::ObjVec(value) => {
1112 Self::ObjVec(::fidl_next::CompatFrom::compat_from(value))
1113 }
1114
1115 crate::DictionaryValue::UnknownOrdinal_(unknown_ordinal) => {
1116 Self::__SourceBreaking { unknown_ordinal }
1117 }
1118 }
1119 }
1120 }
1121
1122 impl ::fidl_next::CompatFrom<::fidl_fuchsia_data::DictionaryValue> for crate::DictionaryValue {
1123 fn compat_from(value: ::fidl_fuchsia_data::DictionaryValue) -> Self {
1124 match value {
1125 ::fidl_fuchsia_data::DictionaryValue::Str(value) => {
1126 Self::Str(::fidl_next::CompatFrom::compat_from(value))
1127 }
1128
1129 ::fidl_fuchsia_data::DictionaryValue::StrVec(value) => {
1130 Self::StrVec(::fidl_next::CompatFrom::compat_from(value))
1131 }
1132
1133 ::fidl_fuchsia_data::DictionaryValue::ObjVec(value) => {
1134 Self::ObjVec(::fidl_next::CompatFrom::compat_from(value))
1135 }
1136
1137 ::fidl_fuchsia_data::DictionaryValue::__SourceBreaking { unknown_ordinal } => {
1138 Self::UnknownOrdinal_(unknown_ordinal)
1139 }
1140 }
1141 }
1142 }
1143}