• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

facet-rs / facet / 14468690768

15 Apr 2025 11:51AM UTC coverage: 29.024% (-1.8%) from 30.835%
14468690768

Pull #225

github

web-flow
Merge 5109d04e7 into 00641afc4
Pull Request #225: Provide best-of-class precommit hook (facet-dev)

4 of 940 new or added lines in 9 files covered. (0.43%)

1 existing line in 1 file now uncovered.

2032 of 7001 relevant lines covered (29.02%)

24.21 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/facet-core/src/impls_core/tuple.rs
1
//! GENERATED: DO NOT EDIT — this file is generated by the `facet-codegen` crate.
2
//! Run `just codegen` to regenerate.
3

4
use core::{alloc::Layout, fmt};
5

6
use crate::{
7
    Characteristic, ConstTypeId, Def, Facet, Field, FieldFlags, PtrConst, Shape,
8
    Struct, TypeNameOpts, ValueVTable,
9
};
10

11
#[inline(always)]
12
pub fn write_type_name_list(
×
13
    f: &mut fmt::Formatter<'_>,
14
    opts: TypeNameOpts,
15
    open: &'static str,
16
    delimiter: &'static str,
17
    close: &'static str,
18
    shapes: &'static [&'static Shape],
19
) -> fmt::Result {
20
    f.pad(open)?;
×
21
    if let Some(opts) = opts.for_children() {
×
22
        for (index, shape) in shapes.iter().enumerate() {
×
23
            if index > 0 {
×
24
                f.pad(delimiter)?;
×
25
            }
26
            shape.write_type_name(f, opts)?;
×
27
        }
28
    } else {
29
        write!(f, "⋯")?;
×
30
    }
31
    f.pad(close)?;
×
32
    Ok(())
×
33
}
34

35
macro_rules! field {
36
    ($idx:tt, $ty:ty,) => {
37
        Field::builder()
38
            .name(stringify!($idx))
39
            .shape(|| $crate::shape_of(&|t: &$ty| &t.$idx))
×
40
            .offset(core::mem::offset_of!($ty, $idx))
41
            .flags(FieldFlags::EMPTY)
42
            .build()
43
    };
44
}
45

46
unsafe impl<T0> Facet for (T0,)
47
where
48
    T0: Facet
49
{
50
    const SHAPE: &'static Shape = &const {
51
        fn type_name<T0>(f: &mut fmt::Formatter, opts: TypeNameOpts) -> fmt::Result
×
52
        where
×
NEW
53
            T0: Facet
×
54
        {
55
            write_type_name_list(f, opts, "(", ", ", ")", &[T0::SHAPE])
×
56
        }
57

58
        Shape::builder()
59
            .id(ConstTypeId::of::<(T0,)>())
60
            .layout(Layout::new::<(T0,)>())
61
            .vtable(
62
                &const {
63
                    let mut builder = ValueVTable::builder()
64
                        .type_name(type_name::<T0>)
65
                        .marker_traits(T0::SHAPE.vtable.marker_traits);
66

67
                    if Characteristic::Eq.all(&[T0::SHAPE]) {
68
                        builder = builder.debug(|value, f| {
×
69
                            let value = unsafe { value.get::<(T0,)>() };
×
70
                            write!(f, "(")?;
×
71
                            unsafe {
72
                                let ptr = &value.0 as *const T0;
×
NEW
73
                                (T0::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
74
                                    PtrConst::new(ptr),
×
NEW
75
                                    f,
×
76
                                )
77
                            }?;
78
                            write!(f, ")")
×
79
                        });
80

81
                        builder = builder.eq(|a, b| {
×
82
                            let a = unsafe { a.get::<(T0,)>() };
×
83
                            let b = unsafe { b.get::<(T0,)>() };
×
84

85
                            // Compare last element
86
                            unsafe {
×
87
                                (T0::SHAPE.vtable.eq.unwrap_unchecked())(
×
88
                                    PtrConst::new(&a.0 as *const T0),
×
89
                                    PtrConst::new(&b.0 as *const T0),
×
90
                                )
91
                            }
92
                        });
93
                    }
94

95
                    builder.build()
96
                },
97
            )
98
            .def(Def::Struct({
99
                Struct::builder()
100
                    .tuple()
101
                    .fields(
102
                        &const { [field!(0, (T0,),)] }
103
                    )
104
                    .build()
105
            }))
106
            .build()
107
    };
108
}
109
unsafe impl<T0, T1> Facet for (T0, T1)
110
where
111
    T0: Facet,
112
    T1: Facet
113
{
114
    const SHAPE: &'static Shape = &const {
115
        fn type_name<T0, T1>(f: &mut fmt::Formatter, opts: TypeNameOpts) -> fmt::Result
×
116
        where
×
117
            T0: Facet,
×
NEW
118
    T1: Facet
×
119
        {
120
            write_type_name_list(f, opts, "(", ", ", ")", &[T0::SHAPE, T1::SHAPE])
×
121
        }
122

123
        Shape::builder()
124
            .id(ConstTypeId::of::<(T0, T1)>())
125
            .layout(Layout::new::<(T0, T1)>())
126
            .vtable(
127
                &const {
128
                    let mut builder = ValueVTable::builder()
129
                        .type_name(type_name::<T0, T1>)
130
                        .marker_traits(                        {
131
                            T0::SHAPE.vtable.marker_traits
132
                                .intersection(T1::SHAPE.vtable.marker_traits)
133
                    });
134

135
                    if Characteristic::Eq.all(&[T0::SHAPE, T1::SHAPE]) {
136
                        builder = builder.debug(|value, f| {
×
137
                            let value = unsafe { value.get::<(T0, T1)>() };
×
138
                            write!(f, "(")?;
×
139
                            unsafe {
140
                                let ptr = &value.0 as *const T0;
×
NEW
141
                                (T0::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
142
                                    PtrConst::new(ptr),
×
NEW
143
                                    f,
×
144
                                )
145
                            }?;
146
                            write!(f, ", ")?;
×
147
                            unsafe {
148
                                let ptr = &value.1 as *const T1;
×
NEW
149
                                (T1::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
150
                                    PtrConst::new(ptr),
×
NEW
151
                                    f,
×
152
                                )
153
                            }?;
154
                            write!(f, ")")
×
155
                        });
156

157
                        builder = builder.eq(|a, b| {
×
158
                            let a = unsafe { a.get::<(T0, T1)>() };
×
159
                            let b = unsafe { b.get::<(T0, T1)>() };
×
160

161
                            // Compare element 0
162
                            unsafe {
×
163
                                let a_ptr = &a.0 as *const T0;
×
164
                                let b_ptr = &b.0 as *const T0;
×
165
                                if !(T0::SHAPE.vtable.eq.unwrap_unchecked())(
×
166
                                    PtrConst::new(a_ptr),
×
167
                                    PtrConst::new(b_ptr),
×
168
                                ) {
169
                                    return false;
×
170
                                }
171
                            }
172

173
                            // Compare last element
174
                            unsafe {
×
175
                                (T1::SHAPE.vtable.eq.unwrap_unchecked())(
×
176
                                    PtrConst::new(&a.1 as *const T1),
×
177
                                    PtrConst::new(&b.1 as *const T1),
×
178
                                )
179
                            }
180
                        });
181
                    }
182

183
                    builder.build()
184
                },
185
            )
186
            .def(Def::Struct({
187
                Struct::builder()
188
                    .tuple()
189
                    .fields(
190
                        &const { [field!(0, (T0, T1,),),
191
                        field!(1, (T0, T1,),)] }
192
                    )
193
                    .build()
194
            }))
195
            .build()
196
    };
197
}
198
unsafe impl<T0, T1, T2> Facet for (T0, T1, T2)
199
where
200
    T0: Facet,
201
    T1: Facet,
202
    T2: Facet
203
{
204
    const SHAPE: &'static Shape = &const {
205
        fn type_name<T0, T1, T2>(f: &mut fmt::Formatter, opts: TypeNameOpts) -> fmt::Result
×
206
        where
×
207
            T0: Facet,
×
NEW
208
    T1: Facet,
×
NEW
209
    T2: Facet
×
210
        {
211
            write_type_name_list(f, opts, "(", ", ", ")", &[T0::SHAPE, T1::SHAPE, T2::SHAPE])
×
212
        }
213

214
        Shape::builder()
215
            .id(ConstTypeId::of::<(T0, T1, T2)>())
216
            .layout(Layout::new::<(T0, T1, T2)>())
217
            .vtable(
218
                &const {
219
                    let mut builder = ValueVTable::builder()
220
                        .type_name(type_name::<T0, T1, T2>)
221
                        .marker_traits(                        {
222
                            T0::SHAPE.vtable.marker_traits
223
                                .intersection(T1::SHAPE.vtable.marker_traits)
224
                                .intersection(T2::SHAPE.vtable.marker_traits)
225
                    });
226

227
                    if Characteristic::Eq.all(&[T0::SHAPE, T1::SHAPE, T2::SHAPE]) {
228
                        builder = builder.debug(|value, f| {
×
229
                            let value = unsafe { value.get::<(T0, T1, T2)>() };
×
230
                            write!(f, "(")?;
×
231
                            unsafe {
232
                                let ptr = &value.0 as *const T0;
×
NEW
233
                                (T0::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
234
                                    PtrConst::new(ptr),
×
NEW
235
                                    f,
×
236
                                )
237
                            }?;
238
                            write!(f, ", ")?;
×
239
                            unsafe {
240
                                let ptr = &value.1 as *const T1;
×
NEW
241
                                (T1::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
242
                                    PtrConst::new(ptr),
×
NEW
243
                                    f,
×
244
                                )
245
                            }?;
246
                            write!(f, ", ")?;
×
247
                            unsafe {
248
                                let ptr = &value.2 as *const T2;
×
NEW
249
                                (T2::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
250
                                    PtrConst::new(ptr),
×
NEW
251
                                    f,
×
252
                                )
253
                            }?;
254
                            write!(f, ")")
×
255
                        });
256

257
                        builder = builder.eq(|a, b| {
×
258
                            let a = unsafe { a.get::<(T0, T1, T2)>() };
×
259
                            let b = unsafe { b.get::<(T0, T1, T2)>() };
×
260

261
                            // Compare element 0
262
                            unsafe {
×
263
                                let a_ptr = &a.0 as *const T0;
×
264
                                let b_ptr = &b.0 as *const T0;
×
265
                                if !(T0::SHAPE.vtable.eq.unwrap_unchecked())(
×
266
                                    PtrConst::new(a_ptr),
×
267
                                    PtrConst::new(b_ptr),
×
268
                                ) {
269
                                    return false;
×
270
                                }
271
                            }
272

273
                            // Compare element 1
274
                            unsafe {
×
275
                                let a_ptr = &a.1 as *const T1;
×
276
                                let b_ptr = &b.1 as *const T1;
×
277
                                if !(T1::SHAPE.vtable.eq.unwrap_unchecked())(
×
278
                                    PtrConst::new(a_ptr),
×
279
                                    PtrConst::new(b_ptr),
×
280
                                ) {
281
                                    return false;
×
282
                                }
283
                            }
284

285
                            // Compare last element
286
                            unsafe {
×
287
                                (T2::SHAPE.vtable.eq.unwrap_unchecked())(
×
288
                                    PtrConst::new(&a.2 as *const T2),
×
289
                                    PtrConst::new(&b.2 as *const T2),
×
290
                                )
291
                            }
292
                        });
293
                    }
294

295
                    builder.build()
296
                },
297
            )
298
            .def(Def::Struct({
299
                Struct::builder()
300
                    .tuple()
301
                    .fields(
302
                        &const { [field!(0, (T0, T1, T2,),),
303
                        field!(1, (T0, T1, T2,),),
304
                        field!(2, (T0, T1, T2,),)] }
305
                    )
306
                    .build()
307
            }))
308
            .build()
309
    };
310
}
311
unsafe impl<T0, T1, T2, T3> Facet for (T0, T1, T2, T3)
312
where
313
    T0: Facet,
314
    T1: Facet,
315
    T2: Facet,
316
    T3: Facet
317
{
318
    const SHAPE: &'static Shape = &const {
319
        fn type_name<T0, T1, T2, T3>(f: &mut fmt::Formatter, opts: TypeNameOpts) -> fmt::Result
×
320
        where
×
321
            T0: Facet,
×
NEW
322
    T1: Facet,
×
NEW
323
    T2: Facet,
×
NEW
324
    T3: Facet
×
325
        {
326
            write_type_name_list(
×
327
                f,
×
328
                opts,
×
329
                "(",
×
330
                ", ",
×
331
                ")",
×
NEW
332
                &[
×
NEW
333
                    T0::SHAPE, T1::SHAPE, T2::SHAPE, T3::SHAPE,
×
334
                ],
335
            )
336
        }
337

338
        Shape::builder()
339
            .id(ConstTypeId::of::<(T0, T1, T2, T3)>())
340
            .layout(Layout::new::<(T0, T1, T2, T3)>())
341
            .vtable(
342
                &const {
343
                    let mut builder = ValueVTable::builder()
344
                        .type_name(type_name::<T0, T1, T2, T3>)
345
                        .marker_traits(                        {
346
                            T0::SHAPE.vtable.marker_traits
347
                                .intersection(T1::SHAPE.vtable.marker_traits)
348
                                .intersection(T2::SHAPE.vtable.marker_traits)
349
                                .intersection(T3::SHAPE.vtable.marker_traits)
350
                    });
351

352
                    if Characteristic::Eq.all(&[T0::SHAPE, T1::SHAPE, T2::SHAPE, T3::SHAPE]) {
353
                        builder = builder.debug(|value, f| {
×
354
                            let value = unsafe { value.get::<(T0, T1, T2, T3)>() };
×
355
                            write!(f, "(")?;
×
356
                            unsafe {
357
                                let ptr = &value.0 as *const T0;
×
NEW
358
                                (T0::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
359
                                    PtrConst::new(ptr),
×
NEW
360
                                    f,
×
361
                                )
362
                            }?;
363
                            write!(f, ", ")?;
×
364
                            unsafe {
365
                                let ptr = &value.1 as *const T1;
×
NEW
366
                                (T1::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
367
                                    PtrConst::new(ptr),
×
NEW
368
                                    f,
×
369
                                )
370
                            }?;
371
                            write!(f, ", ")?;
×
372
                            unsafe {
373
                                let ptr = &value.2 as *const T2;
×
NEW
374
                                (T2::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
375
                                    PtrConst::new(ptr),
×
NEW
376
                                    f,
×
377
                                )
378
                            }?;
379
                            write!(f, ", ")?;
×
380
                            unsafe {
381
                                let ptr = &value.3 as *const T3;
×
NEW
382
                                (T3::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
383
                                    PtrConst::new(ptr),
×
NEW
384
                                    f,
×
385
                                )
386
                            }?;
387
                            write!(f, ")")
×
388
                        });
389

390
                        builder = builder.eq(|a, b| {
×
391
                            let a = unsafe { a.get::<(T0, T1, T2, T3)>() };
×
392
                            let b = unsafe { b.get::<(T0, T1, T2, T3)>() };
×
393

394
                            // Compare element 0
395
                            unsafe {
×
396
                                let a_ptr = &a.0 as *const T0;
×
397
                                let b_ptr = &b.0 as *const T0;
×
398
                                if !(T0::SHAPE.vtable.eq.unwrap_unchecked())(
×
399
                                    PtrConst::new(a_ptr),
×
400
                                    PtrConst::new(b_ptr),
×
401
                                ) {
402
                                    return false;
×
403
                                }
404
                            }
405

406
                            // Compare element 1
407
                            unsafe {
×
408
                                let a_ptr = &a.1 as *const T1;
×
409
                                let b_ptr = &b.1 as *const T1;
×
410
                                if !(T1::SHAPE.vtable.eq.unwrap_unchecked())(
×
411
                                    PtrConst::new(a_ptr),
×
412
                                    PtrConst::new(b_ptr),
×
413
                                ) {
414
                                    return false;
×
415
                                }
416
                            }
417

418
                            // Compare element 2
419
                            unsafe {
×
420
                                let a_ptr = &a.2 as *const T2;
×
421
                                let b_ptr = &b.2 as *const T2;
×
422
                                if !(T2::SHAPE.vtable.eq.unwrap_unchecked())(
×
423
                                    PtrConst::new(a_ptr),
×
424
                                    PtrConst::new(b_ptr),
×
425
                                ) {
426
                                    return false;
×
427
                                }
428
                            }
429

430
                            // Compare last element
431
                            unsafe {
×
432
                                (T3::SHAPE.vtable.eq.unwrap_unchecked())(
×
433
                                    PtrConst::new(&a.3 as *const T3),
×
434
                                    PtrConst::new(&b.3 as *const T3),
×
435
                                )
436
                            }
437
                        });
438
                    }
439

440
                    builder.build()
441
                },
442
            )
443
            .def(Def::Struct({
444
                Struct::builder()
445
                    .tuple()
446
                    .fields(
447
                        &const {
448
                            [
449
                                field!(0, (T0, T1, T2, T3,),),
450
                                field!(1, (T0, T1, T2, T3,),),
451
                                field!(2, (T0, T1, T2, T3,),),
452
                                field!(3, (T0, T1, T2, T3,),)
453
                            ]
454
                        },
455
                    )
456
                    .build()
457
            }))
458
            .build()
459
    };
460
}
461
unsafe impl<T0, T1, T2, T3, T4> Facet for (T0, T1, T2, T3, T4)
462
where
463
    T0: Facet,
464
    T1: Facet,
465
    T2: Facet,
466
    T3: Facet,
467
    T4: Facet
468
{
469
    const SHAPE: &'static Shape = &const {
470
        fn type_name<T0, T1, T2, T3, T4>(f: &mut fmt::Formatter, opts: TypeNameOpts) -> fmt::Result
×
471
        where
×
472
            T0: Facet,
×
NEW
473
    T1: Facet,
×
NEW
474
    T2: Facet,
×
NEW
475
    T3: Facet,
×
NEW
476
    T4: Facet
×
477
        {
478
            write_type_name_list(
×
479
                f,
×
480
                opts,
×
481
                "(",
×
482
                ", ",
×
483
                ")",
×
NEW
484
                &[
×
NEW
485
                    T0::SHAPE, T1::SHAPE, T2::SHAPE, T3::SHAPE, T4::SHAPE,
×
486
                ],
487
            )
488
        }
489

490
        Shape::builder()
491
            .id(ConstTypeId::of::<(T0, T1, T2, T3, T4)>())
492
            .layout(Layout::new::<(T0, T1, T2, T3, T4)>())
493
            .vtable(
494
                &const {
495
                    let mut builder = ValueVTable::builder()
496
                        .type_name(type_name::<T0, T1, T2, T3, T4>)
497
                        .marker_traits(                        {
498
                            T0::SHAPE.vtable.marker_traits
499
                                .intersection(T1::SHAPE.vtable.marker_traits)
500
                                .intersection(T2::SHAPE.vtable.marker_traits)
501
                                .intersection(T3::SHAPE.vtable.marker_traits)
502
                                .intersection(T4::SHAPE.vtable.marker_traits)
503
                    });
504

505
                    if Characteristic::Eq.all(&[T0::SHAPE, T1::SHAPE, T2::SHAPE, T3::SHAPE, T4::SHAPE]) {
UNCOV
506
                        builder = builder.debug(|value, f| {
×
507
                            let value = unsafe { value.get::<(T0, T1, T2, T3, T4)>() };
×
508
                            write!(f, "(")?;
×
509
                            unsafe {
510
                                let ptr = &value.0 as *const T0;
×
NEW
511
                                (T0::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
512
                                    PtrConst::new(ptr),
×
NEW
513
                                    f,
×
514
                                )
515
                            }?;
516
                            write!(f, ", ")?;
×
517
                            unsafe {
518
                                let ptr = &value.1 as *const T1;
×
NEW
519
                                (T1::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
520
                                    PtrConst::new(ptr),
×
NEW
521
                                    f,
×
522
                                )
523
                            }?;
524
                            write!(f, ", ")?;
×
525
                            unsafe {
526
                                let ptr = &value.2 as *const T2;
×
NEW
527
                                (T2::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
528
                                    PtrConst::new(ptr),
×
NEW
529
                                    f,
×
530
                                )
531
                            }?;
532
                            write!(f, ", ")?;
×
533
                            unsafe {
534
                                let ptr = &value.3 as *const T3;
×
NEW
535
                                (T3::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
536
                                    PtrConst::new(ptr),
×
NEW
537
                                    f,
×
538
                                )
539
                            }?;
540
                            write!(f, ", ")?;
×
541
                            unsafe {
542
                                let ptr = &value.4 as *const T4;
×
NEW
543
                                (T4::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
544
                                    PtrConst::new(ptr),
×
NEW
545
                                    f,
×
546
                                )
547
                            }?;
548
                            write!(f, ")")
×
549
                        });
550

551
                        builder = builder.eq(|a, b| {
×
552
                            let a = unsafe { a.get::<(T0, T1, T2, T3, T4)>() };
×
553
                            let b = unsafe { b.get::<(T0, T1, T2, T3, T4)>() };
×
554

555
                            // Compare element 0
556
                            unsafe {
×
557
                                let a_ptr = &a.0 as *const T0;
×
558
                                let b_ptr = &b.0 as *const T0;
×
559
                                if !(T0::SHAPE.vtable.eq.unwrap_unchecked())(
×
560
                                    PtrConst::new(a_ptr),
×
561
                                    PtrConst::new(b_ptr),
×
562
                                ) {
563
                                    return false;
×
564
                                }
565
                            }
566

567
                            // Compare element 1
568
                            unsafe {
×
569
                                let a_ptr = &a.1 as *const T1;
×
570
                                let b_ptr = &b.1 as *const T1;
×
571
                                if !(T1::SHAPE.vtable.eq.unwrap_unchecked())(
×
572
                                    PtrConst::new(a_ptr),
×
573
                                    PtrConst::new(b_ptr),
×
574
                                ) {
575
                                    return false;
×
576
                                }
577
                            }
578

579
                            // Compare element 2
580
                            unsafe {
×
581
                                let a_ptr = &a.2 as *const T2;
×
582
                                let b_ptr = &b.2 as *const T2;
×
583
                                if !(T2::SHAPE.vtable.eq.unwrap_unchecked())(
×
584
                                    PtrConst::new(a_ptr),
×
585
                                    PtrConst::new(b_ptr),
×
586
                                ) {
587
                                    return false;
×
588
                                }
589
                            }
590

591
                            // Compare element 3
592
                            unsafe {
×
593
                                let a_ptr = &a.3 as *const T3;
×
594
                                let b_ptr = &b.3 as *const T3;
×
595
                                if !(T3::SHAPE.vtable.eq.unwrap_unchecked())(
×
596
                                    PtrConst::new(a_ptr),
×
597
                                    PtrConst::new(b_ptr),
×
598
                                ) {
599
                                    return false;
×
600
                                }
601
                            }
602

603
                            // Compare last element
604
                            unsafe {
×
605
                                (T4::SHAPE.vtable.eq.unwrap_unchecked())(
×
606
                                    PtrConst::new(&a.4 as *const T4),
×
607
                                    PtrConst::new(&b.4 as *const T4),
×
608
                                )
609
                            }
610
                        });
611
                    }
612

613
                    builder.build()
614
                },
615
            )
616
            .def(Def::Struct({
617
                Struct::builder()
618
                    .tuple()
619
                    .fields(
620
                        &const {
621
                            [
622
                                field!(0, (T0, T1, T2, T3, T4,),),
623
                                field!(1, (T0, T1, T2, T3, T4,),),
624
                                field!(2, (T0, T1, T2, T3, T4,),),
625
                                field!(3, (T0, T1, T2, T3, T4,),),
626
                                field!(4, (T0, T1, T2, T3, T4,),)
627
                            ]
628
                        },
629
                    )
630
                    .build()
631
            }))
632
            .build()
633
    };
634
}
635
unsafe impl<T0, T1, T2, T3, T4, T5> Facet for (T0, T1, T2, T3, T4, T5)
636
where
637
    T0: Facet,
638
    T1: Facet,
639
    T2: Facet,
640
    T3: Facet,
641
    T4: Facet,
642
    T5: Facet
643
{
644
    const SHAPE: &'static Shape = &const {
NEW
645
        fn type_name<T0, T1, T2, T3, T4, T5>(f: &mut fmt::Formatter, opts: TypeNameOpts) -> fmt::Result
×
646
        where
×
647
            T0: Facet,
×
NEW
648
    T1: Facet,
×
NEW
649
    T2: Facet,
×
NEW
650
    T3: Facet,
×
NEW
651
    T4: Facet,
×
NEW
652
    T5: Facet
×
653
        {
654
            write_type_name_list(
×
655
                f,
×
656
                opts,
×
657
                "(",
×
658
                ", ",
×
659
                ")",
×
660
                &[
×
NEW
661
                    T0::SHAPE, T1::SHAPE, T2::SHAPE, T3::SHAPE, T4::SHAPE, T5::SHAPE,
×
662
                ],
663
            )
664
        }
665

666
        Shape::builder()
667
            .id(ConstTypeId::of::<(T0, T1, T2, T3, T4, T5)>())
668
            .layout(Layout::new::<(T0, T1, T2, T3, T4, T5)>())
669
            .vtable(
670
                &const {
671
                    let mut builder = ValueVTable::builder()
672
                        .type_name(type_name::<T0, T1, T2, T3, T4, T5>)
673
                        .marker_traits(                        {
674
                            T0::SHAPE.vtable.marker_traits
675
                                .intersection(T1::SHAPE.vtable.marker_traits)
676
                                .intersection(T2::SHAPE.vtable.marker_traits)
677
                                .intersection(T3::SHAPE.vtable.marker_traits)
678
                                .intersection(T4::SHAPE.vtable.marker_traits)
679
                                .intersection(T5::SHAPE.vtable.marker_traits)
680
                    });
681

682
                    if Characteristic::Eq.all(&[
683
                        T0::SHAPE, T1::SHAPE, T2::SHAPE, T3::SHAPE, T4::SHAPE, T5::SHAPE,
684
                    ]) {
685
                        builder = builder.debug(|value, f| {
×
686
                            let value = unsafe { value.get::<(T0, T1, T2, T3, T4, T5)>() };
×
687
                            write!(f, "(")?;
×
688
                            unsafe {
689
                                let ptr = &value.0 as *const T0;
×
NEW
690
                                (T0::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
691
                                    PtrConst::new(ptr),
×
NEW
692
                                    f,
×
693
                                )
694
                            }?;
695
                            write!(f, ", ")?;
×
696
                            unsafe {
697
                                let ptr = &value.1 as *const T1;
×
NEW
698
                                (T1::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
699
                                    PtrConst::new(ptr),
×
NEW
700
                                    f,
×
701
                                )
702
                            }?;
703
                            write!(f, ", ")?;
×
704
                            unsafe {
705
                                let ptr = &value.2 as *const T2;
×
NEW
706
                                (T2::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
707
                                    PtrConst::new(ptr),
×
NEW
708
                                    f,
×
709
                                )
710
                            }?;
711
                            write!(f, ", ")?;
×
712
                            unsafe {
713
                                let ptr = &value.3 as *const T3;
×
NEW
714
                                (T3::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
715
                                    PtrConst::new(ptr),
×
NEW
716
                                    f,
×
717
                                )
718
                            }?;
719
                            write!(f, ", ")?;
×
720
                            unsafe {
721
                                let ptr = &value.4 as *const T4;
×
NEW
722
                                (T4::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
723
                                    PtrConst::new(ptr),
×
NEW
724
                                    f,
×
725
                                )
726
                            }?;
727
                            write!(f, ", ")?;
×
728
                            unsafe {
729
                                let ptr = &value.5 as *const T5;
×
NEW
730
                                (T5::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
731
                                    PtrConst::new(ptr),
×
NEW
732
                                    f,
×
733
                                )
734
                            }?;
735
                            write!(f, ")")
×
736
                        });
737

738
                        builder = builder.eq(|a, b| {
×
739
                            let a = unsafe { a.get::<(T0, T1, T2, T3, T4, T5)>() };
×
740
                            let b = unsafe { b.get::<(T0, T1, T2, T3, T4, T5)>() };
×
741

742
                            // Compare element 0
743
                            unsafe {
×
744
                                let a_ptr = &a.0 as *const T0;
×
745
                                let b_ptr = &b.0 as *const T0;
×
746
                                if !(T0::SHAPE.vtable.eq.unwrap_unchecked())(
×
747
                                    PtrConst::new(a_ptr),
×
748
                                    PtrConst::new(b_ptr),
×
749
                                ) {
750
                                    return false;
×
751
                                }
752
                            }
753

754
                            // Compare element 1
755
                            unsafe {
×
756
                                let a_ptr = &a.1 as *const T1;
×
757
                                let b_ptr = &b.1 as *const T1;
×
758
                                if !(T1::SHAPE.vtable.eq.unwrap_unchecked())(
×
759
                                    PtrConst::new(a_ptr),
×
760
                                    PtrConst::new(b_ptr),
×
761
                                ) {
762
                                    return false;
×
763
                                }
764
                            }
765

766
                            // Compare element 2
767
                            unsafe {
×
768
                                let a_ptr = &a.2 as *const T2;
×
769
                                let b_ptr = &b.2 as *const T2;
×
770
                                if !(T2::SHAPE.vtable.eq.unwrap_unchecked())(
×
771
                                    PtrConst::new(a_ptr),
×
772
                                    PtrConst::new(b_ptr),
×
773
                                ) {
774
                                    return false;
×
775
                                }
776
                            }
777

778
                            // Compare element 3
779
                            unsafe {
×
780
                                let a_ptr = &a.3 as *const T3;
×
781
                                let b_ptr = &b.3 as *const T3;
×
782
                                if !(T3::SHAPE.vtable.eq.unwrap_unchecked())(
×
783
                                    PtrConst::new(a_ptr),
×
784
                                    PtrConst::new(b_ptr),
×
785
                                ) {
786
                                    return false;
×
787
                                }
788
                            }
789

790
                            // Compare element 4
791
                            unsafe {
×
792
                                let a_ptr = &a.4 as *const T4;
×
793
                                let b_ptr = &b.4 as *const T4;
×
794
                                if !(T4::SHAPE.vtable.eq.unwrap_unchecked())(
×
795
                                    PtrConst::new(a_ptr),
×
796
                                    PtrConst::new(b_ptr),
×
797
                                ) {
798
                                    return false;
×
799
                                }
800
                            }
801

802
                            // Compare last element
803
                            unsafe {
×
804
                                (T5::SHAPE.vtable.eq.unwrap_unchecked())(
×
805
                                    PtrConst::new(&a.5 as *const T5),
×
806
                                    PtrConst::new(&b.5 as *const T5),
×
807
                                )
808
                            }
809
                        });
810
                    }
811

812
                    builder.build()
813
                },
814
            )
815
            .def(Def::Struct({
816
                Struct::builder()
817
                    .tuple()
818
                    .fields(
819
                        &const {
820
                            [
821
                                field!(0, (T0, T1, T2, T3, T4, T5,),),
822
                                field!(1, (T0, T1, T2, T3, T4, T5,),),
823
                                field!(2, (T0, T1, T2, T3, T4, T5,),),
824
                                field!(3, (T0, T1, T2, T3, T4, T5,),),
825
                                field!(4, (T0, T1, T2, T3, T4, T5,),),
826
                                field!(5, (T0, T1, T2, T3, T4, T5,),)
827
                            ]
828
                        },
829
                    )
830
                    .build()
831
            }))
832
            .build()
833
    };
834
}
835
unsafe impl<T0, T1, T2, T3, T4, T5, T6> Facet for (T0, T1, T2, T3, T4, T5, T6)
836
where
837
    T0: Facet,
838
    T1: Facet,
839
    T2: Facet,
840
    T3: Facet,
841
    T4: Facet,
842
    T5: Facet,
843
    T6: Facet
844
{
845
    const SHAPE: &'static Shape = &const {
NEW
846
        fn type_name<T0, T1, T2, T3, T4, T5, T6>(f: &mut fmt::Formatter, opts: TypeNameOpts) -> fmt::Result
×
847
        where
×
848
            T0: Facet,
×
NEW
849
    T1: Facet,
×
NEW
850
    T2: Facet,
×
NEW
851
    T3: Facet,
×
NEW
852
    T4: Facet,
×
NEW
853
    T5: Facet,
×
NEW
854
    T6: Facet
×
855
        {
856
            write_type_name_list(
×
857
                f,
×
858
                opts,
×
859
                "(",
×
860
                ", ",
×
861
                ")",
×
862
                &[
×
NEW
863
                    T0::SHAPE, T1::SHAPE, T2::SHAPE, T3::SHAPE, T4::SHAPE, T5::SHAPE, T6::SHAPE,
×
864
                ],
865
            )
866
        }
867

868
        Shape::builder()
869
            .id(ConstTypeId::of::<(T0, T1, T2, T3, T4, T5, T6)>())
870
            .layout(Layout::new::<(T0, T1, T2, T3, T4, T5, T6)>())
871
            .vtable(
872
                &const {
873
                    let mut builder = ValueVTable::builder()
874
                        .type_name(type_name::<T0, T1, T2, T3, T4, T5, T6>)
875
                        .marker_traits(                        {
876
                            T0::SHAPE.vtable.marker_traits
877
                                .intersection(T1::SHAPE.vtable.marker_traits)
878
                                .intersection(T2::SHAPE.vtable.marker_traits)
879
                                .intersection(T3::SHAPE.vtable.marker_traits)
880
                                .intersection(T4::SHAPE.vtable.marker_traits)
881
                                .intersection(T5::SHAPE.vtable.marker_traits)
882
                                .intersection(T6::SHAPE.vtable.marker_traits)
883
                    });
884

885
                    if Characteristic::Eq.all(&[
886
                        T0::SHAPE, T1::SHAPE, T2::SHAPE, T3::SHAPE, T4::SHAPE, T5::SHAPE, T6::SHAPE,
887
                    ]) {
888
                        builder = builder.debug(|value, f| {
×
889
                            let value = unsafe { value.get::<(T0, T1, T2, T3, T4, T5, T6)>() };
×
890
                            write!(f, "(")?;
×
891
                            unsafe {
892
                                let ptr = &value.0 as *const T0;
×
NEW
893
                                (T0::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
894
                                    PtrConst::new(ptr),
×
NEW
895
                                    f,
×
896
                                )
897
                            }?;
898
                            write!(f, ", ")?;
×
899
                            unsafe {
900
                                let ptr = &value.1 as *const T1;
×
NEW
901
                                (T1::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
902
                                    PtrConst::new(ptr),
×
NEW
903
                                    f,
×
904
                                )
905
                            }?;
906
                            write!(f, ", ")?;
×
907
                            unsafe {
908
                                let ptr = &value.2 as *const T2;
×
NEW
909
                                (T2::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
910
                                    PtrConst::new(ptr),
×
NEW
911
                                    f,
×
912
                                )
913
                            }?;
914
                            write!(f, ", ")?;
×
915
                            unsafe {
916
                                let ptr = &value.3 as *const T3;
×
NEW
917
                                (T3::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
918
                                    PtrConst::new(ptr),
×
NEW
919
                                    f,
×
920
                                )
921
                            }?;
922
                            write!(f, ", ")?;
×
923
                            unsafe {
924
                                let ptr = &value.4 as *const T4;
×
NEW
925
                                (T4::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
926
                                    PtrConst::new(ptr),
×
NEW
927
                                    f,
×
928
                                )
929
                            }?;
930
                            write!(f, ", ")?;
×
931
                            unsafe {
932
                                let ptr = &value.5 as *const T5;
×
NEW
933
                                (T5::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
934
                                    PtrConst::new(ptr),
×
NEW
935
                                    f,
×
936
                                )
937
                            }?;
938
                            write!(f, ", ")?;
×
939
                            unsafe {
940
                                let ptr = &value.6 as *const T6;
×
NEW
941
                                (T6::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
942
                                    PtrConst::new(ptr),
×
NEW
943
                                    f,
×
944
                                )
945
                            }?;
946
                            write!(f, ")")
×
947
                        });
948

949
                        builder = builder.eq(|a, b| {
×
950
                            let a = unsafe { a.get::<(T0, T1, T2, T3, T4, T5, T6)>() };
×
951
                            let b = unsafe { b.get::<(T0, T1, T2, T3, T4, T5, T6)>() };
×
952

953
                            // Compare element 0
954
                            unsafe {
×
955
                                let a_ptr = &a.0 as *const T0;
×
956
                                let b_ptr = &b.0 as *const T0;
×
957
                                if !(T0::SHAPE.vtable.eq.unwrap_unchecked())(
×
958
                                    PtrConst::new(a_ptr),
×
959
                                    PtrConst::new(b_ptr),
×
960
                                ) {
961
                                    return false;
×
962
                                }
963
                            }
964

965
                            // Compare element 1
966
                            unsafe {
×
967
                                let a_ptr = &a.1 as *const T1;
×
968
                                let b_ptr = &b.1 as *const T1;
×
969
                                if !(T1::SHAPE.vtable.eq.unwrap_unchecked())(
×
970
                                    PtrConst::new(a_ptr),
×
971
                                    PtrConst::new(b_ptr),
×
972
                                ) {
973
                                    return false;
×
974
                                }
975
                            }
976

977
                            // Compare element 2
978
                            unsafe {
×
979
                                let a_ptr = &a.2 as *const T2;
×
980
                                let b_ptr = &b.2 as *const T2;
×
981
                                if !(T2::SHAPE.vtable.eq.unwrap_unchecked())(
×
982
                                    PtrConst::new(a_ptr),
×
983
                                    PtrConst::new(b_ptr),
×
984
                                ) {
985
                                    return false;
×
986
                                }
987
                            }
988

989
                            // Compare element 3
990
                            unsafe {
×
991
                                let a_ptr = &a.3 as *const T3;
×
992
                                let b_ptr = &b.3 as *const T3;
×
993
                                if !(T3::SHAPE.vtable.eq.unwrap_unchecked())(
×
994
                                    PtrConst::new(a_ptr),
×
995
                                    PtrConst::new(b_ptr),
×
996
                                ) {
997
                                    return false;
×
998
                                }
999
                            }
1000

1001
                            // Compare element 4
1002
                            unsafe {
×
1003
                                let a_ptr = &a.4 as *const T4;
×
1004
                                let b_ptr = &b.4 as *const T4;
×
1005
                                if !(T4::SHAPE.vtable.eq.unwrap_unchecked())(
×
1006
                                    PtrConst::new(a_ptr),
×
1007
                                    PtrConst::new(b_ptr),
×
1008
                                ) {
1009
                                    return false;
×
1010
                                }
1011
                            }
1012

1013
                            // Compare element 5
1014
                            unsafe {
×
1015
                                let a_ptr = &a.5 as *const T5;
×
1016
                                let b_ptr = &b.5 as *const T5;
×
1017
                                if !(T5::SHAPE.vtable.eq.unwrap_unchecked())(
×
1018
                                    PtrConst::new(a_ptr),
×
1019
                                    PtrConst::new(b_ptr),
×
1020
                                ) {
1021
                                    return false;
×
1022
                                }
1023
                            }
1024

1025
                            // Compare last element
1026
                            unsafe {
×
1027
                                (T6::SHAPE.vtable.eq.unwrap_unchecked())(
×
1028
                                    PtrConst::new(&a.6 as *const T6),
×
1029
                                    PtrConst::new(&b.6 as *const T6),
×
1030
                                )
1031
                            }
1032
                        });
1033
                    }
1034

1035
                    builder.build()
1036
                },
1037
            )
1038
            .def(Def::Struct({
1039
                Struct::builder()
1040
                    .tuple()
1041
                    .fields(
1042
                        &const {
1043
                            [
1044
                                field!(0, (T0, T1, T2, T3, T4, T5, T6,),),
1045
                                field!(1, (T0, T1, T2, T3, T4, T5, T6,),),
1046
                                field!(2, (T0, T1, T2, T3, T4, T5, T6,),),
1047
                                field!(3, (T0, T1, T2, T3, T4, T5, T6,),),
1048
                                field!(4, (T0, T1, T2, T3, T4, T5, T6,),),
1049
                                field!(5, (T0, T1, T2, T3, T4, T5, T6,),),
1050
                                field!(6, (T0, T1, T2, T3, T4, T5, T6,),)
1051
                            ]
1052
                        },
1053
                    )
1054
                    .build()
1055
            }))
1056
            .build()
1057
    };
1058
}
1059
unsafe impl<T0, T1, T2, T3, T4, T5, T6, T7> Facet for (T0, T1, T2, T3, T4, T5, T6, T7)
1060
where
1061
    T0: Facet,
1062
    T1: Facet,
1063
    T2: Facet,
1064
    T3: Facet,
1065
    T4: Facet,
1066
    T5: Facet,
1067
    T6: Facet,
1068
    T7: Facet
1069
{
1070
    const SHAPE: &'static Shape = &const {
NEW
1071
        fn type_name<T0, T1, T2, T3, T4, T5, T6, T7>(f: &mut fmt::Formatter, opts: TypeNameOpts) -> fmt::Result
×
1072
        where
×
1073
            T0: Facet,
×
NEW
1074
    T1: Facet,
×
NEW
1075
    T2: Facet,
×
NEW
1076
    T3: Facet,
×
NEW
1077
    T4: Facet,
×
NEW
1078
    T5: Facet,
×
NEW
1079
    T6: Facet,
×
NEW
1080
    T7: Facet
×
1081
        {
1082
            write_type_name_list(
×
1083
                f,
×
1084
                opts,
×
1085
                "(",
×
1086
                ", ",
×
1087
                ")",
×
1088
                &[
×
NEW
1089
                    T0::SHAPE, T1::SHAPE, T2::SHAPE, T3::SHAPE, T4::SHAPE, T5::SHAPE, T6::SHAPE, T7::SHAPE,
×
1090
                ],
1091
            )
1092
        }
1093

1094
        Shape::builder()
1095
            .id(ConstTypeId::of::<(T0, T1, T2, T3, T4, T5, T6, T7)>())
1096
            .layout(Layout::new::<(T0, T1, T2, T3, T4, T5, T6, T7)>())
1097
            .vtable(
1098
                &const {
1099
                    let mut builder = ValueVTable::builder()
1100
                        .type_name(type_name::<T0, T1, T2, T3, T4, T5, T6, T7>)
1101
                        .marker_traits(                        {
1102
                            T0::SHAPE.vtable.marker_traits
1103
                                .intersection(T1::SHAPE.vtable.marker_traits)
1104
                                .intersection(T2::SHAPE.vtable.marker_traits)
1105
                                .intersection(T3::SHAPE.vtable.marker_traits)
1106
                                .intersection(T4::SHAPE.vtable.marker_traits)
1107
                                .intersection(T5::SHAPE.vtable.marker_traits)
1108
                                .intersection(T6::SHAPE.vtable.marker_traits)
1109
                                .intersection(T7::SHAPE.vtable.marker_traits)
1110
                    });
1111

1112
                    if Characteristic::Eq.all(&[
1113
                        T0::SHAPE, T1::SHAPE, T2::SHAPE, T3::SHAPE, T4::SHAPE, T5::SHAPE, T6::SHAPE, T7::SHAPE,
1114
                    ]) {
1115
                        builder = builder.debug(|value, f| {
×
1116
                            let value = unsafe { value.get::<(T0, T1, T2, T3, T4, T5, T6, T7)>() };
×
1117
                            write!(f, "(")?;
×
1118
                            unsafe {
1119
                                let ptr = &value.0 as *const T0;
×
NEW
1120
                                (T0::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1121
                                    PtrConst::new(ptr),
×
NEW
1122
                                    f,
×
1123
                                )
1124
                            }?;
1125
                            write!(f, ", ")?;
×
1126
                            unsafe {
1127
                                let ptr = &value.1 as *const T1;
×
NEW
1128
                                (T1::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1129
                                    PtrConst::new(ptr),
×
NEW
1130
                                    f,
×
1131
                                )
1132
                            }?;
1133
                            write!(f, ", ")?;
×
1134
                            unsafe {
1135
                                let ptr = &value.2 as *const T2;
×
NEW
1136
                                (T2::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1137
                                    PtrConst::new(ptr),
×
NEW
1138
                                    f,
×
1139
                                )
1140
                            }?;
1141
                            write!(f, ", ")?;
×
1142
                            unsafe {
1143
                                let ptr = &value.3 as *const T3;
×
NEW
1144
                                (T3::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1145
                                    PtrConst::new(ptr),
×
NEW
1146
                                    f,
×
1147
                                )
1148
                            }?;
1149
                            write!(f, ", ")?;
×
1150
                            unsafe {
1151
                                let ptr = &value.4 as *const T4;
×
NEW
1152
                                (T4::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1153
                                    PtrConst::new(ptr),
×
NEW
1154
                                    f,
×
1155
                                )
1156
                            }?;
1157
                            write!(f, ", ")?;
×
1158
                            unsafe {
1159
                                let ptr = &value.5 as *const T5;
×
NEW
1160
                                (T5::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1161
                                    PtrConst::new(ptr),
×
NEW
1162
                                    f,
×
1163
                                )
1164
                            }?;
1165
                            write!(f, ", ")?;
×
1166
                            unsafe {
1167
                                let ptr = &value.6 as *const T6;
×
NEW
1168
                                (T6::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1169
                                    PtrConst::new(ptr),
×
NEW
1170
                                    f,
×
1171
                                )
1172
                            }?;
1173
                            write!(f, ", ")?;
×
1174
                            unsafe {
1175
                                let ptr = &value.7 as *const T7;
×
NEW
1176
                                (T7::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1177
                                    PtrConst::new(ptr),
×
NEW
1178
                                    f,
×
1179
                                )
1180
                            }?;
1181
                            write!(f, ")")
×
1182
                        });
1183

1184
                        builder = builder.eq(|a, b| {
×
1185
                            let a = unsafe { a.get::<(T0, T1, T2, T3, T4, T5, T6, T7)>() };
×
1186
                            let b = unsafe { b.get::<(T0, T1, T2, T3, T4, T5, T6, T7)>() };
×
1187

1188
                            // Compare element 0
1189
                            unsafe {
×
1190
                                let a_ptr = &a.0 as *const T0;
×
1191
                                let b_ptr = &b.0 as *const T0;
×
1192
                                if !(T0::SHAPE.vtable.eq.unwrap_unchecked())(
×
1193
                                    PtrConst::new(a_ptr),
×
1194
                                    PtrConst::new(b_ptr),
×
1195
                                ) {
1196
                                    return false;
×
1197
                                }
1198
                            }
1199

1200
                            // Compare element 1
1201
                            unsafe {
×
1202
                                let a_ptr = &a.1 as *const T1;
×
1203
                                let b_ptr = &b.1 as *const T1;
×
1204
                                if !(T1::SHAPE.vtable.eq.unwrap_unchecked())(
×
1205
                                    PtrConst::new(a_ptr),
×
1206
                                    PtrConst::new(b_ptr),
×
1207
                                ) {
1208
                                    return false;
×
1209
                                }
1210
                            }
1211

1212
                            // Compare element 2
1213
                            unsafe {
×
1214
                                let a_ptr = &a.2 as *const T2;
×
1215
                                let b_ptr = &b.2 as *const T2;
×
1216
                                if !(T2::SHAPE.vtable.eq.unwrap_unchecked())(
×
1217
                                    PtrConst::new(a_ptr),
×
1218
                                    PtrConst::new(b_ptr),
×
1219
                                ) {
1220
                                    return false;
×
1221
                                }
1222
                            }
1223

1224
                            // Compare element 3
1225
                            unsafe {
×
1226
                                let a_ptr = &a.3 as *const T3;
×
1227
                                let b_ptr = &b.3 as *const T3;
×
1228
                                if !(T3::SHAPE.vtable.eq.unwrap_unchecked())(
×
1229
                                    PtrConst::new(a_ptr),
×
1230
                                    PtrConst::new(b_ptr),
×
1231
                                ) {
1232
                                    return false;
×
1233
                                }
1234
                            }
1235

1236
                            // Compare element 4
1237
                            unsafe {
×
1238
                                let a_ptr = &a.4 as *const T4;
×
1239
                                let b_ptr = &b.4 as *const T4;
×
1240
                                if !(T4::SHAPE.vtable.eq.unwrap_unchecked())(
×
1241
                                    PtrConst::new(a_ptr),
×
1242
                                    PtrConst::new(b_ptr),
×
1243
                                ) {
1244
                                    return false;
×
1245
                                }
1246
                            }
1247

1248
                            // Compare element 5
1249
                            unsafe {
×
1250
                                let a_ptr = &a.5 as *const T5;
×
1251
                                let b_ptr = &b.5 as *const T5;
×
1252
                                if !(T5::SHAPE.vtable.eq.unwrap_unchecked())(
×
1253
                                    PtrConst::new(a_ptr),
×
1254
                                    PtrConst::new(b_ptr),
×
1255
                                ) {
1256
                                    return false;
×
1257
                                }
1258
                            }
1259

1260
                            // Compare element 6
1261
                            unsafe {
×
1262
                                let a_ptr = &a.6 as *const T6;
×
1263
                                let b_ptr = &b.6 as *const T6;
×
1264
                                if !(T6::SHAPE.vtable.eq.unwrap_unchecked())(
×
1265
                                    PtrConst::new(a_ptr),
×
1266
                                    PtrConst::new(b_ptr),
×
1267
                                ) {
1268
                                    return false;
×
1269
                                }
1270
                            }
1271

1272
                            // Compare last element
1273
                            unsafe {
×
1274
                                (T7::SHAPE.vtable.eq.unwrap_unchecked())(
×
1275
                                    PtrConst::new(&a.7 as *const T7),
×
1276
                                    PtrConst::new(&b.7 as *const T7),
×
1277
                                )
1278
                            }
1279
                        });
1280
                    }
1281

1282
                    builder.build()
1283
                },
1284
            )
1285
            .def(Def::Struct({
1286
                Struct::builder()
1287
                    .tuple()
1288
                    .fields(
1289
                        &const {
1290
                            [
1291
                                field!(0, (T0, T1, T2, T3, T4, T5, T6, T7,),),
1292
                                field!(1, (T0, T1, T2, T3, T4, T5, T6, T7,),),
1293
                                field!(2, (T0, T1, T2, T3, T4, T5, T6, T7,),),
1294
                                field!(3, (T0, T1, T2, T3, T4, T5, T6, T7,),),
1295
                                field!(4, (T0, T1, T2, T3, T4, T5, T6, T7,),),
1296
                                field!(5, (T0, T1, T2, T3, T4, T5, T6, T7,),),
1297
                                field!(6, (T0, T1, T2, T3, T4, T5, T6, T7,),),
1298
                                field!(7, (T0, T1, T2, T3, T4, T5, T6, T7,),)
1299
                            ]
1300
                        },
1301
                    )
1302
                    .build()
1303
            }))
1304
            .build()
1305
    };
1306
}
1307
unsafe impl<T0, T1, T2, T3, T4, T5, T6, T7, T8> Facet for (T0, T1, T2, T3, T4, T5, T6, T7, T8)
1308
where
1309
    T0: Facet,
1310
    T1: Facet,
1311
    T2: Facet,
1312
    T3: Facet,
1313
    T4: Facet,
1314
    T5: Facet,
1315
    T6: Facet,
1316
    T7: Facet,
1317
    T8: Facet
1318
{
1319
    const SHAPE: &'static Shape = &const {
NEW
1320
        fn type_name<T0, T1, T2, T3, T4, T5, T6, T7, T8>(f: &mut fmt::Formatter, opts: TypeNameOpts) -> fmt::Result
×
1321
        where
×
1322
            T0: Facet,
×
NEW
1323
    T1: Facet,
×
NEW
1324
    T2: Facet,
×
NEW
1325
    T3: Facet,
×
NEW
1326
    T4: Facet,
×
NEW
1327
    T5: Facet,
×
NEW
1328
    T6: Facet,
×
NEW
1329
    T7: Facet,
×
NEW
1330
    T8: Facet
×
1331
        {
1332
            write_type_name_list(
×
1333
                f,
×
1334
                opts,
×
1335
                "(",
×
1336
                ", ",
×
1337
                ")",
×
1338
                &[
×
NEW
1339
                    T0::SHAPE, T1::SHAPE, T2::SHAPE, T3::SHAPE, T4::SHAPE, T5::SHAPE, T6::SHAPE, T7::SHAPE, T8::SHAPE,
×
1340
                ],
1341
            )
1342
        }
1343

1344
        Shape::builder()
1345
            .id(ConstTypeId::of::<(T0, T1, T2, T3, T4, T5, T6, T7, T8)>())
1346
            .layout(Layout::new::<(T0, T1, T2, T3, T4, T5, T6, T7, T8)>())
1347
            .vtable(
1348
                &const {
1349
                    let mut builder = ValueVTable::builder()
1350
                        .type_name(type_name::<T0, T1, T2, T3, T4, T5, T6, T7, T8>)
1351
                        .marker_traits(                        {
1352
                            T0::SHAPE.vtable.marker_traits
1353
                                .intersection(T1::SHAPE.vtable.marker_traits)
1354
                                .intersection(T2::SHAPE.vtable.marker_traits)
1355
                                .intersection(T3::SHAPE.vtable.marker_traits)
1356
                                .intersection(T4::SHAPE.vtable.marker_traits)
1357
                                .intersection(T5::SHAPE.vtable.marker_traits)
1358
                                .intersection(T6::SHAPE.vtable.marker_traits)
1359
                                .intersection(T7::SHAPE.vtable.marker_traits)
1360
                                .intersection(T8::SHAPE.vtable.marker_traits)
1361
                    });
1362

1363
                    if Characteristic::Eq.all(&[
1364
                        T0::SHAPE, T1::SHAPE, T2::SHAPE, T3::SHAPE, T4::SHAPE, T5::SHAPE, T6::SHAPE, T7::SHAPE, T8::SHAPE,
1365
                    ]) {
1366
                        builder = builder.debug(|value, f| {
×
NEW
1367
                            let value = unsafe { value.get::<(T0, T1, T2, T3, T4, T5, T6, T7, T8)>() };
×
1368
                            write!(f, "(")?;
×
1369
                            unsafe {
1370
                                let ptr = &value.0 as *const T0;
×
NEW
1371
                                (T0::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1372
                                    PtrConst::new(ptr),
×
NEW
1373
                                    f,
×
1374
                                )
1375
                            }?;
1376
                            write!(f, ", ")?;
×
1377
                            unsafe {
1378
                                let ptr = &value.1 as *const T1;
×
NEW
1379
                                (T1::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1380
                                    PtrConst::new(ptr),
×
NEW
1381
                                    f,
×
1382
                                )
1383
                            }?;
1384
                            write!(f, ", ")?;
×
1385
                            unsafe {
1386
                                let ptr = &value.2 as *const T2;
×
NEW
1387
                                (T2::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1388
                                    PtrConst::new(ptr),
×
NEW
1389
                                    f,
×
1390
                                )
1391
                            }?;
1392
                            write!(f, ", ")?;
×
1393
                            unsafe {
1394
                                let ptr = &value.3 as *const T3;
×
NEW
1395
                                (T3::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1396
                                    PtrConst::new(ptr),
×
NEW
1397
                                    f,
×
1398
                                )
1399
                            }?;
1400
                            write!(f, ", ")?;
×
1401
                            unsafe {
1402
                                let ptr = &value.4 as *const T4;
×
NEW
1403
                                (T4::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1404
                                    PtrConst::new(ptr),
×
NEW
1405
                                    f,
×
1406
                                )
1407
                            }?;
1408
                            write!(f, ", ")?;
×
1409
                            unsafe {
1410
                                let ptr = &value.5 as *const T5;
×
NEW
1411
                                (T5::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1412
                                    PtrConst::new(ptr),
×
NEW
1413
                                    f,
×
1414
                                )
1415
                            }?;
1416
                            write!(f, ", ")?;
×
1417
                            unsafe {
1418
                                let ptr = &value.6 as *const T6;
×
NEW
1419
                                (T6::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1420
                                    PtrConst::new(ptr),
×
NEW
1421
                                    f,
×
1422
                                )
1423
                            }?;
1424
                            write!(f, ", ")?;
×
1425
                            unsafe {
1426
                                let ptr = &value.7 as *const T7;
×
NEW
1427
                                (T7::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1428
                                    PtrConst::new(ptr),
×
NEW
1429
                                    f,
×
1430
                                )
1431
                            }?;
1432
                            write!(f, ", ")?;
×
1433
                            unsafe {
1434
                                let ptr = &value.8 as *const T8;
×
NEW
1435
                                (T8::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1436
                                    PtrConst::new(ptr),
×
NEW
1437
                                    f,
×
1438
                                )
1439
                            }?;
1440
                            write!(f, ")")
×
1441
                        });
1442

1443
                        builder = builder.eq(|a, b| {
×
1444
                            let a = unsafe { a.get::<(T0, T1, T2, T3, T4, T5, T6, T7, T8)>() };
×
1445
                            let b = unsafe { b.get::<(T0, T1, T2, T3, T4, T5, T6, T7, T8)>() };
×
1446

1447
                            // Compare element 0
1448
                            unsafe {
×
1449
                                let a_ptr = &a.0 as *const T0;
×
1450
                                let b_ptr = &b.0 as *const T0;
×
1451
                                if !(T0::SHAPE.vtable.eq.unwrap_unchecked())(
×
1452
                                    PtrConst::new(a_ptr),
×
1453
                                    PtrConst::new(b_ptr),
×
1454
                                ) {
1455
                                    return false;
×
1456
                                }
1457
                            }
1458

1459
                            // Compare element 1
1460
                            unsafe {
×
1461
                                let a_ptr = &a.1 as *const T1;
×
1462
                                let b_ptr = &b.1 as *const T1;
×
1463
                                if !(T1::SHAPE.vtable.eq.unwrap_unchecked())(
×
1464
                                    PtrConst::new(a_ptr),
×
1465
                                    PtrConst::new(b_ptr),
×
1466
                                ) {
1467
                                    return false;
×
1468
                                }
1469
                            }
1470

1471
                            // Compare element 2
1472
                            unsafe {
×
1473
                                let a_ptr = &a.2 as *const T2;
×
1474
                                let b_ptr = &b.2 as *const T2;
×
1475
                                if !(T2::SHAPE.vtable.eq.unwrap_unchecked())(
×
1476
                                    PtrConst::new(a_ptr),
×
1477
                                    PtrConst::new(b_ptr),
×
1478
                                ) {
1479
                                    return false;
×
1480
                                }
1481
                            }
1482

1483
                            // Compare element 3
1484
                            unsafe {
×
1485
                                let a_ptr = &a.3 as *const T3;
×
1486
                                let b_ptr = &b.3 as *const T3;
×
1487
                                if !(T3::SHAPE.vtable.eq.unwrap_unchecked())(
×
1488
                                    PtrConst::new(a_ptr),
×
1489
                                    PtrConst::new(b_ptr),
×
1490
                                ) {
1491
                                    return false;
×
1492
                                }
1493
                            }
1494

1495
                            // Compare element 4
1496
                            unsafe {
×
1497
                                let a_ptr = &a.4 as *const T4;
×
1498
                                let b_ptr = &b.4 as *const T4;
×
1499
                                if !(T4::SHAPE.vtable.eq.unwrap_unchecked())(
×
1500
                                    PtrConst::new(a_ptr),
×
1501
                                    PtrConst::new(b_ptr),
×
1502
                                ) {
1503
                                    return false;
×
1504
                                }
1505
                            }
1506

1507
                            // Compare element 5
1508
                            unsafe {
×
1509
                                let a_ptr = &a.5 as *const T5;
×
1510
                                let b_ptr = &b.5 as *const T5;
×
1511
                                if !(T5::SHAPE.vtable.eq.unwrap_unchecked())(
×
1512
                                    PtrConst::new(a_ptr),
×
1513
                                    PtrConst::new(b_ptr),
×
1514
                                ) {
1515
                                    return false;
×
1516
                                }
1517
                            }
1518

1519
                            // Compare element 6
1520
                            unsafe {
×
1521
                                let a_ptr = &a.6 as *const T6;
×
1522
                                let b_ptr = &b.6 as *const T6;
×
1523
                                if !(T6::SHAPE.vtable.eq.unwrap_unchecked())(
×
1524
                                    PtrConst::new(a_ptr),
×
1525
                                    PtrConst::new(b_ptr),
×
1526
                                ) {
1527
                                    return false;
×
1528
                                }
1529
                            }
1530

1531
                            // Compare element 7
1532
                            unsafe {
×
1533
                                let a_ptr = &a.7 as *const T7;
×
1534
                                let b_ptr = &b.7 as *const T7;
×
1535
                                if !(T7::SHAPE.vtable.eq.unwrap_unchecked())(
×
1536
                                    PtrConst::new(a_ptr),
×
1537
                                    PtrConst::new(b_ptr),
×
1538
                                ) {
1539
                                    return false;
×
1540
                                }
1541
                            }
1542

1543
                            // Compare last element
1544
                            unsafe {
×
1545
                                (T8::SHAPE.vtable.eq.unwrap_unchecked())(
×
1546
                                    PtrConst::new(&a.8 as *const T8),
×
1547
                                    PtrConst::new(&b.8 as *const T8),
×
1548
                                )
1549
                            }
1550
                        });
1551
                    }
1552

1553
                    builder.build()
1554
                },
1555
            )
1556
            .def(Def::Struct({
1557
                Struct::builder()
1558
                    .tuple()
1559
                    .fields(
1560
                        &const {
1561
                            [
1562
                                field!(0, (T0, T1, T2, T3, T4, T5, T6, T7, T8,),),
1563
                                field!(1, (T0, T1, T2, T3, T4, T5, T6, T7, T8,),),
1564
                                field!(2, (T0, T1, T2, T3, T4, T5, T6, T7, T8,),),
1565
                                field!(3, (T0, T1, T2, T3, T4, T5, T6, T7, T8,),),
1566
                                field!(4, (T0, T1, T2, T3, T4, T5, T6, T7, T8,),),
1567
                                field!(5, (T0, T1, T2, T3, T4, T5, T6, T7, T8,),),
1568
                                field!(6, (T0, T1, T2, T3, T4, T5, T6, T7, T8,),),
1569
                                field!(7, (T0, T1, T2, T3, T4, T5, T6, T7, T8,),),
1570
                                field!(8, (T0, T1, T2, T3, T4, T5, T6, T7, T8,),)
1571
                            ]
1572
                        },
1573
                    )
1574
                    .build()
1575
            }))
1576
            .build()
1577
    };
1578
}
1579
unsafe impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> Facet for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)
1580
where
1581
    T0: Facet,
1582
    T1: Facet,
1583
    T2: Facet,
1584
    T3: Facet,
1585
    T4: Facet,
1586
    T5: Facet,
1587
    T6: Facet,
1588
    T7: Facet,
1589
    T8: Facet,
1590
    T9: Facet
1591
{
1592
    const SHAPE: &'static Shape = &const {
NEW
1593
        fn type_name<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>(f: &mut fmt::Formatter, opts: TypeNameOpts) -> fmt::Result
×
1594
        where
×
1595
            T0: Facet,
×
NEW
1596
    T1: Facet,
×
NEW
1597
    T2: Facet,
×
NEW
1598
    T3: Facet,
×
NEW
1599
    T4: Facet,
×
NEW
1600
    T5: Facet,
×
NEW
1601
    T6: Facet,
×
NEW
1602
    T7: Facet,
×
NEW
1603
    T8: Facet,
×
NEW
1604
    T9: Facet
×
1605
        {
1606
            write_type_name_list(
×
1607
                f,
×
1608
                opts,
×
1609
                "(",
×
1610
                ", ",
×
1611
                ")",
×
1612
                &[
×
NEW
1613
                    T0::SHAPE, T1::SHAPE, T2::SHAPE, T3::SHAPE, T4::SHAPE, T5::SHAPE, T6::SHAPE, T7::SHAPE, T8::SHAPE, T9::SHAPE,
×
1614
                ],
1615
            )
1616
        }
1617

1618
        Shape::builder()
1619
            .id(ConstTypeId::of::<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)>())
1620
            .layout(Layout::new::<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)>())
1621
            .vtable(
1622
                &const {
1623
                    let mut builder = ValueVTable::builder()
1624
                        .type_name(type_name::<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>)
1625
                        .marker_traits(                        {
1626
                            T0::SHAPE.vtable.marker_traits
1627
                                .intersection(T1::SHAPE.vtable.marker_traits)
1628
                                .intersection(T2::SHAPE.vtable.marker_traits)
1629
                                .intersection(T3::SHAPE.vtable.marker_traits)
1630
                                .intersection(T4::SHAPE.vtable.marker_traits)
1631
                                .intersection(T5::SHAPE.vtable.marker_traits)
1632
                                .intersection(T6::SHAPE.vtable.marker_traits)
1633
                                .intersection(T7::SHAPE.vtable.marker_traits)
1634
                                .intersection(T8::SHAPE.vtable.marker_traits)
1635
                                .intersection(T9::SHAPE.vtable.marker_traits)
1636
                    });
1637

1638
                    if Characteristic::Eq.all(&[
1639
                        T0::SHAPE, T1::SHAPE, T2::SHAPE, T3::SHAPE, T4::SHAPE, T5::SHAPE, T6::SHAPE, T7::SHAPE, T8::SHAPE, T9::SHAPE,
1640
                    ]) {
1641
                        builder = builder.debug(|value, f| {
×
NEW
1642
                            let value = unsafe { value.get::<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)>() };
×
1643
                            write!(f, "(")?;
×
1644
                            unsafe {
1645
                                let ptr = &value.0 as *const T0;
×
NEW
1646
                                (T0::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1647
                                    PtrConst::new(ptr),
×
NEW
1648
                                    f,
×
1649
                                )
1650
                            }?;
1651
                            write!(f, ", ")?;
×
1652
                            unsafe {
1653
                                let ptr = &value.1 as *const T1;
×
NEW
1654
                                (T1::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1655
                                    PtrConst::new(ptr),
×
NEW
1656
                                    f,
×
1657
                                )
1658
                            }?;
1659
                            write!(f, ", ")?;
×
1660
                            unsafe {
1661
                                let ptr = &value.2 as *const T2;
×
NEW
1662
                                (T2::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1663
                                    PtrConst::new(ptr),
×
NEW
1664
                                    f,
×
1665
                                )
1666
                            }?;
1667
                            write!(f, ", ")?;
×
1668
                            unsafe {
1669
                                let ptr = &value.3 as *const T3;
×
NEW
1670
                                (T3::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1671
                                    PtrConst::new(ptr),
×
NEW
1672
                                    f,
×
1673
                                )
1674
                            }?;
1675
                            write!(f, ", ")?;
×
1676
                            unsafe {
1677
                                let ptr = &value.4 as *const T4;
×
NEW
1678
                                (T4::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1679
                                    PtrConst::new(ptr),
×
NEW
1680
                                    f,
×
1681
                                )
1682
                            }?;
1683
                            write!(f, ", ")?;
×
1684
                            unsafe {
1685
                                let ptr = &value.5 as *const T5;
×
NEW
1686
                                (T5::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1687
                                    PtrConst::new(ptr),
×
NEW
1688
                                    f,
×
1689
                                )
1690
                            }?;
1691
                            write!(f, ", ")?;
×
1692
                            unsafe {
1693
                                let ptr = &value.6 as *const T6;
×
NEW
1694
                                (T6::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1695
                                    PtrConst::new(ptr),
×
NEW
1696
                                    f,
×
1697
                                )
1698
                            }?;
1699
                            write!(f, ", ")?;
×
1700
                            unsafe {
1701
                                let ptr = &value.7 as *const T7;
×
NEW
1702
                                (T7::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1703
                                    PtrConst::new(ptr),
×
NEW
1704
                                    f,
×
1705
                                )
1706
                            }?;
1707
                            write!(f, ", ")?;
×
1708
                            unsafe {
1709
                                let ptr = &value.8 as *const T8;
×
NEW
1710
                                (T8::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1711
                                    PtrConst::new(ptr),
×
NEW
1712
                                    f,
×
1713
                                )
1714
                            }?;
1715
                            write!(f, ", ")?;
×
1716
                            unsafe {
1717
                                let ptr = &value.9 as *const T9;
×
NEW
1718
                                (T9::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1719
                                    PtrConst::new(ptr),
×
NEW
1720
                                    f,
×
1721
                                )
1722
                            }?;
1723
                            write!(f, ")")
×
1724
                        });
1725

1726
                        builder = builder.eq(|a, b| {
×
1727
                            let a = unsafe { a.get::<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)>() };
×
1728
                            let b = unsafe { b.get::<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)>() };
×
1729

1730
                            // Compare element 0
1731
                            unsafe {
×
1732
                                let a_ptr = &a.0 as *const T0;
×
1733
                                let b_ptr = &b.0 as *const T0;
×
1734
                                if !(T0::SHAPE.vtable.eq.unwrap_unchecked())(
×
1735
                                    PtrConst::new(a_ptr),
×
1736
                                    PtrConst::new(b_ptr),
×
1737
                                ) {
1738
                                    return false;
×
1739
                                }
1740
                            }
1741

1742
                            // Compare element 1
1743
                            unsafe {
×
1744
                                let a_ptr = &a.1 as *const T1;
×
1745
                                let b_ptr = &b.1 as *const T1;
×
1746
                                if !(T1::SHAPE.vtable.eq.unwrap_unchecked())(
×
1747
                                    PtrConst::new(a_ptr),
×
1748
                                    PtrConst::new(b_ptr),
×
1749
                                ) {
1750
                                    return false;
×
1751
                                }
1752
                            }
1753

1754
                            // Compare element 2
1755
                            unsafe {
×
1756
                                let a_ptr = &a.2 as *const T2;
×
1757
                                let b_ptr = &b.2 as *const T2;
×
1758
                                if !(T2::SHAPE.vtable.eq.unwrap_unchecked())(
×
1759
                                    PtrConst::new(a_ptr),
×
1760
                                    PtrConst::new(b_ptr),
×
1761
                                ) {
1762
                                    return false;
×
1763
                                }
1764
                            }
1765

1766
                            // Compare element 3
1767
                            unsafe {
×
1768
                                let a_ptr = &a.3 as *const T3;
×
1769
                                let b_ptr = &b.3 as *const T3;
×
1770
                                if !(T3::SHAPE.vtable.eq.unwrap_unchecked())(
×
1771
                                    PtrConst::new(a_ptr),
×
1772
                                    PtrConst::new(b_ptr),
×
1773
                                ) {
1774
                                    return false;
×
1775
                                }
1776
                            }
1777

1778
                            // Compare element 4
1779
                            unsafe {
×
1780
                                let a_ptr = &a.4 as *const T4;
×
1781
                                let b_ptr = &b.4 as *const T4;
×
1782
                                if !(T4::SHAPE.vtable.eq.unwrap_unchecked())(
×
1783
                                    PtrConst::new(a_ptr),
×
1784
                                    PtrConst::new(b_ptr),
×
1785
                                ) {
1786
                                    return false;
×
1787
                                }
1788
                            }
1789

1790
                            // Compare element 5
1791
                            unsafe {
×
1792
                                let a_ptr = &a.5 as *const T5;
×
1793
                                let b_ptr = &b.5 as *const T5;
×
1794
                                if !(T5::SHAPE.vtable.eq.unwrap_unchecked())(
×
1795
                                    PtrConst::new(a_ptr),
×
1796
                                    PtrConst::new(b_ptr),
×
1797
                                ) {
1798
                                    return false;
×
1799
                                }
1800
                            }
1801

1802
                            // Compare element 6
1803
                            unsafe {
×
1804
                                let a_ptr = &a.6 as *const T6;
×
1805
                                let b_ptr = &b.6 as *const T6;
×
1806
                                if !(T6::SHAPE.vtable.eq.unwrap_unchecked())(
×
1807
                                    PtrConst::new(a_ptr),
×
1808
                                    PtrConst::new(b_ptr),
×
1809
                                ) {
1810
                                    return false;
×
1811
                                }
1812
                            }
1813

1814
                            // Compare element 7
1815
                            unsafe {
×
1816
                                let a_ptr = &a.7 as *const T7;
×
1817
                                let b_ptr = &b.7 as *const T7;
×
1818
                                if !(T7::SHAPE.vtable.eq.unwrap_unchecked())(
×
1819
                                    PtrConst::new(a_ptr),
×
1820
                                    PtrConst::new(b_ptr),
×
1821
                                ) {
1822
                                    return false;
×
1823
                                }
1824
                            }
1825

1826
                            // Compare element 8
1827
                            unsafe {
×
1828
                                let a_ptr = &a.8 as *const T8;
×
1829
                                let b_ptr = &b.8 as *const T8;
×
1830
                                if !(T8::SHAPE.vtable.eq.unwrap_unchecked())(
×
1831
                                    PtrConst::new(a_ptr),
×
1832
                                    PtrConst::new(b_ptr),
×
1833
                                ) {
1834
                                    return false;
×
1835
                                }
1836
                            }
1837

1838
                            // Compare last element
1839
                            unsafe {
×
1840
                                (T9::SHAPE.vtable.eq.unwrap_unchecked())(
×
1841
                                    PtrConst::new(&a.9 as *const T9),
×
1842
                                    PtrConst::new(&b.9 as *const T9),
×
1843
                                )
1844
                            }
1845
                        });
1846
                    }
1847

1848
                    builder.build()
1849
                },
1850
            )
1851
            .def(Def::Struct({
1852
                Struct::builder()
1853
                    .tuple()
1854
                    .fields(
1855
                        &const {
1856
                            [
1857
                                field!(0, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9,),),
1858
                                field!(1, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9,),),
1859
                                field!(2, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9,),),
1860
                                field!(3, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9,),),
1861
                                field!(4, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9,),),
1862
                                field!(5, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9,),),
1863
                                field!(6, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9,),),
1864
                                field!(7, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9,),),
1865
                                field!(8, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9,),),
1866
                                field!(9, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9,),)
1867
                            ]
1868
                        },
1869
                    )
1870
                    .build()
1871
            }))
1872
            .build()
1873
    };
1874
}
1875
unsafe impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Facet for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
1876
where
1877
    T0: Facet,
1878
    T1: Facet,
1879
    T2: Facet,
1880
    T3: Facet,
1881
    T4: Facet,
1882
    T5: Facet,
1883
    T6: Facet,
1884
    T7: Facet,
1885
    T8: Facet,
1886
    T9: Facet,
1887
    T10: Facet
1888
{
1889
    const SHAPE: &'static Shape = &const {
NEW
1890
        fn type_name<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(f: &mut fmt::Formatter, opts: TypeNameOpts) -> fmt::Result
×
1891
        where
×
1892
            T0: Facet,
×
NEW
1893
    T1: Facet,
×
NEW
1894
    T2: Facet,
×
NEW
1895
    T3: Facet,
×
NEW
1896
    T4: Facet,
×
NEW
1897
    T5: Facet,
×
NEW
1898
    T6: Facet,
×
NEW
1899
    T7: Facet,
×
NEW
1900
    T8: Facet,
×
NEW
1901
    T9: Facet,
×
NEW
1902
    T10: Facet
×
1903
        {
1904
            write_type_name_list(
×
1905
                f,
×
1906
                opts,
×
1907
                "(",
×
1908
                ", ",
×
1909
                ")",
×
1910
                &[
×
NEW
1911
                    T0::SHAPE, T1::SHAPE, T2::SHAPE, T3::SHAPE, T4::SHAPE, T5::SHAPE, T6::SHAPE, T7::SHAPE, T8::SHAPE, T9::SHAPE, T10::SHAPE,
×
1912
                ],
1913
            )
1914
        }
1915

1916
        Shape::builder()
1917
            .id(ConstTypeId::of::<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)>())
1918
            .layout(Layout::new::<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)>())
1919
            .vtable(
1920
                &const {
1921
                    let mut builder = ValueVTable::builder()
1922
                        .type_name(type_name::<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>)
1923
                        .marker_traits(                        {
1924
                            T0::SHAPE.vtable.marker_traits
1925
                                .intersection(T1::SHAPE.vtable.marker_traits)
1926
                                .intersection(T2::SHAPE.vtable.marker_traits)
1927
                                .intersection(T3::SHAPE.vtable.marker_traits)
1928
                                .intersection(T4::SHAPE.vtable.marker_traits)
1929
                                .intersection(T5::SHAPE.vtable.marker_traits)
1930
                                .intersection(T6::SHAPE.vtable.marker_traits)
1931
                                .intersection(T7::SHAPE.vtable.marker_traits)
1932
                                .intersection(T8::SHAPE.vtable.marker_traits)
1933
                                .intersection(T9::SHAPE.vtable.marker_traits)
1934
                                .intersection(T10::SHAPE.vtable.marker_traits)
1935
                    });
1936

1937
                    if Characteristic::Eq.all(&[
1938
                        T0::SHAPE, T1::SHAPE, T2::SHAPE, T3::SHAPE, T4::SHAPE, T5::SHAPE, T6::SHAPE, T7::SHAPE, T8::SHAPE, T9::SHAPE, T10::SHAPE,
1939
                    ]) {
1940
                        builder = builder.debug(|value, f| {
×
NEW
1941
                            let value = unsafe { value.get::<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)>() };
×
1942
                            write!(f, "(")?;
×
1943
                            unsafe {
1944
                                let ptr = &value.0 as *const T0;
×
NEW
1945
                                (T0::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1946
                                    PtrConst::new(ptr),
×
NEW
1947
                                    f,
×
1948
                                )
1949
                            }?;
1950
                            write!(f, ", ")?;
×
1951
                            unsafe {
1952
                                let ptr = &value.1 as *const T1;
×
NEW
1953
                                (T1::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1954
                                    PtrConst::new(ptr),
×
NEW
1955
                                    f,
×
1956
                                )
1957
                            }?;
1958
                            write!(f, ", ")?;
×
1959
                            unsafe {
1960
                                let ptr = &value.2 as *const T2;
×
NEW
1961
                                (T2::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1962
                                    PtrConst::new(ptr),
×
NEW
1963
                                    f,
×
1964
                                )
1965
                            }?;
1966
                            write!(f, ", ")?;
×
1967
                            unsafe {
1968
                                let ptr = &value.3 as *const T3;
×
NEW
1969
                                (T3::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1970
                                    PtrConst::new(ptr),
×
NEW
1971
                                    f,
×
1972
                                )
1973
                            }?;
1974
                            write!(f, ", ")?;
×
1975
                            unsafe {
1976
                                let ptr = &value.4 as *const T4;
×
NEW
1977
                                (T4::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1978
                                    PtrConst::new(ptr),
×
NEW
1979
                                    f,
×
1980
                                )
1981
                            }?;
1982
                            write!(f, ", ")?;
×
1983
                            unsafe {
1984
                                let ptr = &value.5 as *const T5;
×
NEW
1985
                                (T5::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1986
                                    PtrConst::new(ptr),
×
NEW
1987
                                    f,
×
1988
                                )
1989
                            }?;
1990
                            write!(f, ", ")?;
×
1991
                            unsafe {
1992
                                let ptr = &value.6 as *const T6;
×
NEW
1993
                                (T6::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
1994
                                    PtrConst::new(ptr),
×
NEW
1995
                                    f,
×
1996
                                )
1997
                            }?;
1998
                            write!(f, ", ")?;
×
1999
                            unsafe {
2000
                                let ptr = &value.7 as *const T7;
×
NEW
2001
                                (T7::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
2002
                                    PtrConst::new(ptr),
×
NEW
2003
                                    f,
×
2004
                                )
2005
                            }?;
2006
                            write!(f, ", ")?;
×
2007
                            unsafe {
2008
                                let ptr = &value.8 as *const T8;
×
NEW
2009
                                (T8::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
2010
                                    PtrConst::new(ptr),
×
NEW
2011
                                    f,
×
2012
                                )
2013
                            }?;
2014
                            write!(f, ", ")?;
×
2015
                            unsafe {
2016
                                let ptr = &value.9 as *const T9;
×
NEW
2017
                                (T9::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
2018
                                    PtrConst::new(ptr),
×
NEW
2019
                                    f,
×
2020
                                )
2021
                            }?;
2022
                            write!(f, ", ")?;
×
2023
                            unsafe {
2024
                                let ptr = &value.10 as *const T10;
×
NEW
2025
                                (T10::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
2026
                                    PtrConst::new(ptr),
×
NEW
2027
                                    f,
×
2028
                                )
2029
                            }?;
2030
                            write!(f, ")")
×
2031
                        });
2032

2033
                        builder = builder.eq(|a, b| {
×
NEW
2034
                            let a = unsafe { a.get::<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)>() };
×
NEW
2035
                            let b = unsafe { b.get::<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)>() };
×
2036

2037
                            // Compare element 0
2038
                            unsafe {
×
2039
                                let a_ptr = &a.0 as *const T0;
×
2040
                                let b_ptr = &b.0 as *const T0;
×
2041
                                if !(T0::SHAPE.vtable.eq.unwrap_unchecked())(
×
2042
                                    PtrConst::new(a_ptr),
×
2043
                                    PtrConst::new(b_ptr),
×
2044
                                ) {
2045
                                    return false;
×
2046
                                }
2047
                            }
2048

2049
                            // Compare element 1
2050
                            unsafe {
×
2051
                                let a_ptr = &a.1 as *const T1;
×
2052
                                let b_ptr = &b.1 as *const T1;
×
2053
                                if !(T1::SHAPE.vtable.eq.unwrap_unchecked())(
×
2054
                                    PtrConst::new(a_ptr),
×
2055
                                    PtrConst::new(b_ptr),
×
2056
                                ) {
2057
                                    return false;
×
2058
                                }
2059
                            }
2060

2061
                            // Compare element 2
2062
                            unsafe {
×
2063
                                let a_ptr = &a.2 as *const T2;
×
2064
                                let b_ptr = &b.2 as *const T2;
×
2065
                                if !(T2::SHAPE.vtable.eq.unwrap_unchecked())(
×
2066
                                    PtrConst::new(a_ptr),
×
2067
                                    PtrConst::new(b_ptr),
×
2068
                                ) {
2069
                                    return false;
×
2070
                                }
2071
                            }
2072

2073
                            // Compare element 3
2074
                            unsafe {
×
2075
                                let a_ptr = &a.3 as *const T3;
×
2076
                                let b_ptr = &b.3 as *const T3;
×
2077
                                if !(T3::SHAPE.vtable.eq.unwrap_unchecked())(
×
2078
                                    PtrConst::new(a_ptr),
×
2079
                                    PtrConst::new(b_ptr),
×
2080
                                ) {
2081
                                    return false;
×
2082
                                }
2083
                            }
2084

2085
                            // Compare element 4
2086
                            unsafe {
×
2087
                                let a_ptr = &a.4 as *const T4;
×
2088
                                let b_ptr = &b.4 as *const T4;
×
2089
                                if !(T4::SHAPE.vtable.eq.unwrap_unchecked())(
×
2090
                                    PtrConst::new(a_ptr),
×
2091
                                    PtrConst::new(b_ptr),
×
2092
                                ) {
2093
                                    return false;
×
2094
                                }
2095
                            }
2096

2097
                            // Compare element 5
2098
                            unsafe {
×
2099
                                let a_ptr = &a.5 as *const T5;
×
2100
                                let b_ptr = &b.5 as *const T5;
×
2101
                                if !(T5::SHAPE.vtable.eq.unwrap_unchecked())(
×
2102
                                    PtrConst::new(a_ptr),
×
2103
                                    PtrConst::new(b_ptr),
×
2104
                                ) {
2105
                                    return false;
×
2106
                                }
2107
                            }
2108

2109
                            // Compare element 6
2110
                            unsafe {
×
2111
                                let a_ptr = &a.6 as *const T6;
×
2112
                                let b_ptr = &b.6 as *const T6;
×
2113
                                if !(T6::SHAPE.vtable.eq.unwrap_unchecked())(
×
2114
                                    PtrConst::new(a_ptr),
×
2115
                                    PtrConst::new(b_ptr),
×
2116
                                ) {
2117
                                    return false;
×
2118
                                }
2119
                            }
2120

2121
                            // Compare element 7
2122
                            unsafe {
×
2123
                                let a_ptr = &a.7 as *const T7;
×
2124
                                let b_ptr = &b.7 as *const T7;
×
2125
                                if !(T7::SHAPE.vtable.eq.unwrap_unchecked())(
×
2126
                                    PtrConst::new(a_ptr),
×
2127
                                    PtrConst::new(b_ptr),
×
2128
                                ) {
2129
                                    return false;
×
2130
                                }
2131
                            }
2132

2133
                            // Compare element 8
2134
                            unsafe {
×
2135
                                let a_ptr = &a.8 as *const T8;
×
2136
                                let b_ptr = &b.8 as *const T8;
×
2137
                                if !(T8::SHAPE.vtable.eq.unwrap_unchecked())(
×
2138
                                    PtrConst::new(a_ptr),
×
2139
                                    PtrConst::new(b_ptr),
×
2140
                                ) {
2141
                                    return false;
×
2142
                                }
2143
                            }
2144

2145
                            // Compare element 9
2146
                            unsafe {
×
2147
                                let a_ptr = &a.9 as *const T9;
×
2148
                                let b_ptr = &b.9 as *const T9;
×
2149
                                if !(T9::SHAPE.vtable.eq.unwrap_unchecked())(
×
2150
                                    PtrConst::new(a_ptr),
×
2151
                                    PtrConst::new(b_ptr),
×
2152
                                ) {
2153
                                    return false;
×
2154
                                }
2155
                            }
2156

2157
                            // Compare last element
2158
                            unsafe {
×
2159
                                (T10::SHAPE.vtable.eq.unwrap_unchecked())(
×
2160
                                    PtrConst::new(&a.10 as *const T10),
×
2161
                                    PtrConst::new(&b.10 as *const T10),
×
2162
                                )
2163
                            }
2164
                        });
2165
                    }
2166

2167
                    builder.build()
2168
                },
2169
            )
2170
            .def(Def::Struct({
2171
                Struct::builder()
2172
                    .tuple()
2173
                    .fields(
2174
                        &const {
2175
                            [
2176
                                field!(0, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,),),
2177
                                field!(1, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,),),
2178
                                field!(2, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,),),
2179
                                field!(3, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,),),
2180
                                field!(4, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,),),
2181
                                field!(5, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,),),
2182
                                field!(6, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,),),
2183
                                field!(7, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,),),
2184
                                field!(8, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,),),
2185
                                field!(9, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,),),
2186
                                field!(10, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,),)
2187
                            ]
2188
                        },
2189
                    )
2190
                    .build()
2191
            }))
2192
            .build()
2193
    };
2194
}
2195
unsafe impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Facet for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
2196
where
2197
    T0: Facet,
2198
    T1: Facet,
2199
    T2: Facet,
2200
    T3: Facet,
2201
    T4: Facet,
2202
    T5: Facet,
2203
    T6: Facet,
2204
    T7: Facet,
2205
    T8: Facet,
2206
    T9: Facet,
2207
    T10: Facet,
2208
    T11: Facet
2209
{
2210
    const SHAPE: &'static Shape = &const {
NEW
2211
        fn type_name<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(f: &mut fmt::Formatter, opts: TypeNameOpts) -> fmt::Result
×
2212
        where
×
2213
            T0: Facet,
×
NEW
2214
    T1: Facet,
×
NEW
2215
    T2: Facet,
×
NEW
2216
    T3: Facet,
×
NEW
2217
    T4: Facet,
×
NEW
2218
    T5: Facet,
×
NEW
2219
    T6: Facet,
×
NEW
2220
    T7: Facet,
×
NEW
2221
    T8: Facet,
×
NEW
2222
    T9: Facet,
×
NEW
2223
    T10: Facet,
×
NEW
2224
    T11: Facet
×
2225
        {
2226
            write_type_name_list(
×
2227
                f,
×
2228
                opts,
×
2229
                "(",
×
2230
                ", ",
×
2231
                ")",
×
2232
                &[
×
NEW
2233
                    T0::SHAPE, T1::SHAPE, T2::SHAPE, T3::SHAPE, T4::SHAPE, T5::SHAPE, T6::SHAPE, T7::SHAPE, T8::SHAPE, T9::SHAPE, T10::SHAPE, T11::SHAPE,
×
2234
                ],
2235
            )
2236
        }
2237

2238
        Shape::builder()
2239
            .id(ConstTypeId::of::<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)>())
2240
            .layout(Layout::new::<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)>())
2241
            .vtable(
2242
                &const {
2243
                    let mut builder = ValueVTable::builder()
2244
                        .type_name(type_name::<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>)
2245
                        .marker_traits(                        {
2246
                            T0::SHAPE.vtable.marker_traits
2247
                                .intersection(T1::SHAPE.vtable.marker_traits)
2248
                                .intersection(T2::SHAPE.vtable.marker_traits)
2249
                                .intersection(T3::SHAPE.vtable.marker_traits)
2250
                                .intersection(T4::SHAPE.vtable.marker_traits)
2251
                                .intersection(T5::SHAPE.vtable.marker_traits)
2252
                                .intersection(T6::SHAPE.vtable.marker_traits)
2253
                                .intersection(T7::SHAPE.vtable.marker_traits)
2254
                                .intersection(T8::SHAPE.vtable.marker_traits)
2255
                                .intersection(T9::SHAPE.vtable.marker_traits)
2256
                                .intersection(T10::SHAPE.vtable.marker_traits)
2257
                                .intersection(T11::SHAPE.vtable.marker_traits)
2258
                    });
2259

2260
                    if Characteristic::Eq.all(&[
2261
                        T0::SHAPE, T1::SHAPE, T2::SHAPE, T3::SHAPE, T4::SHAPE, T5::SHAPE, T6::SHAPE, T7::SHAPE, T8::SHAPE, T9::SHAPE, T10::SHAPE, T11::SHAPE,
2262
                    ]) {
2263
                        builder = builder.debug(|value, f| {
×
NEW
2264
                            let value = unsafe { value.get::<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)>() };
×
2265
                            write!(f, "(")?;
×
2266
                            unsafe {
2267
                                let ptr = &value.0 as *const T0;
×
NEW
2268
                                (T0::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
2269
                                    PtrConst::new(ptr),
×
NEW
2270
                                    f,
×
2271
                                )
2272
                            }?;
2273
                            write!(f, ", ")?;
×
2274
                            unsafe {
2275
                                let ptr = &value.1 as *const T1;
×
NEW
2276
                                (T1::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
2277
                                    PtrConst::new(ptr),
×
NEW
2278
                                    f,
×
2279
                                )
2280
                            }?;
2281
                            write!(f, ", ")?;
×
2282
                            unsafe {
2283
                                let ptr = &value.2 as *const T2;
×
NEW
2284
                                (T2::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
2285
                                    PtrConst::new(ptr),
×
NEW
2286
                                    f,
×
2287
                                )
2288
                            }?;
2289
                            write!(f, ", ")?;
×
2290
                            unsafe {
2291
                                let ptr = &value.3 as *const T3;
×
NEW
2292
                                (T3::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
2293
                                    PtrConst::new(ptr),
×
NEW
2294
                                    f,
×
2295
                                )
2296
                            }?;
2297
                            write!(f, ", ")?;
×
2298
                            unsafe {
2299
                                let ptr = &value.4 as *const T4;
×
NEW
2300
                                (T4::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
2301
                                    PtrConst::new(ptr),
×
NEW
2302
                                    f,
×
2303
                                )
2304
                            }?;
2305
                            write!(f, ", ")?;
×
2306
                            unsafe {
2307
                                let ptr = &value.5 as *const T5;
×
NEW
2308
                                (T5::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
2309
                                    PtrConst::new(ptr),
×
NEW
2310
                                    f,
×
2311
                                )
2312
                            }?;
2313
                            write!(f, ", ")?;
×
2314
                            unsafe {
2315
                                let ptr = &value.6 as *const T6;
×
NEW
2316
                                (T6::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
2317
                                    PtrConst::new(ptr),
×
NEW
2318
                                    f,
×
2319
                                )
2320
                            }?;
2321
                            write!(f, ", ")?;
×
2322
                            unsafe {
2323
                                let ptr = &value.7 as *const T7;
×
NEW
2324
                                (T7::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
2325
                                    PtrConst::new(ptr),
×
NEW
2326
                                    f,
×
2327
                                )
2328
                            }?;
2329
                            write!(f, ", ")?;
×
2330
                            unsafe {
2331
                                let ptr = &value.8 as *const T8;
×
NEW
2332
                                (T8::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
2333
                                    PtrConst::new(ptr),
×
NEW
2334
                                    f,
×
2335
                                )
2336
                            }?;
2337
                            write!(f, ", ")?;
×
2338
                            unsafe {
2339
                                let ptr = &value.9 as *const T9;
×
NEW
2340
                                (T9::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
2341
                                    PtrConst::new(ptr),
×
NEW
2342
                                    f,
×
2343
                                )
2344
                            }?;
2345
                            write!(f, ", ")?;
×
2346
                            unsafe {
2347
                                let ptr = &value.10 as *const T10;
×
NEW
2348
                                (T10::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
2349
                                    PtrConst::new(ptr),
×
NEW
2350
                                    f,
×
2351
                                )
2352
                            }?;
2353
                            write!(f, ", ")?;
×
2354
                            unsafe {
2355
                                let ptr = &value.11 as *const T11;
×
NEW
2356
                                (T11::SHAPE.vtable.debug.unwrap_unchecked())(
×
NEW
2357
                                    PtrConst::new(ptr),
×
NEW
2358
                                    f,
×
2359
                                )
2360
                            }?;
2361
                            write!(f, ")")
×
2362
                        });
2363

2364
                        builder = builder.eq(|a, b| {
×
NEW
2365
                            let a = unsafe { a.get::<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)>() };
×
NEW
2366
                            let b = unsafe { b.get::<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)>() };
×
2367

2368
                            // Compare element 0
2369
                            unsafe {
×
2370
                                let a_ptr = &a.0 as *const T0;
×
2371
                                let b_ptr = &b.0 as *const T0;
×
2372
                                if !(T0::SHAPE.vtable.eq.unwrap_unchecked())(
×
2373
                                    PtrConst::new(a_ptr),
×
2374
                                    PtrConst::new(b_ptr),
×
2375
                                ) {
2376
                                    return false;
×
2377
                                }
2378
                            }
2379

2380
                            // Compare element 1
2381
                            unsafe {
×
2382
                                let a_ptr = &a.1 as *const T1;
×
2383
                                let b_ptr = &b.1 as *const T1;
×
2384
                                if !(T1::SHAPE.vtable.eq.unwrap_unchecked())(
×
2385
                                    PtrConst::new(a_ptr),
×
2386
                                    PtrConst::new(b_ptr),
×
2387
                                ) {
2388
                                    return false;
×
2389
                                }
2390
                            }
2391

2392
                            // Compare element 2
2393
                            unsafe {
×
2394
                                let a_ptr = &a.2 as *const T2;
×
2395
                                let b_ptr = &b.2 as *const T2;
×
2396
                                if !(T2::SHAPE.vtable.eq.unwrap_unchecked())(
×
2397
                                    PtrConst::new(a_ptr),
×
2398
                                    PtrConst::new(b_ptr),
×
2399
                                ) {
2400
                                    return false;
×
2401
                                }
2402
                            }
2403

2404
                            // Compare element 3
2405
                            unsafe {
×
2406
                                let a_ptr = &a.3 as *const T3;
×
2407
                                let b_ptr = &b.3 as *const T3;
×
2408
                                if !(T3::SHAPE.vtable.eq.unwrap_unchecked())(
×
2409
                                    PtrConst::new(a_ptr),
×
2410
                                    PtrConst::new(b_ptr),
×
2411
                                ) {
2412
                                    return false;
×
2413
                                }
2414
                            }
2415

2416
                            // Compare element 4
2417
                            unsafe {
×
2418
                                let a_ptr = &a.4 as *const T4;
×
2419
                                let b_ptr = &b.4 as *const T4;
×
2420
                                if !(T4::SHAPE.vtable.eq.unwrap_unchecked())(
×
2421
                                    PtrConst::new(a_ptr),
×
2422
                                    PtrConst::new(b_ptr),
×
2423
                                ) {
2424
                                    return false;
×
2425
                                }
2426
                            }
2427

2428
                            // Compare element 5
2429
                            unsafe {
×
2430
                                let a_ptr = &a.5 as *const T5;
×
2431
                                let b_ptr = &b.5 as *const T5;
×
2432
                                if !(T5::SHAPE.vtable.eq.unwrap_unchecked())(
×
2433
                                    PtrConst::new(a_ptr),
×
2434
                                    PtrConst::new(b_ptr),
×
2435
                                ) {
2436
                                    return false;
×
2437
                                }
2438
                            }
2439

2440
                            // Compare element 6
2441
                            unsafe {
×
2442
                                let a_ptr = &a.6 as *const T6;
×
2443
                                let b_ptr = &b.6 as *const T6;
×
2444
                                if !(T6::SHAPE.vtable.eq.unwrap_unchecked())(
×
2445
                                    PtrConst::new(a_ptr),
×
2446
                                    PtrConst::new(b_ptr),
×
2447
                                ) {
2448
                                    return false;
×
2449
                                }
2450
                            }
2451

2452
                            // Compare element 7
2453
                            unsafe {
×
2454
                                let a_ptr = &a.7 as *const T7;
×
2455
                                let b_ptr = &b.7 as *const T7;
×
2456
                                if !(T7::SHAPE.vtable.eq.unwrap_unchecked())(
×
2457
                                    PtrConst::new(a_ptr),
×
2458
                                    PtrConst::new(b_ptr),
×
2459
                                ) {
2460
                                    return false;
×
2461
                                }
2462
                            }
2463

2464
                            // Compare element 8
2465
                            unsafe {
×
2466
                                let a_ptr = &a.8 as *const T8;
×
2467
                                let b_ptr = &b.8 as *const T8;
×
2468
                                if !(T8::SHAPE.vtable.eq.unwrap_unchecked())(
×
2469
                                    PtrConst::new(a_ptr),
×
2470
                                    PtrConst::new(b_ptr),
×
2471
                                ) {
2472
                                    return false;
×
2473
                                }
2474
                            }
2475

2476
                            // Compare element 9
2477
                            unsafe {
×
2478
                                let a_ptr = &a.9 as *const T9;
×
2479
                                let b_ptr = &b.9 as *const T9;
×
2480
                                if !(T9::SHAPE.vtable.eq.unwrap_unchecked())(
×
2481
                                    PtrConst::new(a_ptr),
×
2482
                                    PtrConst::new(b_ptr),
×
2483
                                ) {
2484
                                    return false;
×
2485
                                }
2486
                            }
2487

2488
                            // Compare element 10
2489
                            unsafe {
×
2490
                                let a_ptr = &a.10 as *const T10;
×
2491
                                let b_ptr = &b.10 as *const T10;
×
2492
                                if !(T10::SHAPE.vtable.eq.unwrap_unchecked())(
×
2493
                                    PtrConst::new(a_ptr),
×
2494
                                    PtrConst::new(b_ptr),
×
2495
                                ) {
2496
                                    return false;
×
2497
                                }
2498
                            }
2499

2500
                            // Compare last element
2501
                            unsafe {
×
2502
                                (T11::SHAPE.vtable.eq.unwrap_unchecked())(
×
2503
                                    PtrConst::new(&a.11 as *const T11),
×
2504
                                    PtrConst::new(&b.11 as *const T11),
×
2505
                                )
2506
                            }
2507
                        });
2508
                    }
2509

2510
                    builder.build()
2511
                },
2512
            )
2513
            .def(Def::Struct({
2514
                Struct::builder()
2515
                    .tuple()
2516
                    .fields(
2517
                        &const {
2518
                            [
2519
                                field!(0, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,),),
2520
                                field!(1, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,),),
2521
                                field!(2, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,),),
2522
                                field!(3, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,),),
2523
                                field!(4, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,),),
2524
                                field!(5, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,),),
2525
                                field!(6, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,),),
2526
                                field!(7, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,),),
2527
                                field!(8, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,),),
2528
                                field!(9, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,),),
2529
                                field!(10, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,),),
2530
                                field!(11, (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,),)
2531
                            ]
2532
                        },
2533
                    )
2534
                    .build()
2535
            }))
2536
            .build()
2537
    };
2538
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc