1use typenum::tarr;
2
3use crate::*;
4
5impl<A: ToOutput, B: ToOutput> ToOutput for (A, B) {
6 fn to_output(&self, output: &mut dyn Output) {
7 self.0.to_output(output);
8 self.1.to_output(output);
9 }
10}
11
12impl<Extra: 'static, A: Topological<Extra>, B: Topological<Extra>> Topological<Extra> for (A, B) {
13 fn accept_points(&self, visitor: &mut impl PointVisitor<Extra>) {
14 self.0.accept_points(visitor);
15 self.1.accept_points(visitor);
16 }
17}
18
19impl<A: Tagged, B: Tagged> Tagged for (A, B) {
20 const TAGS: Tags = Tags(&[], &[&A::TAGS, &B::TAGS]);
21}
22
23impl<Extra: 'static, A: Inline<Extra>, B: Object<Extra>> Object<Extra> for (A, B) {}
24
25impl<Extra: 'static, A: Inline<Extra>, B: Inline<Extra>> Inline<Extra> for (A, B) {}
26
27impl<A: ReflessInline, B: ReflessObject> ReflessObject for (A, B) {}
28
29impl<A: ReflessInline, B: ReflessInline> ReflessInline for (A, B) {}
30
31impl<A: Size, B: Size> Size for (A, B)
32where
33 tarr![A::Size, B::Size,]: typenum::FoldAdd<Output: Unsigned>,
34{
35 const SIZE: usize = A::SIZE + B::SIZE;
36
37 type Size = <tarr![A::Size, B::Size,] as typenum::FoldAdd>::Output;
38}
39
40impl<II: ParseInput, A: ParseInline<II>, B: Parse<II>> Parse<II> for (A, B) {
41 fn parse(mut input: II) -> crate::Result<Self> {
42 Ok((input.parse_inline()?, input.parse()?))
43 }
44}
45
46impl<II: ParseInput, A: ParseInline<II>, B: ParseInline<II>> ParseInline<II> for (A, B) {
47 fn parse_inline(input: &mut II) -> crate::Result<Self> {
48 Ok((input.parse_inline()?, input.parse_inline()?))
49 }
50}
51
52impl<A: MaybeHasNiche, B: MaybeHasNiche> MaybeHasNiche for (A, B) {
53 type MnArray = tarr![A::MnArray, B::MnArray,];
54}
55
56impl<A: ToOutput, B: ToOutput, C: ToOutput> ToOutput for (A, B, C) {
57 fn to_output(&self, output: &mut dyn Output) {
58 self.0.to_output(output);
59 self.1.to_output(output);
60 self.2.to_output(output);
61 }
62}
63
64impl<Extra: 'static, A: Topological<Extra>, B: Topological<Extra>, C: Topological<Extra>>
65 Topological<Extra> for (A, B, C)
66{
67 fn accept_points(&self, visitor: &mut impl PointVisitor<Extra>) {
68 self.0.accept_points(visitor);
69 self.1.accept_points(visitor);
70 self.2.accept_points(visitor);
71 }
72}
73
74impl<A: Tagged, B: Tagged, C: Tagged> Tagged for (A, B, C) {
75 const TAGS: Tags = Tags(&[], &[&A::TAGS, &B::TAGS, &C::TAGS]);
76}
77
78impl<Extra: 'static, A: Inline<Extra>, B: Inline<Extra>, C: Object<Extra>> Object<Extra>
79 for (A, B, C)
80{
81}
82
83impl<Extra: 'static, A: Inline<Extra>, B: Inline<Extra>, C: Inline<Extra>> Inline<Extra>
84 for (A, B, C)
85{
86}
87
88impl<A: ReflessInline, B: ReflessInline, C: ReflessObject> ReflessObject for (A, B, C) {}
89
90impl<A: ReflessInline, B: ReflessInline, C: ReflessInline> ReflessInline for (A, B, C) {}
91
92impl<A: Size, B: Size, C: Size> Size for (A, B, C)
93where
94 tarr![A::Size, B::Size, C::Size,]: typenum::FoldAdd<Output: Unsigned>,
95{
96 const SIZE: usize = A::SIZE + B::SIZE + C::SIZE;
97
98 type Size = <tarr![A::Size, B::Size, C::Size,] as typenum::FoldAdd>::Output;
99}
100
101impl<II: ParseInput, A: ParseInline<II>, B: ParseInline<II>, C: Parse<II>> Parse<II> for (A, B, C) {
102 fn parse(mut input: II) -> crate::Result<Self> {
103 Ok((input.parse_inline()?, input.parse_inline()?, input.parse()?))
104 }
105}
106
107impl<II: ParseInput, A: ParseInline<II>, B: ParseInline<II>, C: ParseInline<II>> ParseInline<II>
108 for (A, B, C)
109{
110 fn parse_inline(input: &mut II) -> crate::Result<Self> {
111 Ok((
112 input.parse_inline()?,
113 input.parse_inline()?,
114 input.parse_inline()?,
115 ))
116 }
117}
118
119impl<A: MaybeHasNiche, B: MaybeHasNiche, C: MaybeHasNiche> MaybeHasNiche for (A, B, C) {
120 type MnArray = tarr![A::MnArray, B::MnArray, C::MnArray,];
121}
122
123impl<A: ToOutput, B: ToOutput, C: ToOutput, D: ToOutput> ToOutput for (A, B, C, D) {
124 fn to_output(&self, output: &mut dyn Output) {
125 self.0.to_output(output);
126 self.1.to_output(output);
127 self.2.to_output(output);
128 self.3.to_output(output);
129 }
130}
131
132impl<
133 Extra: 'static,
134 A: Topological<Extra>,
135 B: Topological<Extra>,
136 C: Topological<Extra>,
137 D: Topological<Extra>,
138> Topological<Extra> for (A, B, C, D)
139{
140 fn accept_points(&self, visitor: &mut impl PointVisitor<Extra>) {
141 self.0.accept_points(visitor);
142 self.1.accept_points(visitor);
143 self.2.accept_points(visitor);
144 self.3.accept_points(visitor);
145 }
146}
147
148impl<A: Tagged, B: Tagged, C: Tagged, D: Tagged> Tagged for (A, B, C, D) {
149 const TAGS: Tags = Tags(&[], &[&A::TAGS, &B::TAGS, &C::TAGS, &D::TAGS]);
150}
151
152impl<Extra: 'static, A: Inline<Extra>, B: Inline<Extra>, C: Inline<Extra>, D: Object<Extra>>
153 Object<Extra> for (A, B, C, D)
154{
155}
156
157impl<Extra: 'static, A: Inline<Extra>, B: Inline<Extra>, C: Inline<Extra>, D: Inline<Extra>>
158 Inline<Extra> for (A, B, C, D)
159{
160}
161
162impl<A: ReflessInline, B: ReflessInline, C: ReflessInline, D: ReflessObject> ReflessObject
163 for (A, B, C, D)
164{
165}
166
167impl<A: ReflessInline, B: ReflessInline, C: ReflessInline, D: ReflessInline> ReflessInline
168 for (A, B, C, D)
169{
170}
171
172impl<A: Size, B: Size, C: Size, D: Size> Size for (A, B, C, D)
173where
174 tarr![A::Size, B::Size, C::Size, D::Size,]: typenum::FoldAdd<Output: Unsigned>,
175{
176 const SIZE: usize = A::SIZE + B::SIZE + C::SIZE + D::SIZE;
177
178 type Size = <tarr![A::Size, B::Size, C::Size, D::Size,] as typenum::FoldAdd>::Output;
179}
180
181impl<II: ParseInput, A: ParseInline<II>, B: ParseInline<II>, C: ParseInline<II>, D: Parse<II>>
182 Parse<II> for (A, B, C, D)
183{
184 fn parse(mut input: II) -> crate::Result<Self> {
185 Ok((
186 input.parse_inline()?,
187 input.parse_inline()?,
188 input.parse_inline()?,
189 input.parse()?,
190 ))
191 }
192}
193
194impl<II: ParseInput, A: ParseInline<II>, B: ParseInline<II>, C: ParseInline<II>, D: ParseInline<II>>
195 ParseInline<II> for (A, B, C, D)
196{
197 fn parse_inline(input: &mut II) -> crate::Result<Self> {
198 Ok((
199 input.parse_inline()?,
200 input.parse_inline()?,
201 input.parse_inline()?,
202 input.parse_inline()?,
203 ))
204 }
205}
206
207impl<A: MaybeHasNiche, B: MaybeHasNiche, C: MaybeHasNiche, D: MaybeHasNiche> MaybeHasNiche
208 for (A, B, C, D)
209{
210 type MnArray = tarr![A::MnArray, B::MnArray, C::MnArray, D::MnArray,];
211}
212
213impl<A: ToOutput, B: ToOutput, C: ToOutput, D: ToOutput, E: ToOutput> ToOutput for (A, B, C, D, E) {
214 fn to_output(&self, output: &mut dyn Output) {
215 self.0.to_output(output);
216 self.1.to_output(output);
217 self.2.to_output(output);
218 self.3.to_output(output);
219 self.4.to_output(output);
220 }
221}
222
223impl<
224 Extra: 'static,
225 A: Topological<Extra>,
226 B: Topological<Extra>,
227 C: Topological<Extra>,
228 D: Topological<Extra>,
229 E: Topological<Extra>,
230> Topological<Extra> for (A, B, C, D, E)
231{
232 fn accept_points(&self, visitor: &mut impl PointVisitor<Extra>) {
233 self.0.accept_points(visitor);
234 self.1.accept_points(visitor);
235 self.2.accept_points(visitor);
236 self.3.accept_points(visitor);
237 self.4.accept_points(visitor);
238 }
239}
240
241impl<A: Tagged, B: Tagged, C: Tagged, D: Tagged, E: Tagged> Tagged for (A, B, C, D, E) {
242 const TAGS: Tags = Tags(&[], &[&A::TAGS, &B::TAGS, &C::TAGS, &D::TAGS, &E::TAGS]);
243}
244
245impl<
246 Extra: 'static,
247 A: Inline<Extra>,
248 B: Inline<Extra>,
249 C: Inline<Extra>,
250 D: Inline<Extra>,
251 E: Object<Extra>,
252> Object<Extra> for (A, B, C, D, E)
253{
254}
255
256impl<
257 Extra: 'static,
258 A: Inline<Extra>,
259 B: Inline<Extra>,
260 C: Inline<Extra>,
261 D: Inline<Extra>,
262 E: Inline<Extra>,
263> Inline<Extra> for (A, B, C, D, E)
264{
265}
266
267impl<A: ReflessInline, B: ReflessInline, C: ReflessInline, D: ReflessInline, E: ReflessObject>
268 ReflessObject for (A, B, C, D, E)
269{
270}
271
272impl<A: ReflessInline, B: ReflessInline, C: ReflessInline, D: ReflessInline, E: ReflessInline>
273 ReflessInline for (A, B, C, D, E)
274{
275}
276
277impl<A: Size, B: Size, C: Size, D: Size, E: Size> Size for (A, B, C, D, E)
278where
279 tarr![A::Size, B::Size, C::Size, D::Size, E::Size,]: typenum::FoldAdd<Output: Unsigned>,
280{
281 const SIZE: usize = A::SIZE + B::SIZE + C::SIZE + D::SIZE + E::SIZE;
282
283 type Size = <tarr![A::Size, B::Size, C::Size, D::Size, E::Size,] as typenum::FoldAdd>::Output;
284}
285
286impl<
287 II: ParseInput,
288 A: ParseInline<II>,
289 B: ParseInline<II>,
290 C: ParseInline<II>,
291 D: ParseInline<II>,
292 E: Parse<II>,
293> Parse<II> for (A, B, C, D, E)
294{
295 fn parse(mut input: II) -> crate::Result<Self> {
296 Ok((
297 input.parse_inline()?,
298 input.parse_inline()?,
299 input.parse_inline()?,
300 input.parse_inline()?,
301 input.parse()?,
302 ))
303 }
304}
305
306impl<
307 II: ParseInput,
308 A: ParseInline<II>,
309 B: ParseInline<II>,
310 C: ParseInline<II>,
311 D: ParseInline<II>,
312 E: ParseInline<II>,
313> ParseInline<II> for (A, B, C, D, E)
314{
315 fn parse_inline(input: &mut II) -> crate::Result<Self> {
316 Ok((
317 input.parse_inline()?,
318 input.parse_inline()?,
319 input.parse_inline()?,
320 input.parse_inline()?,
321 input.parse_inline()?,
322 ))
323 }
324}
325
326impl<A: MaybeHasNiche, B: MaybeHasNiche, C: MaybeHasNiche, D: MaybeHasNiche, E: MaybeHasNiche>
327 MaybeHasNiche for (A, B, C, D, E)
328{
329 type MnArray = tarr![A::MnArray, B::MnArray, C::MnArray, D::MnArray, E::MnArray,];
330}
331
332impl<A: ToOutput, B: ToOutput, C: ToOutput, D: ToOutput, E: ToOutput, F: ToOutput> ToOutput
333 for (A, B, C, D, E, F)
334{
335 fn to_output(&self, output: &mut dyn Output) {
336 self.0.to_output(output);
337 self.1.to_output(output);
338 self.2.to_output(output);
339 self.3.to_output(output);
340 self.4.to_output(output);
341 self.5.to_output(output);
342 }
343}
344
345impl<
346 Extra: 'static,
347 A: Topological<Extra>,
348 B: Topological<Extra>,
349 C: Topological<Extra>,
350 D: Topological<Extra>,
351 E: Topological<Extra>,
352 F: Topological<Extra>,
353> Topological<Extra> for (A, B, C, D, E, F)
354{
355 fn accept_points(&self, visitor: &mut impl PointVisitor<Extra>) {
356 self.0.accept_points(visitor);
357 self.1.accept_points(visitor);
358 self.2.accept_points(visitor);
359 self.3.accept_points(visitor);
360 self.4.accept_points(visitor);
361 self.5.accept_points(visitor);
362 }
363}
364
365impl<A: Tagged, B: Tagged, C: Tagged, D: Tagged, E: Tagged, F: Tagged> Tagged
366 for (A, B, C, D, E, F)
367{
368 const TAGS: Tags = Tags(
369 &[],
370 &[&A::TAGS, &B::TAGS, &C::TAGS, &D::TAGS, &E::TAGS, &F::TAGS],
371 );
372}
373
374impl<
375 Extra: 'static,
376 A: Inline<Extra>,
377 B: Inline<Extra>,
378 C: Inline<Extra>,
379 D: Inline<Extra>,
380 E: Inline<Extra>,
381 F: Object<Extra>,
382> Object<Extra> for (A, B, C, D, E, F)
383{
384}
385
386impl<
387 Extra: 'static,
388 A: Inline<Extra>,
389 B: Inline<Extra>,
390 C: Inline<Extra>,
391 D: Inline<Extra>,
392 E: Inline<Extra>,
393 F: Inline<Extra>,
394> Inline<Extra> for (A, B, C, D, E, F)
395{
396}
397
398impl<
399 A: ReflessInline,
400 B: ReflessInline,
401 C: ReflessInline,
402 D: ReflessInline,
403 E: ReflessInline,
404 F: ReflessObject,
405> ReflessObject for (A, B, C, D, E, F)
406{
407}
408
409impl<
410 A: ReflessInline,
411 B: ReflessInline,
412 C: ReflessInline,
413 D: ReflessInline,
414 E: ReflessInline,
415 F: ReflessInline,
416> ReflessInline for (A, B, C, D, E, F)
417{
418}
419
420impl<A: Size, B: Size, C: Size, D: Size, E: Size, F: Size> Size for (A, B, C, D, E, F)
421where
422 tarr![A::Size, B::Size, C::Size, D::Size, E::Size, F::Size,]:
423 typenum::FoldAdd<Output: Unsigned>,
424{
425 const SIZE: usize = A::SIZE + B::SIZE + C::SIZE + D::SIZE + E::SIZE + F::SIZE;
426
427 type Size =
428 <tarr![A::Size, B::Size, C::Size, D::Size, E::Size, F::Size,] as typenum::FoldAdd>::Output;
429}
430
431impl<
432 II: ParseInput,
433 A: ParseInline<II>,
434 B: ParseInline<II>,
435 C: ParseInline<II>,
436 D: ParseInline<II>,
437 E: ParseInline<II>,
438 F: Parse<II>,
439> Parse<II> for (A, B, C, D, E, F)
440{
441 fn parse(mut input: II) -> crate::Result<Self> {
442 Ok((
443 input.parse_inline()?,
444 input.parse_inline()?,
445 input.parse_inline()?,
446 input.parse_inline()?,
447 input.parse_inline()?,
448 input.parse()?,
449 ))
450 }
451}
452
453impl<
454 II: ParseInput,
455 A: ParseInline<II>,
456 B: ParseInline<II>,
457 C: ParseInline<II>,
458 D: ParseInline<II>,
459 E: ParseInline<II>,
460 F: ParseInline<II>,
461> ParseInline<II> for (A, B, C, D, E, F)
462{
463 fn parse_inline(input: &mut II) -> crate::Result<Self> {
464 Ok((
465 input.parse_inline()?,
466 input.parse_inline()?,
467 input.parse_inline()?,
468 input.parse_inline()?,
469 input.parse_inline()?,
470 input.parse_inline()?,
471 ))
472 }
473}
474
475impl<
476 A: MaybeHasNiche,
477 B: MaybeHasNiche,
478 C: MaybeHasNiche,
479 D: MaybeHasNiche,
480 E: MaybeHasNiche,
481 F: MaybeHasNiche,
482> MaybeHasNiche for (A, B, C, D, E, F)
483{
484 type MnArray = tarr![
485 A::MnArray,
486 B::MnArray,
487 C::MnArray,
488 D::MnArray,
489 E::MnArray,
490 F::MnArray,
491 ];
492}
493
494impl<A: ToOutput, B: ToOutput, C: ToOutput, D: ToOutput, E: ToOutput, F: ToOutput, G: ToOutput>
495 ToOutput for (A, B, C, D, E, F, G)
496{
497 fn to_output(&self, output: &mut dyn Output) {
498 self.0.to_output(output);
499 self.1.to_output(output);
500 self.2.to_output(output);
501 self.3.to_output(output);
502 self.4.to_output(output);
503 self.5.to_output(output);
504 self.6.to_output(output);
505 }
506}
507
508impl<
509 Extra: 'static,
510 A: Topological<Extra>,
511 B: Topological<Extra>,
512 C: Topological<Extra>,
513 D: Topological<Extra>,
514 E: Topological<Extra>,
515 F: Topological<Extra>,
516 G: Topological<Extra>,
517> Topological<Extra> for (A, B, C, D, E, F, G)
518{
519 fn accept_points(&self, visitor: &mut impl PointVisitor<Extra>) {
520 self.0.accept_points(visitor);
521 self.1.accept_points(visitor);
522 self.2.accept_points(visitor);
523 self.3.accept_points(visitor);
524 self.4.accept_points(visitor);
525 self.5.accept_points(visitor);
526 self.6.accept_points(visitor);
527 }
528}
529
530impl<A: Tagged, B: Tagged, C: Tagged, D: Tagged, E: Tagged, F: Tagged, G: Tagged> Tagged
531 for (A, B, C, D, E, F, G)
532{
533 const TAGS: Tags = Tags(
534 &[],
535 &[
536 &A::TAGS,
537 &B::TAGS,
538 &C::TAGS,
539 &D::TAGS,
540 &E::TAGS,
541 &F::TAGS,
542 &G::TAGS,
543 ],
544 );
545}
546
547impl<
548 Extra: 'static,
549 A: Inline<Extra>,
550 B: Inline<Extra>,
551 C: Inline<Extra>,
552 D: Inline<Extra>,
553 E: Inline<Extra>,
554 F: Inline<Extra>,
555 G: Object<Extra>,
556> Object<Extra> for (A, B, C, D, E, F, G)
557{
558}
559
560impl<
561 Extra: 'static,
562 A: Inline<Extra>,
563 B: Inline<Extra>,
564 C: Inline<Extra>,
565 D: Inline<Extra>,
566 E: Inline<Extra>,
567 F: Inline<Extra>,
568 G: Inline<Extra>,
569> Inline<Extra> for (A, B, C, D, E, F, G)
570{
571}
572
573impl<
574 A: ReflessInline,
575 B: ReflessInline,
576 C: ReflessInline,
577 D: ReflessInline,
578 E: ReflessInline,
579 F: ReflessInline,
580 G: ReflessObject,
581> ReflessObject for (A, B, C, D, E, F, G)
582{
583}
584
585impl<
586 A: ReflessInline,
587 B: ReflessInline,
588 C: ReflessInline,
589 D: ReflessInline,
590 E: ReflessInline,
591 F: ReflessInline,
592 G: ReflessInline,
593> ReflessInline for (A, B, C, D, E, F, G)
594{
595}
596
597impl<A: Size, B: Size, C: Size, D: Size, E: Size, F: Size, G: Size> Size for (A, B, C, D, E, F, G)
598where
599 tarr![
600 A::Size,
601 B::Size,
602 C::Size,
603 D::Size,
604 E::Size,
605 F::Size,
606 G::Size,
607 ]: typenum::FoldAdd<Output: Unsigned>,
608{
609 const SIZE: usize = A::SIZE + B::SIZE + C::SIZE + D::SIZE + E::SIZE + F::SIZE + G::SIZE;
610
611 type Size = <tarr![
612 A::Size,
613 B::Size,
614 C::Size,
615 D::Size,
616 E::Size,
617 F::Size,
618 G::Size,
619 ] as typenum::FoldAdd>::Output;
620}
621
622impl<
623 II: ParseInput,
624 A: ParseInline<II>,
625 B: ParseInline<II>,
626 C: ParseInline<II>,
627 D: ParseInline<II>,
628 E: ParseInline<II>,
629 F: ParseInline<II>,
630 G: Parse<II>,
631> Parse<II> for (A, B, C, D, E, F, G)
632{
633 fn parse(mut input: II) -> crate::Result<Self> {
634 Ok((
635 input.parse_inline()?,
636 input.parse_inline()?,
637 input.parse_inline()?,
638 input.parse_inline()?,
639 input.parse_inline()?,
640 input.parse_inline()?,
641 input.parse()?,
642 ))
643 }
644}
645
646impl<
647 II: ParseInput,
648 A: ParseInline<II>,
649 B: ParseInline<II>,
650 C: ParseInline<II>,
651 D: ParseInline<II>,
652 E: ParseInline<II>,
653 F: ParseInline<II>,
654 G: ParseInline<II>,
655> ParseInline<II> for (A, B, C, D, E, F, G)
656{
657 fn parse_inline(input: &mut II) -> crate::Result<Self> {
658 Ok((
659 input.parse_inline()?,
660 input.parse_inline()?,
661 input.parse_inline()?,
662 input.parse_inline()?,
663 input.parse_inline()?,
664 input.parse_inline()?,
665 input.parse_inline()?,
666 ))
667 }
668}
669
670impl<
671 A: MaybeHasNiche,
672 B: MaybeHasNiche,
673 C: MaybeHasNiche,
674 D: MaybeHasNiche,
675 E: MaybeHasNiche,
676 F: MaybeHasNiche,
677 G: MaybeHasNiche,
678> MaybeHasNiche for (A, B, C, D, E, F, G)
679{
680 type MnArray = tarr![
681 A::MnArray,
682 B::MnArray,
683 C::MnArray,
684 D::MnArray,
685 E::MnArray,
686 F::MnArray,
687 G::MnArray,
688 ];
689}
690
691impl<
692 A: ToOutput,
693 B: ToOutput,
694 C: ToOutput,
695 D: ToOutput,
696 E: ToOutput,
697 F: ToOutput,
698 G: ToOutput,
699 H: ToOutput,
700> ToOutput for (A, B, C, D, E, F, G, H)
701{
702 fn to_output(&self, output: &mut dyn Output) {
703 self.0.to_output(output);
704 self.1.to_output(output);
705 self.2.to_output(output);
706 self.3.to_output(output);
707 self.4.to_output(output);
708 self.5.to_output(output);
709 self.6.to_output(output);
710 self.7.to_output(output);
711 }
712}
713
714impl<
715 Extra: 'static,
716 A: Topological<Extra>,
717 B: Topological<Extra>,
718 C: Topological<Extra>,
719 D: Topological<Extra>,
720 E: Topological<Extra>,
721 F: Topological<Extra>,
722 G: Topological<Extra>,
723 H: Topological<Extra>,
724> Topological<Extra> for (A, B, C, D, E, F, G, H)
725{
726 fn accept_points(&self, visitor: &mut impl PointVisitor<Extra>) {
727 self.0.accept_points(visitor);
728 self.1.accept_points(visitor);
729 self.2.accept_points(visitor);
730 self.3.accept_points(visitor);
731 self.4.accept_points(visitor);
732 self.5.accept_points(visitor);
733 self.6.accept_points(visitor);
734 self.7.accept_points(visitor);
735 }
736}
737
738impl<A: Tagged, B: Tagged, C: Tagged, D: Tagged, E: Tagged, F: Tagged, G: Tagged, H: Tagged> Tagged
739 for (A, B, C, D, E, F, G, H)
740{
741 const TAGS: Tags = Tags(
742 &[],
743 &[
744 &A::TAGS,
745 &B::TAGS,
746 &C::TAGS,
747 &D::TAGS,
748 &E::TAGS,
749 &F::TAGS,
750 &G::TAGS,
751 &H::TAGS,
752 ],
753 );
754}
755
756impl<
757 Extra: 'static,
758 A: Inline<Extra>,
759 B: Inline<Extra>,
760 C: Inline<Extra>,
761 D: Inline<Extra>,
762 E: Inline<Extra>,
763 F: Inline<Extra>,
764 G: Inline<Extra>,
765 H: Object<Extra>,
766> Object<Extra> for (A, B, C, D, E, F, G, H)
767{
768}
769
770impl<
771 Extra: 'static,
772 A: Inline<Extra>,
773 B: Inline<Extra>,
774 C: Inline<Extra>,
775 D: Inline<Extra>,
776 E: Inline<Extra>,
777 F: Inline<Extra>,
778 G: Inline<Extra>,
779 H: Inline<Extra>,
780> Inline<Extra> for (A, B, C, D, E, F, G, H)
781{
782}
783
784impl<
785 A: ReflessInline,
786 B: ReflessInline,
787 C: ReflessInline,
788 D: ReflessInline,
789 E: ReflessInline,
790 F: ReflessInline,
791 G: ReflessInline,
792 H: ReflessObject,
793> ReflessObject for (A, B, C, D, E, F, G, H)
794{
795}
796
797impl<
798 A: ReflessInline,
799 B: ReflessInline,
800 C: ReflessInline,
801 D: ReflessInline,
802 E: ReflessInline,
803 F: ReflessInline,
804 G: ReflessInline,
805 H: ReflessInline,
806> ReflessInline for (A, B, C, D, E, F, G, H)
807{
808}
809
810impl<A: Size, B: Size, C: Size, D: Size, E: Size, F: Size, G: Size, H: Size> Size
811 for (A, B, C, D, E, F, G, H)
812where
813 tarr![
814 A::Size,
815 B::Size,
816 C::Size,
817 D::Size,
818 E::Size,
819 F::Size,
820 G::Size,
821 H::Size,
822 ]: typenum::FoldAdd<Output: Unsigned>,
823{
824 const SIZE: usize =
825 A::SIZE + B::SIZE + C::SIZE + D::SIZE + E::SIZE + F::SIZE + G::SIZE + H::SIZE;
826
827 type Size = <tarr![
828 A::Size,
829 B::Size,
830 C::Size,
831 D::Size,
832 E::Size,
833 F::Size,
834 G::Size,
835 H::Size,
836 ] as typenum::FoldAdd>::Output;
837}
838
839impl<
840 II: ParseInput,
841 A: ParseInline<II>,
842 B: ParseInline<II>,
843 C: ParseInline<II>,
844 D: ParseInline<II>,
845 E: ParseInline<II>,
846 F: ParseInline<II>,
847 G: ParseInline<II>,
848 H: Parse<II>,
849> Parse<II> for (A, B, C, D, E, F, G, H)
850{
851 fn parse(mut input: II) -> crate::Result<Self> {
852 Ok((
853 input.parse_inline()?,
854 input.parse_inline()?,
855 input.parse_inline()?,
856 input.parse_inline()?,
857 input.parse_inline()?,
858 input.parse_inline()?,
859 input.parse_inline()?,
860 input.parse()?,
861 ))
862 }
863}
864
865impl<
866 II: ParseInput,
867 A: ParseInline<II>,
868 B: ParseInline<II>,
869 C: ParseInline<II>,
870 D: ParseInline<II>,
871 E: ParseInline<II>,
872 F: ParseInline<II>,
873 G: ParseInline<II>,
874 H: ParseInline<II>,
875> ParseInline<II> for (A, B, C, D, E, F, G, H)
876{
877 fn parse_inline(input: &mut II) -> crate::Result<Self> {
878 Ok((
879 input.parse_inline()?,
880 input.parse_inline()?,
881 input.parse_inline()?,
882 input.parse_inline()?,
883 input.parse_inline()?,
884 input.parse_inline()?,
885 input.parse_inline()?,
886 input.parse_inline()?,
887 ))
888 }
889}
890
891impl<
892 A: MaybeHasNiche,
893 B: MaybeHasNiche,
894 C: MaybeHasNiche,
895 D: MaybeHasNiche,
896 E: MaybeHasNiche,
897 F: MaybeHasNiche,
898 G: MaybeHasNiche,
899 H: MaybeHasNiche,
900> MaybeHasNiche for (A, B, C, D, E, F, G, H)
901{
902 type MnArray = tarr![
903 A::MnArray,
904 B::MnArray,
905 C::MnArray,
906 D::MnArray,
907 E::MnArray,
908 F::MnArray,
909 G::MnArray,
910 H::MnArray,
911 ];
912}
913
914impl<
915 A: ToOutput,
916 B: ToOutput,
917 C: ToOutput,
918 D: ToOutput,
919 E: ToOutput,
920 F: ToOutput,
921 G: ToOutput,
922 H: ToOutput,
923 I: ToOutput,
924> ToOutput for (A, B, C, D, E, F, G, H, I)
925{
926 fn to_output(&self, output: &mut dyn Output) {
927 self.0.to_output(output);
928 self.1.to_output(output);
929 self.2.to_output(output);
930 self.3.to_output(output);
931 self.4.to_output(output);
932 self.5.to_output(output);
933 self.6.to_output(output);
934 self.7.to_output(output);
935 self.8.to_output(output);
936 }
937}
938
939impl<
940 Extra: 'static,
941 A: Topological<Extra>,
942 B: Topological<Extra>,
943 C: Topological<Extra>,
944 D: Topological<Extra>,
945 E: Topological<Extra>,
946 F: Topological<Extra>,
947 G: Topological<Extra>,
948 H: Topological<Extra>,
949 I: Topological<Extra>,
950> Topological<Extra> for (A, B, C, D, E, F, G, H, I)
951{
952 fn accept_points(&self, visitor: &mut impl PointVisitor<Extra>) {
953 self.0.accept_points(visitor);
954 self.1.accept_points(visitor);
955 self.2.accept_points(visitor);
956 self.3.accept_points(visitor);
957 self.4.accept_points(visitor);
958 self.5.accept_points(visitor);
959 self.6.accept_points(visitor);
960 self.7.accept_points(visitor);
961 self.8.accept_points(visitor);
962 }
963}
964
965impl<
966 A: Tagged,
967 B: Tagged,
968 C: Tagged,
969 D: Tagged,
970 E: Tagged,
971 F: Tagged,
972 G: Tagged,
973 H: Tagged,
974 I: Tagged,
975> Tagged for (A, B, C, D, E, F, G, H, I)
976{
977 const TAGS: Tags = Tags(
978 &[],
979 &[
980 &A::TAGS,
981 &B::TAGS,
982 &C::TAGS,
983 &D::TAGS,
984 &E::TAGS,
985 &F::TAGS,
986 &G::TAGS,
987 &H::TAGS,
988 &I::TAGS,
989 ],
990 );
991}
992
993impl<
994 Extra: 'static,
995 A: Inline<Extra>,
996 B: Inline<Extra>,
997 C: Inline<Extra>,
998 D: Inline<Extra>,
999 E: Inline<Extra>,
1000 F: Inline<Extra>,
1001 G: Inline<Extra>,
1002 H: Inline<Extra>,
1003 I: Object<Extra>,
1004> Object<Extra> for (A, B, C, D, E, F, G, H, I)
1005{
1006}
1007
1008impl<
1009 Extra: 'static,
1010 A: Inline<Extra>,
1011 B: Inline<Extra>,
1012 C: Inline<Extra>,
1013 D: Inline<Extra>,
1014 E: Inline<Extra>,
1015 F: Inline<Extra>,
1016 G: Inline<Extra>,
1017 H: Inline<Extra>,
1018 I: Inline<Extra>,
1019> Inline<Extra> for (A, B, C, D, E, F, G, H, I)
1020{
1021}
1022
1023impl<
1024 A: ReflessInline,
1025 B: ReflessInline,
1026 C: ReflessInline,
1027 D: ReflessInline,
1028 E: ReflessInline,
1029 F: ReflessInline,
1030 G: ReflessInline,
1031 H: ReflessInline,
1032 I: ReflessObject,
1033> ReflessObject for (A, B, C, D, E, F, G, H, I)
1034{
1035}
1036
1037impl<
1038 A: ReflessInline,
1039 B: ReflessInline,
1040 C: ReflessInline,
1041 D: ReflessInline,
1042 E: ReflessInline,
1043 F: ReflessInline,
1044 G: ReflessInline,
1045 H: ReflessInline,
1046 I: ReflessInline,
1047> ReflessInline for (A, B, C, D, E, F, G, H, I)
1048{
1049}
1050
1051impl<A: Size, B: Size, C: Size, D: Size, E: Size, F: Size, G: Size, H: Size, I: Size> Size
1052 for (A, B, C, D, E, F, G, H, I)
1053where
1054 tarr![
1055 A::Size,
1056 B::Size,
1057 C::Size,
1058 D::Size,
1059 E::Size,
1060 F::Size,
1061 G::Size,
1062 H::Size,
1063 I::Size,
1064 ]: typenum::FoldAdd<Output: Unsigned>,
1065{
1066 const SIZE: usize =
1067 A::SIZE + B::SIZE + C::SIZE + D::SIZE + E::SIZE + F::SIZE + G::SIZE + H::SIZE + I::SIZE;
1068
1069 type Size = <tarr![
1070 A::Size,
1071 B::Size,
1072 C::Size,
1073 D::Size,
1074 E::Size,
1075 F::Size,
1076 G::Size,
1077 H::Size,
1078 I::Size,
1079 ] as typenum::FoldAdd>::Output;
1080}
1081
1082impl<
1083 II: ParseInput,
1084 A: ParseInline<II>,
1085 B: ParseInline<II>,
1086 C: ParseInline<II>,
1087 D: ParseInline<II>,
1088 E: ParseInline<II>,
1089 F: ParseInline<II>,
1090 G: ParseInline<II>,
1091 H: ParseInline<II>,
1092 I: Parse<II>,
1093> Parse<II> for (A, B, C, D, E, F, G, H, I)
1094{
1095 fn parse(mut input: II) -> crate::Result<Self> {
1096 Ok((
1097 input.parse_inline()?,
1098 input.parse_inline()?,
1099 input.parse_inline()?,
1100 input.parse_inline()?,
1101 input.parse_inline()?,
1102 input.parse_inline()?,
1103 input.parse_inline()?,
1104 input.parse_inline()?,
1105 input.parse()?,
1106 ))
1107 }
1108}
1109
1110impl<
1111 II: ParseInput,
1112 A: ParseInline<II>,
1113 B: ParseInline<II>,
1114 C: ParseInline<II>,
1115 D: ParseInline<II>,
1116 E: ParseInline<II>,
1117 F: ParseInline<II>,
1118 G: ParseInline<II>,
1119 H: ParseInline<II>,
1120 I: ParseInline<II>,
1121> ParseInline<II> for (A, B, C, D, E, F, G, H, I)
1122{
1123 fn parse_inline(input: &mut II) -> crate::Result<Self> {
1124 Ok((
1125 input.parse_inline()?,
1126 input.parse_inline()?,
1127 input.parse_inline()?,
1128 input.parse_inline()?,
1129 input.parse_inline()?,
1130 input.parse_inline()?,
1131 input.parse_inline()?,
1132 input.parse_inline()?,
1133 input.parse_inline()?,
1134 ))
1135 }
1136}
1137
1138impl<
1139 A: MaybeHasNiche,
1140 B: MaybeHasNiche,
1141 C: MaybeHasNiche,
1142 D: MaybeHasNiche,
1143 E: MaybeHasNiche,
1144 F: MaybeHasNiche,
1145 G: MaybeHasNiche,
1146 H: MaybeHasNiche,
1147 I: MaybeHasNiche,
1148> MaybeHasNiche for (A, B, C, D, E, F, G, H, I)
1149{
1150 type MnArray = tarr![
1151 A::MnArray,
1152 B::MnArray,
1153 C::MnArray,
1154 D::MnArray,
1155 E::MnArray,
1156 F::MnArray,
1157 G::MnArray,
1158 H::MnArray,
1159 I::MnArray,
1160 ];
1161}
1162
1163impl<
1164 A: ToOutput,
1165 B: ToOutput,
1166 C: ToOutput,
1167 D: ToOutput,
1168 E: ToOutput,
1169 F: ToOutput,
1170 G: ToOutput,
1171 H: ToOutput,
1172 I: ToOutput,
1173 J: ToOutput,
1174> ToOutput for (A, B, C, D, E, F, G, H, I, J)
1175{
1176 fn to_output(&self, output: &mut dyn Output) {
1177 self.0.to_output(output);
1178 self.1.to_output(output);
1179 self.2.to_output(output);
1180 self.3.to_output(output);
1181 self.4.to_output(output);
1182 self.5.to_output(output);
1183 self.6.to_output(output);
1184 self.7.to_output(output);
1185 self.8.to_output(output);
1186 self.9.to_output(output);
1187 }
1188}
1189
1190impl<
1191 Extra: 'static,
1192 A: Topological<Extra>,
1193 B: Topological<Extra>,
1194 C: Topological<Extra>,
1195 D: Topological<Extra>,
1196 E: Topological<Extra>,
1197 F: Topological<Extra>,
1198 G: Topological<Extra>,
1199 H: Topological<Extra>,
1200 I: Topological<Extra>,
1201 J: Topological<Extra>,
1202> Topological<Extra> for (A, B, C, D, E, F, G, H, I, J)
1203{
1204 fn accept_points(&self, visitor: &mut impl PointVisitor<Extra>) {
1205 self.0.accept_points(visitor);
1206 self.1.accept_points(visitor);
1207 self.2.accept_points(visitor);
1208 self.3.accept_points(visitor);
1209 self.4.accept_points(visitor);
1210 self.5.accept_points(visitor);
1211 self.6.accept_points(visitor);
1212 self.7.accept_points(visitor);
1213 self.8.accept_points(visitor);
1214 self.9.accept_points(visitor);
1215 }
1216}
1217
1218impl<
1219 A: Tagged,
1220 B: Tagged,
1221 C: Tagged,
1222 D: Tagged,
1223 E: Tagged,
1224 F: Tagged,
1225 G: Tagged,
1226 H: Tagged,
1227 I: Tagged,
1228 J: Tagged,
1229> Tagged for (A, B, C, D, E, F, G, H, I, J)
1230{
1231 const TAGS: Tags = Tags(
1232 &[],
1233 &[
1234 &A::TAGS,
1235 &B::TAGS,
1236 &C::TAGS,
1237 &D::TAGS,
1238 &E::TAGS,
1239 &F::TAGS,
1240 &G::TAGS,
1241 &H::TAGS,
1242 &I::TAGS,
1243 &J::TAGS,
1244 ],
1245 );
1246}
1247
1248impl<
1249 Extra: 'static,
1250 A: Inline<Extra>,
1251 B: Inline<Extra>,
1252 C: Inline<Extra>,
1253 D: Inline<Extra>,
1254 E: Inline<Extra>,
1255 F: Inline<Extra>,
1256 G: Inline<Extra>,
1257 H: Inline<Extra>,
1258 I: Inline<Extra>,
1259 J: Object<Extra>,
1260> Object<Extra> for (A, B, C, D, E, F, G, H, I, J)
1261{
1262}
1263
1264impl<
1265 Extra: 'static,
1266 A: Inline<Extra>,
1267 B: Inline<Extra>,
1268 C: Inline<Extra>,
1269 D: Inline<Extra>,
1270 E: Inline<Extra>,
1271 F: Inline<Extra>,
1272 G: Inline<Extra>,
1273 H: Inline<Extra>,
1274 I: Inline<Extra>,
1275 J: Inline<Extra>,
1276> Inline<Extra> for (A, B, C, D, E, F, G, H, I, J)
1277{
1278}
1279
1280impl<
1281 A: ReflessInline,
1282 B: ReflessInline,
1283 C: ReflessInline,
1284 D: ReflessInline,
1285 E: ReflessInline,
1286 F: ReflessInline,
1287 G: ReflessInline,
1288 H: ReflessInline,
1289 I: ReflessInline,
1290 J: ReflessObject,
1291> ReflessObject for (A, B, C, D, E, F, G, H, I, J)
1292{
1293}
1294
1295impl<
1296 A: ReflessInline,
1297 B: ReflessInline,
1298 C: ReflessInline,
1299 D: ReflessInline,
1300 E: ReflessInline,
1301 F: ReflessInline,
1302 G: ReflessInline,
1303 H: ReflessInline,
1304 I: ReflessInline,
1305 J: ReflessInline,
1306> ReflessInline for (A, B, C, D, E, F, G, H, I, J)
1307{
1308}
1309
1310impl<A: Size, B: Size, C: Size, D: Size, E: Size, F: Size, G: Size, H: Size, I: Size, J: Size> Size
1311 for (A, B, C, D, E, F, G, H, I, J)
1312where
1313 tarr![
1314 A::Size,
1315 B::Size,
1316 C::Size,
1317 D::Size,
1318 E::Size,
1319 F::Size,
1320 G::Size,
1321 H::Size,
1322 I::Size,
1323 J::Size,
1324 ]: typenum::FoldAdd<Output: Unsigned>,
1325{
1326 const SIZE: usize = A::SIZE
1327 + B::SIZE
1328 + C::SIZE
1329 + D::SIZE
1330 + E::SIZE
1331 + F::SIZE
1332 + G::SIZE
1333 + H::SIZE
1334 + I::SIZE
1335 + J::SIZE;
1336
1337 type Size = <tarr![
1338 A::Size,
1339 B::Size,
1340 C::Size,
1341 D::Size,
1342 E::Size,
1343 F::Size,
1344 G::Size,
1345 H::Size,
1346 I::Size,
1347 J::Size,
1348 ] as typenum::FoldAdd>::Output;
1349}
1350
1351impl<
1352 II: ParseInput,
1353 A: ParseInline<II>,
1354 B: ParseInline<II>,
1355 C: ParseInline<II>,
1356 D: ParseInline<II>,
1357 E: ParseInline<II>,
1358 F: ParseInline<II>,
1359 G: ParseInline<II>,
1360 H: ParseInline<II>,
1361 I: ParseInline<II>,
1362 J: Parse<II>,
1363> Parse<II> for (A, B, C, D, E, F, G, H, I, J)
1364{
1365 fn parse(mut input: II) -> crate::Result<Self> {
1366 Ok((
1367 input.parse_inline()?,
1368 input.parse_inline()?,
1369 input.parse_inline()?,
1370 input.parse_inline()?,
1371 input.parse_inline()?,
1372 input.parse_inline()?,
1373 input.parse_inline()?,
1374 input.parse_inline()?,
1375 input.parse_inline()?,
1376 input.parse()?,
1377 ))
1378 }
1379}
1380
1381impl<
1382 II: ParseInput,
1383 A: ParseInline<II>,
1384 B: ParseInline<II>,
1385 C: ParseInline<II>,
1386 D: ParseInline<II>,
1387 E: ParseInline<II>,
1388 F: ParseInline<II>,
1389 G: ParseInline<II>,
1390 H: ParseInline<II>,
1391 I: ParseInline<II>,
1392 J: ParseInline<II>,
1393> ParseInline<II> for (A, B, C, D, E, F, G, H, I, J)
1394{
1395 fn parse_inline(input: &mut II) -> crate::Result<Self> {
1396 Ok((
1397 input.parse_inline()?,
1398 input.parse_inline()?,
1399 input.parse_inline()?,
1400 input.parse_inline()?,
1401 input.parse_inline()?,
1402 input.parse_inline()?,
1403 input.parse_inline()?,
1404 input.parse_inline()?,
1405 input.parse_inline()?,
1406 input.parse_inline()?,
1407 ))
1408 }
1409}
1410
1411impl<
1412 A: MaybeHasNiche,
1413 B: MaybeHasNiche,
1414 C: MaybeHasNiche,
1415 D: MaybeHasNiche,
1416 E: MaybeHasNiche,
1417 F: MaybeHasNiche,
1418 G: MaybeHasNiche,
1419 H: MaybeHasNiche,
1420 I: MaybeHasNiche,
1421 J: MaybeHasNiche,
1422> MaybeHasNiche for (A, B, C, D, E, F, G, H, I, J)
1423{
1424 type MnArray = tarr![
1425 A::MnArray,
1426 B::MnArray,
1427 C::MnArray,
1428 D::MnArray,
1429 E::MnArray,
1430 F::MnArray,
1431 G::MnArray,
1432 H::MnArray,
1433 I::MnArray,
1434 J::MnArray,
1435 ];
1436}
1437
1438impl<
1439 A: ToOutput,
1440 B: ToOutput,
1441 C: ToOutput,
1442 D: ToOutput,
1443 E: ToOutput,
1444 F: ToOutput,
1445 G: ToOutput,
1446 H: ToOutput,
1447 I: ToOutput,
1448 J: ToOutput,
1449 K: ToOutput,
1450> ToOutput for (A, B, C, D, E, F, G, H, I, J, K)
1451{
1452 fn to_output(&self, output: &mut dyn Output) {
1453 self.0.to_output(output);
1454 self.1.to_output(output);
1455 self.2.to_output(output);
1456 self.3.to_output(output);
1457 self.4.to_output(output);
1458 self.5.to_output(output);
1459 self.6.to_output(output);
1460 self.7.to_output(output);
1461 self.8.to_output(output);
1462 self.9.to_output(output);
1463 self.10.to_output(output);
1464 }
1465}
1466
1467impl<
1468 Extra: 'static,
1469 A: Topological<Extra>,
1470 B: Topological<Extra>,
1471 C: Topological<Extra>,
1472 D: Topological<Extra>,
1473 E: Topological<Extra>,
1474 F: Topological<Extra>,
1475 G: Topological<Extra>,
1476 H: Topological<Extra>,
1477 I: Topological<Extra>,
1478 J: Topological<Extra>,
1479 K: Topological<Extra>,
1480> Topological<Extra> for (A, B, C, D, E, F, G, H, I, J, K)
1481{
1482 fn accept_points(&self, visitor: &mut impl PointVisitor<Extra>) {
1483 self.0.accept_points(visitor);
1484 self.1.accept_points(visitor);
1485 self.2.accept_points(visitor);
1486 self.3.accept_points(visitor);
1487 self.4.accept_points(visitor);
1488 self.5.accept_points(visitor);
1489 self.6.accept_points(visitor);
1490 self.7.accept_points(visitor);
1491 self.8.accept_points(visitor);
1492 self.9.accept_points(visitor);
1493 self.10.accept_points(visitor);
1494 }
1495}
1496
1497impl<
1498 A: Tagged,
1499 B: Tagged,
1500 C: Tagged,
1501 D: Tagged,
1502 E: Tagged,
1503 F: Tagged,
1504 G: Tagged,
1505 H: Tagged,
1506 I: Tagged,
1507 J: Tagged,
1508 K: Tagged,
1509> Tagged for (A, B, C, D, E, F, G, H, I, J, K)
1510{
1511 const TAGS: Tags = Tags(
1512 &[],
1513 &[
1514 &A::TAGS,
1515 &B::TAGS,
1516 &C::TAGS,
1517 &D::TAGS,
1518 &E::TAGS,
1519 &F::TAGS,
1520 &G::TAGS,
1521 &H::TAGS,
1522 &I::TAGS,
1523 &J::TAGS,
1524 &K::TAGS,
1525 ],
1526 );
1527}
1528
1529impl<
1530 Extra: 'static,
1531 A: Inline<Extra>,
1532 B: Inline<Extra>,
1533 C: Inline<Extra>,
1534 D: Inline<Extra>,
1535 E: Inline<Extra>,
1536 F: Inline<Extra>,
1537 G: Inline<Extra>,
1538 H: Inline<Extra>,
1539 I: Inline<Extra>,
1540 J: Inline<Extra>,
1541 K: Object<Extra>,
1542> Object<Extra> for (A, B, C, D, E, F, G, H, I, J, K)
1543{
1544}
1545
1546impl<
1547 Extra: 'static,
1548 A: Inline<Extra>,
1549 B: Inline<Extra>,
1550 C: Inline<Extra>,
1551 D: Inline<Extra>,
1552 E: Inline<Extra>,
1553 F: Inline<Extra>,
1554 G: Inline<Extra>,
1555 H: Inline<Extra>,
1556 I: Inline<Extra>,
1557 J: Inline<Extra>,
1558 K: Inline<Extra>,
1559> Inline<Extra> for (A, B, C, D, E, F, G, H, I, J, K)
1560{
1561}
1562
1563impl<
1564 A: ReflessInline,
1565 B: ReflessInline,
1566 C: ReflessInline,
1567 D: ReflessInline,
1568 E: ReflessInline,
1569 F: ReflessInline,
1570 G: ReflessInline,
1571 H: ReflessInline,
1572 I: ReflessInline,
1573 J: ReflessInline,
1574 K: ReflessObject,
1575> ReflessObject for (A, B, C, D, E, F, G, H, I, J, K)
1576{
1577}
1578
1579impl<
1580 A: ReflessInline,
1581 B: ReflessInline,
1582 C: ReflessInline,
1583 D: ReflessInline,
1584 E: ReflessInline,
1585 F: ReflessInline,
1586 G: ReflessInline,
1587 H: ReflessInline,
1588 I: ReflessInline,
1589 J: ReflessInline,
1590 K: ReflessInline,
1591> ReflessInline for (A, B, C, D, E, F, G, H, I, J, K)
1592{
1593}
1594
1595impl<
1596 A: Size,
1597 B: Size,
1598 C: Size,
1599 D: Size,
1600 E: Size,
1601 F: Size,
1602 G: Size,
1603 H: Size,
1604 I: Size,
1605 J: Size,
1606 K: Size,
1607> Size for (A, B, C, D, E, F, G, H, I, J, K)
1608where
1609 tarr![
1610 A::Size,
1611 B::Size,
1612 C::Size,
1613 D::Size,
1614 E::Size,
1615 F::Size,
1616 G::Size,
1617 H::Size,
1618 I::Size,
1619 J::Size,
1620 K::Size,
1621 ]: typenum::FoldAdd<Output: Unsigned>,
1622{
1623 const SIZE: usize = A::SIZE
1624 + B::SIZE
1625 + C::SIZE
1626 + D::SIZE
1627 + E::SIZE
1628 + F::SIZE
1629 + G::SIZE
1630 + H::SIZE
1631 + I::SIZE
1632 + J::SIZE
1633 + K::SIZE;
1634
1635 type Size = <tarr![
1636 A::Size,
1637 B::Size,
1638 C::Size,
1639 D::Size,
1640 E::Size,
1641 F::Size,
1642 G::Size,
1643 H::Size,
1644 I::Size,
1645 J::Size,
1646 K::Size,
1647 ] as typenum::FoldAdd>::Output;
1648}
1649
1650impl<
1651 II: ParseInput,
1652 A: ParseInline<II>,
1653 B: ParseInline<II>,
1654 C: ParseInline<II>,
1655 D: ParseInline<II>,
1656 E: ParseInline<II>,
1657 F: ParseInline<II>,
1658 G: ParseInline<II>,
1659 H: ParseInline<II>,
1660 I: ParseInline<II>,
1661 J: ParseInline<II>,
1662 K: Parse<II>,
1663> Parse<II> for (A, B, C, D, E, F, G, H, I, J, K)
1664{
1665 fn parse(mut input: II) -> crate::Result<Self> {
1666 Ok((
1667 input.parse_inline()?,
1668 input.parse_inline()?,
1669 input.parse_inline()?,
1670 input.parse_inline()?,
1671 input.parse_inline()?,
1672 input.parse_inline()?,
1673 input.parse_inline()?,
1674 input.parse_inline()?,
1675 input.parse_inline()?,
1676 input.parse_inline()?,
1677 input.parse()?,
1678 ))
1679 }
1680}
1681
1682impl<
1683 II: ParseInput,
1684 A: ParseInline<II>,
1685 B: ParseInline<II>,
1686 C: ParseInline<II>,
1687 D: ParseInline<II>,
1688 E: ParseInline<II>,
1689 F: ParseInline<II>,
1690 G: ParseInline<II>,
1691 H: ParseInline<II>,
1692 I: ParseInline<II>,
1693 J: ParseInline<II>,
1694 K: ParseInline<II>,
1695> ParseInline<II> for (A, B, C, D, E, F, G, H, I, J, K)
1696{
1697 fn parse_inline(input: &mut II) -> crate::Result<Self> {
1698 Ok((
1699 input.parse_inline()?,
1700 input.parse_inline()?,
1701 input.parse_inline()?,
1702 input.parse_inline()?,
1703 input.parse_inline()?,
1704 input.parse_inline()?,
1705 input.parse_inline()?,
1706 input.parse_inline()?,
1707 input.parse_inline()?,
1708 input.parse_inline()?,
1709 input.parse_inline()?,
1710 ))
1711 }
1712}
1713
1714impl<
1715 A: MaybeHasNiche,
1716 B: MaybeHasNiche,
1717 C: MaybeHasNiche,
1718 D: MaybeHasNiche,
1719 E: MaybeHasNiche,
1720 F: MaybeHasNiche,
1721 G: MaybeHasNiche,
1722 H: MaybeHasNiche,
1723 I: MaybeHasNiche,
1724 J: MaybeHasNiche,
1725 K: MaybeHasNiche,
1726> MaybeHasNiche for (A, B, C, D, E, F, G, H, I, J, K)
1727{
1728 type MnArray = tarr![
1729 A::MnArray,
1730 B::MnArray,
1731 C::MnArray,
1732 D::MnArray,
1733 E::MnArray,
1734 F::MnArray,
1735 G::MnArray,
1736 H::MnArray,
1737 I::MnArray,
1738 J::MnArray,
1739 K::MnArray,
1740 ];
1741}
1742
1743impl<
1744 A: ToOutput,
1745 B: ToOutput,
1746 C: ToOutput,
1747 D: ToOutput,
1748 E: ToOutput,
1749 F: ToOutput,
1750 G: ToOutput,
1751 H: ToOutput,
1752 I: ToOutput,
1753 J: ToOutput,
1754 K: ToOutput,
1755 L: ToOutput,
1756> ToOutput for (A, B, C, D, E, F, G, H, I, J, K, L)
1757{
1758 fn to_output(&self, output: &mut dyn Output) {
1759 self.0.to_output(output);
1760 self.1.to_output(output);
1761 self.2.to_output(output);
1762 self.3.to_output(output);
1763 self.4.to_output(output);
1764 self.5.to_output(output);
1765 self.6.to_output(output);
1766 self.7.to_output(output);
1767 self.8.to_output(output);
1768 self.9.to_output(output);
1769 self.10.to_output(output);
1770 self.11.to_output(output);
1771 }
1772}
1773
1774impl<
1775 Extra: 'static,
1776 A: Topological<Extra>,
1777 B: Topological<Extra>,
1778 C: Topological<Extra>,
1779 D: Topological<Extra>,
1780 E: Topological<Extra>,
1781 F: Topological<Extra>,
1782 G: Topological<Extra>,
1783 H: Topological<Extra>,
1784 I: Topological<Extra>,
1785 J: Topological<Extra>,
1786 K: Topological<Extra>,
1787 L: Topological<Extra>,
1788> Topological<Extra> for (A, B, C, D, E, F, G, H, I, J, K, L)
1789{
1790 fn accept_points(&self, visitor: &mut impl PointVisitor<Extra>) {
1791 self.0.accept_points(visitor);
1792 self.1.accept_points(visitor);
1793 self.2.accept_points(visitor);
1794 self.3.accept_points(visitor);
1795 self.4.accept_points(visitor);
1796 self.5.accept_points(visitor);
1797 self.6.accept_points(visitor);
1798 self.7.accept_points(visitor);
1799 self.8.accept_points(visitor);
1800 self.9.accept_points(visitor);
1801 self.10.accept_points(visitor);
1802 self.11.accept_points(visitor);
1803 }
1804}
1805
1806impl<
1807 A: Tagged,
1808 B: Tagged,
1809 C: Tagged,
1810 D: Tagged,
1811 E: Tagged,
1812 F: Tagged,
1813 G: Tagged,
1814 H: Tagged,
1815 I: Tagged,
1816 J: Tagged,
1817 K: Tagged,
1818 L: Tagged,
1819> Tagged for (A, B, C, D, E, F, G, H, I, J, K, L)
1820{
1821 const TAGS: Tags = Tags(
1822 &[],
1823 &[
1824 &A::TAGS,
1825 &B::TAGS,
1826 &C::TAGS,
1827 &D::TAGS,
1828 &E::TAGS,
1829 &F::TAGS,
1830 &G::TAGS,
1831 &H::TAGS,
1832 &I::TAGS,
1833 &J::TAGS,
1834 &K::TAGS,
1835 &L::TAGS,
1836 ],
1837 );
1838}
1839
1840impl<
1841 Extra: 'static,
1842 A: Inline<Extra>,
1843 B: Inline<Extra>,
1844 C: Inline<Extra>,
1845 D: Inline<Extra>,
1846 E: Inline<Extra>,
1847 F: Inline<Extra>,
1848 G: Inline<Extra>,
1849 H: Inline<Extra>,
1850 I: Inline<Extra>,
1851 J: Inline<Extra>,
1852 K: Inline<Extra>,
1853 L: Object<Extra>,
1854> Object<Extra> for (A, B, C, D, E, F, G, H, I, J, K, L)
1855{
1856}
1857
1858impl<
1859 Extra: 'static,
1860 A: Inline<Extra>,
1861 B: Inline<Extra>,
1862 C: Inline<Extra>,
1863 D: Inline<Extra>,
1864 E: Inline<Extra>,
1865 F: Inline<Extra>,
1866 G: Inline<Extra>,
1867 H: Inline<Extra>,
1868 I: Inline<Extra>,
1869 J: Inline<Extra>,
1870 K: Inline<Extra>,
1871 L: Inline<Extra>,
1872> Inline<Extra> for (A, B, C, D, E, F, G, H, I, J, K, L)
1873{
1874}
1875
1876impl<
1877 A: ReflessInline,
1878 B: ReflessInline,
1879 C: ReflessInline,
1880 D: ReflessInline,
1881 E: ReflessInline,
1882 F: ReflessInline,
1883 G: ReflessInline,
1884 H: ReflessInline,
1885 I: ReflessInline,
1886 J: ReflessInline,
1887 K: ReflessInline,
1888 L: ReflessObject,
1889> ReflessObject for (A, B, C, D, E, F, G, H, I, J, K, L)
1890{
1891}
1892
1893impl<
1894 A: ReflessInline,
1895 B: ReflessInline,
1896 C: ReflessInline,
1897 D: ReflessInline,
1898 E: ReflessInline,
1899 F: ReflessInline,
1900 G: ReflessInline,
1901 H: ReflessInline,
1902 I: ReflessInline,
1903 J: ReflessInline,
1904 K: ReflessInline,
1905 L: ReflessInline,
1906> ReflessInline for (A, B, C, D, E, F, G, H, I, J, K, L)
1907{
1908}
1909
1910impl<
1911 A: Size,
1912 B: Size,
1913 C: Size,
1914 D: Size,
1915 E: Size,
1916 F: Size,
1917 G: Size,
1918 H: Size,
1919 I: Size,
1920 J: Size,
1921 K: Size,
1922 L: Size,
1923> Size for (A, B, C, D, E, F, G, H, I, J, K, L)
1924where
1925 tarr![
1926 A::Size,
1927 B::Size,
1928 C::Size,
1929 D::Size,
1930 E::Size,
1931 F::Size,
1932 G::Size,
1933 H::Size,
1934 I::Size,
1935 J::Size,
1936 K::Size,
1937 L::Size,
1938 ]: typenum::FoldAdd<Output: Unsigned>,
1939{
1940 const SIZE: usize = A::SIZE
1941 + B::SIZE
1942 + C::SIZE
1943 + D::SIZE
1944 + E::SIZE
1945 + F::SIZE
1946 + G::SIZE
1947 + H::SIZE
1948 + I::SIZE
1949 + J::SIZE
1950 + K::SIZE
1951 + L::SIZE;
1952
1953 type Size = <tarr![
1954 A::Size,
1955 B::Size,
1956 C::Size,
1957 D::Size,
1958 E::Size,
1959 F::Size,
1960 G::Size,
1961 H::Size,
1962 I::Size,
1963 J::Size,
1964 K::Size,
1965 L::Size,
1966 ] as typenum::FoldAdd>::Output;
1967}
1968
1969impl<
1970 II: ParseInput,
1971 A: ParseInline<II>,
1972 B: ParseInline<II>,
1973 C: ParseInline<II>,
1974 D: ParseInline<II>,
1975 E: ParseInline<II>,
1976 F: ParseInline<II>,
1977 G: ParseInline<II>,
1978 H: ParseInline<II>,
1979 I: ParseInline<II>,
1980 J: ParseInline<II>,
1981 K: ParseInline<II>,
1982 L: Parse<II>,
1983> Parse<II> for (A, B, C, D, E, F, G, H, I, J, K, L)
1984{
1985 fn parse(mut input: II) -> crate::Result<Self> {
1986 Ok((
1987 input.parse_inline()?,
1988 input.parse_inline()?,
1989 input.parse_inline()?,
1990 input.parse_inline()?,
1991 input.parse_inline()?,
1992 input.parse_inline()?,
1993 input.parse_inline()?,
1994 input.parse_inline()?,
1995 input.parse_inline()?,
1996 input.parse_inline()?,
1997 input.parse_inline()?,
1998 input.parse()?,
1999 ))
2000 }
2001}
2002
2003impl<
2004 II: ParseInput,
2005 A: ParseInline<II>,
2006 B: ParseInline<II>,
2007 C: ParseInline<II>,
2008 D: ParseInline<II>,
2009 E: ParseInline<II>,
2010 F: ParseInline<II>,
2011 G: ParseInline<II>,
2012 H: ParseInline<II>,
2013 I: ParseInline<II>,
2014 J: ParseInline<II>,
2015 K: ParseInline<II>,
2016 L: ParseInline<II>,
2017> ParseInline<II> for (A, B, C, D, E, F, G, H, I, J, K, L)
2018{
2019 fn parse_inline(input: &mut II) -> crate::Result<Self> {
2020 Ok((
2021 input.parse_inline()?,
2022 input.parse_inline()?,
2023 input.parse_inline()?,
2024 input.parse_inline()?,
2025 input.parse_inline()?,
2026 input.parse_inline()?,
2027 input.parse_inline()?,
2028 input.parse_inline()?,
2029 input.parse_inline()?,
2030 input.parse_inline()?,
2031 input.parse_inline()?,
2032 input.parse_inline()?,
2033 ))
2034 }
2035}
2036
2037impl<
2038 A: MaybeHasNiche,
2039 B: MaybeHasNiche,
2040 C: MaybeHasNiche,
2041 D: MaybeHasNiche,
2042 E: MaybeHasNiche,
2043 F: MaybeHasNiche,
2044 G: MaybeHasNiche,
2045 H: MaybeHasNiche,
2046 I: MaybeHasNiche,
2047 J: MaybeHasNiche,
2048 K: MaybeHasNiche,
2049 L: MaybeHasNiche,
2050> MaybeHasNiche for (A, B, C, D, E, F, G, H, I, J, K, L)
2051{
2052 type MnArray = tarr![
2053 A::MnArray,
2054 B::MnArray,
2055 C::MnArray,
2056 D::MnArray,
2057 E::MnArray,
2058 F::MnArray,
2059 G::MnArray,
2060 H::MnArray,
2061 I::MnArray,
2062 J::MnArray,
2063 K::MnArray,
2064 L::MnArray,
2065 ];
2066}