glam/swizzles/
vec_traits.rs1pub trait Vec2Swizzles: Sized + Copy + Clone {
4 type Vec3;
5
6 type Vec4;
7
8 #[inline]
9 #[must_use]
10 fn xy(self) -> Self {
11 self
12 }
13
14 fn xx(self) -> Self;
15
16 fn yx(self) -> Self;
17
18 fn yy(self) -> Self;
19
20 fn xxx(self) -> Self::Vec3;
21
22 fn xxy(self) -> Self::Vec3;
23
24 fn xyx(self) -> Self::Vec3;
25
26 fn xyy(self) -> Self::Vec3;
27
28 fn yxx(self) -> Self::Vec3;
29
30 fn yxy(self) -> Self::Vec3;
31
32 fn yyx(self) -> Self::Vec3;
33
34 fn yyy(self) -> Self::Vec3;
35
36 fn xxxx(self) -> Self::Vec4;
37
38 fn xxxy(self) -> Self::Vec4;
39
40 fn xxyx(self) -> Self::Vec4;
41
42 fn xxyy(self) -> Self::Vec4;
43
44 fn xyxx(self) -> Self::Vec4;
45
46 fn xyxy(self) -> Self::Vec4;
47
48 fn xyyx(self) -> Self::Vec4;
49
50 fn xyyy(self) -> Self::Vec4;
51
52 fn yxxx(self) -> Self::Vec4;
53
54 fn yxxy(self) -> Self::Vec4;
55
56 fn yxyx(self) -> Self::Vec4;
57
58 fn yxyy(self) -> Self::Vec4;
59
60 fn yyxx(self) -> Self::Vec4;
61
62 fn yyxy(self) -> Self::Vec4;
63
64 fn yyyx(self) -> Self::Vec4;
65
66 fn yyyy(self) -> Self::Vec4;
67}
68
69pub trait Vec3Swizzles: Sized + Copy + Clone {
70 type Vec2;
71
72 type Vec4;
73
74 #[inline]
75 #[must_use]
76 fn xyz(self) -> Self {
77 self
78 }
79
80 fn xx(self) -> Self::Vec2;
81
82 fn xy(self) -> Self::Vec2;
83
84 fn xz(self) -> Self::Vec2;
85
86 fn yx(self) -> Self::Vec2;
87
88 fn yy(self) -> Self::Vec2;
89
90 fn yz(self) -> Self::Vec2;
91
92 fn zx(self) -> Self::Vec2;
93
94 fn zy(self) -> Self::Vec2;
95
96 fn zz(self) -> Self::Vec2;
97
98 fn xxx(self) -> Self;
99
100 fn xxy(self) -> Self;
101
102 fn xxz(self) -> Self;
103
104 fn xyx(self) -> Self;
105
106 fn xyy(self) -> Self;
107
108 fn xzx(self) -> Self;
109
110 fn xzy(self) -> Self;
111
112 fn xzz(self) -> Self;
113
114 fn yxx(self) -> Self;
115
116 fn yxy(self) -> Self;
117
118 fn yxz(self) -> Self;
119
120 fn yyx(self) -> Self;
121
122 fn yyy(self) -> Self;
123
124 fn yyz(self) -> Self;
125
126 fn yzx(self) -> Self;
127
128 fn yzy(self) -> Self;
129
130 fn yzz(self) -> Self;
131
132 fn zxx(self) -> Self;
133
134 fn zxy(self) -> Self;
135
136 fn zxz(self) -> Self;
137
138 fn zyx(self) -> Self;
139
140 fn zyy(self) -> Self;
141
142 fn zyz(self) -> Self;
143
144 fn zzx(self) -> Self;
145
146 fn zzy(self) -> Self;
147
148 fn zzz(self) -> Self;
149
150 fn xxxx(self) -> Self::Vec4;
151
152 fn xxxy(self) -> Self::Vec4;
153
154 fn xxxz(self) -> Self::Vec4;
155
156 fn xxyx(self) -> Self::Vec4;
157
158 fn xxyy(self) -> Self::Vec4;
159
160 fn xxyz(self) -> Self::Vec4;
161
162 fn xxzx(self) -> Self::Vec4;
163
164 fn xxzy(self) -> Self::Vec4;
165
166 fn xxzz(self) -> Self::Vec4;
167
168 fn xyxx(self) -> Self::Vec4;
169
170 fn xyxy(self) -> Self::Vec4;
171
172 fn xyxz(self) -> Self::Vec4;
173
174 fn xyyx(self) -> Self::Vec4;
175
176 fn xyyy(self) -> Self::Vec4;
177
178 fn xyyz(self) -> Self::Vec4;
179
180 fn xyzx(self) -> Self::Vec4;
181
182 fn xyzy(self) -> Self::Vec4;
183
184 fn xyzz(self) -> Self::Vec4;
185
186 fn xzxx(self) -> Self::Vec4;
187
188 fn xzxy(self) -> Self::Vec4;
189
190 fn xzxz(self) -> Self::Vec4;
191
192 fn xzyx(self) -> Self::Vec4;
193
194 fn xzyy(self) -> Self::Vec4;
195
196 fn xzyz(self) -> Self::Vec4;
197
198 fn xzzx(self) -> Self::Vec4;
199
200 fn xzzy(self) -> Self::Vec4;
201
202 fn xzzz(self) -> Self::Vec4;
203
204 fn yxxx(self) -> Self::Vec4;
205
206 fn yxxy(self) -> Self::Vec4;
207
208 fn yxxz(self) -> Self::Vec4;
209
210 fn yxyx(self) -> Self::Vec4;
211
212 fn yxyy(self) -> Self::Vec4;
213
214 fn yxyz(self) -> Self::Vec4;
215
216 fn yxzx(self) -> Self::Vec4;
217
218 fn yxzy(self) -> Self::Vec4;
219
220 fn yxzz(self) -> Self::Vec4;
221
222 fn yyxx(self) -> Self::Vec4;
223
224 fn yyxy(self) -> Self::Vec4;
225
226 fn yyxz(self) -> Self::Vec4;
227
228 fn yyyx(self) -> Self::Vec4;
229
230 fn yyyy(self) -> Self::Vec4;
231
232 fn yyyz(self) -> Self::Vec4;
233
234 fn yyzx(self) -> Self::Vec4;
235
236 fn yyzy(self) -> Self::Vec4;
237
238 fn yyzz(self) -> Self::Vec4;
239
240 fn yzxx(self) -> Self::Vec4;
241
242 fn yzxy(self) -> Self::Vec4;
243
244 fn yzxz(self) -> Self::Vec4;
245
246 fn yzyx(self) -> Self::Vec4;
247
248 fn yzyy(self) -> Self::Vec4;
249
250 fn yzyz(self) -> Self::Vec4;
251
252 fn yzzx(self) -> Self::Vec4;
253
254 fn yzzy(self) -> Self::Vec4;
255
256 fn yzzz(self) -> Self::Vec4;
257
258 fn zxxx(self) -> Self::Vec4;
259
260 fn zxxy(self) -> Self::Vec4;
261
262 fn zxxz(self) -> Self::Vec4;
263
264 fn zxyx(self) -> Self::Vec4;
265
266 fn zxyy(self) -> Self::Vec4;
267
268 fn zxyz(self) -> Self::Vec4;
269
270 fn zxzx(self) -> Self::Vec4;
271
272 fn zxzy(self) -> Self::Vec4;
273
274 fn zxzz(self) -> Self::Vec4;
275
276 fn zyxx(self) -> Self::Vec4;
277
278 fn zyxy(self) -> Self::Vec4;
279
280 fn zyxz(self) -> Self::Vec4;
281
282 fn zyyx(self) -> Self::Vec4;
283
284 fn zyyy(self) -> Self::Vec4;
285
286 fn zyyz(self) -> Self::Vec4;
287
288 fn zyzx(self) -> Self::Vec4;
289
290 fn zyzy(self) -> Self::Vec4;
291
292 fn zyzz(self) -> Self::Vec4;
293
294 fn zzxx(self) -> Self::Vec4;
295
296 fn zzxy(self) -> Self::Vec4;
297
298 fn zzxz(self) -> Self::Vec4;
299
300 fn zzyx(self) -> Self::Vec4;
301
302 fn zzyy(self) -> Self::Vec4;
303
304 fn zzyz(self) -> Self::Vec4;
305
306 fn zzzx(self) -> Self::Vec4;
307
308 fn zzzy(self) -> Self::Vec4;
309
310 fn zzzz(self) -> Self::Vec4;
311}
312
313pub trait Vec4Swizzles: Sized + Copy + Clone {
314 type Vec2;
315
316 type Vec3;
317
318 #[inline]
319 #[must_use]
320 fn xyzw(self) -> Self {
321 self
322 }
323
324 fn xx(self) -> Self::Vec2;
325
326 fn xy(self) -> Self::Vec2;
327
328 fn xz(self) -> Self::Vec2;
329
330 fn xw(self) -> Self::Vec2;
331
332 fn yx(self) -> Self::Vec2;
333
334 fn yy(self) -> Self::Vec2;
335
336 fn yz(self) -> Self::Vec2;
337
338 fn yw(self) -> Self::Vec2;
339
340 fn zx(self) -> Self::Vec2;
341
342 fn zy(self) -> Self::Vec2;
343
344 fn zz(self) -> Self::Vec2;
345
346 fn zw(self) -> Self::Vec2;
347
348 fn wx(self) -> Self::Vec2;
349
350 fn wy(self) -> Self::Vec2;
351
352 fn wz(self) -> Self::Vec2;
353
354 fn ww(self) -> Self::Vec2;
355
356 fn xxx(self) -> Self::Vec3;
357
358 fn xxy(self) -> Self::Vec3;
359
360 fn xxz(self) -> Self::Vec3;
361
362 fn xxw(self) -> Self::Vec3;
363
364 fn xyx(self) -> Self::Vec3;
365
366 fn xyy(self) -> Self::Vec3;
367
368 fn xyz(self) -> Self::Vec3;
369
370 fn xyw(self) -> Self::Vec3;
371
372 fn xzx(self) -> Self::Vec3;
373
374 fn xzy(self) -> Self::Vec3;
375
376 fn xzz(self) -> Self::Vec3;
377
378 fn xzw(self) -> Self::Vec3;
379
380 fn xwx(self) -> Self::Vec3;
381
382 fn xwy(self) -> Self::Vec3;
383
384 fn xwz(self) -> Self::Vec3;
385
386 fn xww(self) -> Self::Vec3;
387
388 fn yxx(self) -> Self::Vec3;
389
390 fn yxy(self) -> Self::Vec3;
391
392 fn yxz(self) -> Self::Vec3;
393
394 fn yxw(self) -> Self::Vec3;
395
396 fn yyx(self) -> Self::Vec3;
397
398 fn yyy(self) -> Self::Vec3;
399
400 fn yyz(self) -> Self::Vec3;
401
402 fn yyw(self) -> Self::Vec3;
403
404 fn yzx(self) -> Self::Vec3;
405
406 fn yzy(self) -> Self::Vec3;
407
408 fn yzz(self) -> Self::Vec3;
409
410 fn yzw(self) -> Self::Vec3;
411
412 fn ywx(self) -> Self::Vec3;
413
414 fn ywy(self) -> Self::Vec3;
415
416 fn ywz(self) -> Self::Vec3;
417
418 fn yww(self) -> Self::Vec3;
419
420 fn zxx(self) -> Self::Vec3;
421
422 fn zxy(self) -> Self::Vec3;
423
424 fn zxz(self) -> Self::Vec3;
425
426 fn zxw(self) -> Self::Vec3;
427
428 fn zyx(self) -> Self::Vec3;
429
430 fn zyy(self) -> Self::Vec3;
431
432 fn zyz(self) -> Self::Vec3;
433
434 fn zyw(self) -> Self::Vec3;
435
436 fn zzx(self) -> Self::Vec3;
437
438 fn zzy(self) -> Self::Vec3;
439
440 fn zzz(self) -> Self::Vec3;
441
442 fn zzw(self) -> Self::Vec3;
443
444 fn zwx(self) -> Self::Vec3;
445
446 fn zwy(self) -> Self::Vec3;
447
448 fn zwz(self) -> Self::Vec3;
449
450 fn zww(self) -> Self::Vec3;
451
452 fn wxx(self) -> Self::Vec3;
453
454 fn wxy(self) -> Self::Vec3;
455
456 fn wxz(self) -> Self::Vec3;
457
458 fn wxw(self) -> Self::Vec3;
459
460 fn wyx(self) -> Self::Vec3;
461
462 fn wyy(self) -> Self::Vec3;
463
464 fn wyz(self) -> Self::Vec3;
465
466 fn wyw(self) -> Self::Vec3;
467
468 fn wzx(self) -> Self::Vec3;
469
470 fn wzy(self) -> Self::Vec3;
471
472 fn wzz(self) -> Self::Vec3;
473
474 fn wzw(self) -> Self::Vec3;
475
476 fn wwx(self) -> Self::Vec3;
477
478 fn wwy(self) -> Self::Vec3;
479
480 fn wwz(self) -> Self::Vec3;
481
482 fn www(self) -> Self::Vec3;
483
484 fn xxxx(self) -> Self;
485
486 fn xxxy(self) -> Self;
487
488 fn xxxz(self) -> Self;
489
490 fn xxxw(self) -> Self;
491
492 fn xxyx(self) -> Self;
493
494 fn xxyy(self) -> Self;
495
496 fn xxyz(self) -> Self;
497
498 fn xxyw(self) -> Self;
499
500 fn xxzx(self) -> Self;
501
502 fn xxzy(self) -> Self;
503
504 fn xxzz(self) -> Self;
505
506 fn xxzw(self) -> Self;
507
508 fn xxwx(self) -> Self;
509
510 fn xxwy(self) -> Self;
511
512 fn xxwz(self) -> Self;
513
514 fn xxww(self) -> Self;
515
516 fn xyxx(self) -> Self;
517
518 fn xyxy(self) -> Self;
519
520 fn xyxz(self) -> Self;
521
522 fn xyxw(self) -> Self;
523
524 fn xyyx(self) -> Self;
525
526 fn xyyy(self) -> Self;
527
528 fn xyyz(self) -> Self;
529
530 fn xyyw(self) -> Self;
531
532 fn xyzx(self) -> Self;
533
534 fn xyzy(self) -> Self;
535
536 fn xyzz(self) -> Self;
537
538 fn xywx(self) -> Self;
539
540 fn xywy(self) -> Self;
541
542 fn xywz(self) -> Self;
543
544 fn xyww(self) -> Self;
545
546 fn xzxx(self) -> Self;
547
548 fn xzxy(self) -> Self;
549
550 fn xzxz(self) -> Self;
551
552 fn xzxw(self) -> Self;
553
554 fn xzyx(self) -> Self;
555
556 fn xzyy(self) -> Self;
557
558 fn xzyz(self) -> Self;
559
560 fn xzyw(self) -> Self;
561
562 fn xzzx(self) -> Self;
563
564 fn xzzy(self) -> Self;
565
566 fn xzzz(self) -> Self;
567
568 fn xzzw(self) -> Self;
569
570 fn xzwx(self) -> Self;
571
572 fn xzwy(self) -> Self;
573
574 fn xzwz(self) -> Self;
575
576 fn xzww(self) -> Self;
577
578 fn xwxx(self) -> Self;
579
580 fn xwxy(self) -> Self;
581
582 fn xwxz(self) -> Self;
583
584 fn xwxw(self) -> Self;
585
586 fn xwyx(self) -> Self;
587
588 fn xwyy(self) -> Self;
589
590 fn xwyz(self) -> Self;
591
592 fn xwyw(self) -> Self;
593
594 fn xwzx(self) -> Self;
595
596 fn xwzy(self) -> Self;
597
598 fn xwzz(self) -> Self;
599
600 fn xwzw(self) -> Self;
601
602 fn xwwx(self) -> Self;
603
604 fn xwwy(self) -> Self;
605
606 fn xwwz(self) -> Self;
607
608 fn xwww(self) -> Self;
609
610 fn yxxx(self) -> Self;
611
612 fn yxxy(self) -> Self;
613
614 fn yxxz(self) -> Self;
615
616 fn yxxw(self) -> Self;
617
618 fn yxyx(self) -> Self;
619
620 fn yxyy(self) -> Self;
621
622 fn yxyz(self) -> Self;
623
624 fn yxyw(self) -> Self;
625
626 fn yxzx(self) -> Self;
627
628 fn yxzy(self) -> Self;
629
630 fn yxzz(self) -> Self;
631
632 fn yxzw(self) -> Self;
633
634 fn yxwx(self) -> Self;
635
636 fn yxwy(self) -> Self;
637
638 fn yxwz(self) -> Self;
639
640 fn yxww(self) -> Self;
641
642 fn yyxx(self) -> Self;
643
644 fn yyxy(self) -> Self;
645
646 fn yyxz(self) -> Self;
647
648 fn yyxw(self) -> Self;
649
650 fn yyyx(self) -> Self;
651
652 fn yyyy(self) -> Self;
653
654 fn yyyz(self) -> Self;
655
656 fn yyyw(self) -> Self;
657
658 fn yyzx(self) -> Self;
659
660 fn yyzy(self) -> Self;
661
662 fn yyzz(self) -> Self;
663
664 fn yyzw(self) -> Self;
665
666 fn yywx(self) -> Self;
667
668 fn yywy(self) -> Self;
669
670 fn yywz(self) -> Self;
671
672 fn yyww(self) -> Self;
673
674 fn yzxx(self) -> Self;
675
676 fn yzxy(self) -> Self;
677
678 fn yzxz(self) -> Self;
679
680 fn yzxw(self) -> Self;
681
682 fn yzyx(self) -> Self;
683
684 fn yzyy(self) -> Self;
685
686 fn yzyz(self) -> Self;
687
688 fn yzyw(self) -> Self;
689
690 fn yzzx(self) -> Self;
691
692 fn yzzy(self) -> Self;
693
694 fn yzzz(self) -> Self;
695
696 fn yzzw(self) -> Self;
697
698 fn yzwx(self) -> Self;
699
700 fn yzwy(self) -> Self;
701
702 fn yzwz(self) -> Self;
703
704 fn yzww(self) -> Self;
705
706 fn ywxx(self) -> Self;
707
708 fn ywxy(self) -> Self;
709
710 fn ywxz(self) -> Self;
711
712 fn ywxw(self) -> Self;
713
714 fn ywyx(self) -> Self;
715
716 fn ywyy(self) -> Self;
717
718 fn ywyz(self) -> Self;
719
720 fn ywyw(self) -> Self;
721
722 fn ywzx(self) -> Self;
723
724 fn ywzy(self) -> Self;
725
726 fn ywzz(self) -> Self;
727
728 fn ywzw(self) -> Self;
729
730 fn ywwx(self) -> Self;
731
732 fn ywwy(self) -> Self;
733
734 fn ywwz(self) -> Self;
735
736 fn ywww(self) -> Self;
737
738 fn zxxx(self) -> Self;
739
740 fn zxxy(self) -> Self;
741
742 fn zxxz(self) -> Self;
743
744 fn zxxw(self) -> Self;
745
746 fn zxyx(self) -> Self;
747
748 fn zxyy(self) -> Self;
749
750 fn zxyz(self) -> Self;
751
752 fn zxyw(self) -> Self;
753
754 fn zxzx(self) -> Self;
755
756 fn zxzy(self) -> Self;
757
758 fn zxzz(self) -> Self;
759
760 fn zxzw(self) -> Self;
761
762 fn zxwx(self) -> Self;
763
764 fn zxwy(self) -> Self;
765
766 fn zxwz(self) -> Self;
767
768 fn zxww(self) -> Self;
769
770 fn zyxx(self) -> Self;
771
772 fn zyxy(self) -> Self;
773
774 fn zyxz(self) -> Self;
775
776 fn zyxw(self) -> Self;
777
778 fn zyyx(self) -> Self;
779
780 fn zyyy(self) -> Self;
781
782 fn zyyz(self) -> Self;
783
784 fn zyyw(self) -> Self;
785
786 fn zyzx(self) -> Self;
787
788 fn zyzy(self) -> Self;
789
790 fn zyzz(self) -> Self;
791
792 fn zyzw(self) -> Self;
793
794 fn zywx(self) -> Self;
795
796 fn zywy(self) -> Self;
797
798 fn zywz(self) -> Self;
799
800 fn zyww(self) -> Self;
801
802 fn zzxx(self) -> Self;
803
804 fn zzxy(self) -> Self;
805
806 fn zzxz(self) -> Self;
807
808 fn zzxw(self) -> Self;
809
810 fn zzyx(self) -> Self;
811
812 fn zzyy(self) -> Self;
813
814 fn zzyz(self) -> Self;
815
816 fn zzyw(self) -> Self;
817
818 fn zzzx(self) -> Self;
819
820 fn zzzy(self) -> Self;
821
822 fn zzzz(self) -> Self;
823
824 fn zzzw(self) -> Self;
825
826 fn zzwx(self) -> Self;
827
828 fn zzwy(self) -> Self;
829
830 fn zzwz(self) -> Self;
831
832 fn zzww(self) -> Self;
833
834 fn zwxx(self) -> Self;
835
836 fn zwxy(self) -> Self;
837
838 fn zwxz(self) -> Self;
839
840 fn zwxw(self) -> Self;
841
842 fn zwyx(self) -> Self;
843
844 fn zwyy(self) -> Self;
845
846 fn zwyz(self) -> Self;
847
848 fn zwyw(self) -> Self;
849
850 fn zwzx(self) -> Self;
851
852 fn zwzy(self) -> Self;
853
854 fn zwzz(self) -> Self;
855
856 fn zwzw(self) -> Self;
857
858 fn zwwx(self) -> Self;
859
860 fn zwwy(self) -> Self;
861
862 fn zwwz(self) -> Self;
863
864 fn zwww(self) -> Self;
865
866 fn wxxx(self) -> Self;
867
868 fn wxxy(self) -> Self;
869
870 fn wxxz(self) -> Self;
871
872 fn wxxw(self) -> Self;
873
874 fn wxyx(self) -> Self;
875
876 fn wxyy(self) -> Self;
877
878 fn wxyz(self) -> Self;
879
880 fn wxyw(self) -> Self;
881
882 fn wxzx(self) -> Self;
883
884 fn wxzy(self) -> Self;
885
886 fn wxzz(self) -> Self;
887
888 fn wxzw(self) -> Self;
889
890 fn wxwx(self) -> Self;
891
892 fn wxwy(self) -> Self;
893
894 fn wxwz(self) -> Self;
895
896 fn wxww(self) -> Self;
897
898 fn wyxx(self) -> Self;
899
900 fn wyxy(self) -> Self;
901
902 fn wyxz(self) -> Self;
903
904 fn wyxw(self) -> Self;
905
906 fn wyyx(self) -> Self;
907
908 fn wyyy(self) -> Self;
909
910 fn wyyz(self) -> Self;
911
912 fn wyyw(self) -> Self;
913
914 fn wyzx(self) -> Self;
915
916 fn wyzy(self) -> Self;
917
918 fn wyzz(self) -> Self;
919
920 fn wyzw(self) -> Self;
921
922 fn wywx(self) -> Self;
923
924 fn wywy(self) -> Self;
925
926 fn wywz(self) -> Self;
927
928 fn wyww(self) -> Self;
929
930 fn wzxx(self) -> Self;
931
932 fn wzxy(self) -> Self;
933
934 fn wzxz(self) -> Self;
935
936 fn wzxw(self) -> Self;
937
938 fn wzyx(self) -> Self;
939
940 fn wzyy(self) -> Self;
941
942 fn wzyz(self) -> Self;
943
944 fn wzyw(self) -> Self;
945
946 fn wzzx(self) -> Self;
947
948 fn wzzy(self) -> Self;
949
950 fn wzzz(self) -> Self;
951
952 fn wzzw(self) -> Self;
953
954 fn wzwx(self) -> Self;
955
956 fn wzwy(self) -> Self;
957
958 fn wzwz(self) -> Self;
959
960 fn wzww(self) -> Self;
961
962 fn wwxx(self) -> Self;
963
964 fn wwxy(self) -> Self;
965
966 fn wwxz(self) -> Self;
967
968 fn wwxw(self) -> Self;
969
970 fn wwyx(self) -> Self;
971
972 fn wwyy(self) -> Self;
973
974 fn wwyz(self) -> Self;
975
976 fn wwyw(self) -> Self;
977
978 fn wwzx(self) -> Self;
979
980 fn wwzy(self) -> Self;
981
982 fn wwzz(self) -> Self;
983
984 fn wwzw(self) -> Self;
985
986 fn wwwx(self) -> Self;
987
988 fn wwwy(self) -> Self;
989
990 fn wwwz(self) -> Self;
991
992 fn wwww(self) -> Self;
993}