1
2use crate::vec::*;
3use crate::num::*;
4
5pub trait Vec2Swizzle<T: Number>: VecN<T> {
7 fn xx(self) -> Vec2<T>;
8 fn xy(self) -> Vec2<T>;
9 fn yx(self) -> Vec2<T>;
10 fn yy(self) -> Vec2<T>;
11 fn set_xy(&mut self, other: Vec2<T>);
12 fn set_yx(&mut self, other: Vec2<T>);
13}
14
15pub trait Vec3Swizzle<T: Number>: VecN<T> {
17 fn xz(self) -> Vec2<T>;
18 fn yz(self) -> Vec2<T>;
19 fn zx(self) -> Vec2<T>;
20 fn zy(self) -> Vec2<T>;
21 fn zz(self) -> Vec2<T>;
22 fn xxx(self) -> Vec3<T>;
23 fn xxy(self) -> Vec3<T>;
24 fn xxz(self) -> Vec3<T>;
25 fn xyx(self) -> Vec3<T>;
26 fn xyy(self) -> Vec3<T>;
27 fn xyz(self) -> Vec3<T>;
28 fn xzx(self) -> Vec3<T>;
29 fn xzy(self) -> Vec3<T>;
30 fn xzz(self) -> Vec3<T>;
31 fn yxx(self) -> Vec3<T>;
32 fn yxy(self) -> Vec3<T>;
33 fn yxz(self) -> Vec3<T>;
34 fn yyx(self) -> Vec3<T>;
35 fn yyy(self) -> Vec3<T>;
36 fn yyz(self) -> Vec3<T>;
37 fn yzx(self) -> Vec3<T>;
38 fn yzy(self) -> Vec3<T>;
39 fn yzz(self) -> Vec3<T>;
40 fn zxx(self) -> Vec3<T>;
41 fn zxy(self) -> Vec3<T>;
42 fn zxz(self) -> Vec3<T>;
43 fn zyx(self) -> Vec3<T>;
44 fn zyy(self) -> Vec3<T>;
45 fn zyz(self) -> Vec3<T>;
46 fn zzx(self) -> Vec3<T>;
47 fn zzy(self) -> Vec3<T>;
48 fn zzz(self) -> Vec3<T>;
49 fn set_xz(&mut self, other: Vec2<T>);
50 fn set_yz(&mut self, other: Vec2<T>);
51 fn set_zx(&mut self, other: Vec2<T>);
52 fn set_zy(&mut self, other: Vec2<T>);
53 fn set_xyz(&mut self, other: Vec3<T>);
54 fn set_xzy(&mut self, other: Vec3<T>);
55 fn set_yxz(&mut self, other: Vec3<T>);
56 fn set_yzx(&mut self, other: Vec3<T>);
57 fn set_zxy(&mut self, other: Vec3<T>);
58 fn set_zyx(&mut self, other: Vec3<T>);
59}
60
61pub trait Vec4Swizzle<T: Number>: VecN<T> {
63 fn xw(self) -> Vec2<T>;
64 fn yw(self) -> Vec2<T>;
65 fn zw(self) -> Vec2<T>;
66 fn wx(self) -> Vec2<T>;
67 fn wy(self) -> Vec2<T>;
68 fn wz(self) -> Vec2<T>;
69 fn ww(self) -> Vec2<T>;
70 fn xxw(self) -> Vec3<T>;
71 fn xyw(self) -> Vec3<T>;
72 fn xzw(self) -> Vec3<T>;
73 fn xwx(self) -> Vec3<T>;
74 fn xwy(self) -> Vec3<T>;
75 fn xwz(self) -> Vec3<T>;
76 fn xww(self) -> Vec3<T>;
77 fn yxw(self) -> Vec3<T>;
78 fn yyw(self) -> Vec3<T>;
79 fn yzw(self) -> Vec3<T>;
80 fn ywx(self) -> Vec3<T>;
81 fn ywy(self) -> Vec3<T>;
82 fn ywz(self) -> Vec3<T>;
83 fn yww(self) -> Vec3<T>;
84 fn zxw(self) -> Vec3<T>;
85 fn zyw(self) -> Vec3<T>;
86 fn zzw(self) -> Vec3<T>;
87 fn zwx(self) -> Vec3<T>;
88 fn zwy(self) -> Vec3<T>;
89 fn zwz(self) -> Vec3<T>;
90 fn zww(self) -> Vec3<T>;
91 fn wxx(self) -> Vec3<T>;
92 fn wxy(self) -> Vec3<T>;
93 fn wxz(self) -> Vec3<T>;
94 fn wxw(self) -> Vec3<T>;
95 fn wyx(self) -> Vec3<T>;
96 fn wyy(self) -> Vec3<T>;
97 fn wyz(self) -> Vec3<T>;
98 fn wyw(self) -> Vec3<T>;
99 fn wzx(self) -> Vec3<T>;
100 fn wzy(self) -> Vec3<T>;
101 fn wzz(self) -> Vec3<T>;
102 fn wzw(self) -> Vec3<T>;
103 fn wwx(self) -> Vec3<T>;
104 fn wwy(self) -> Vec3<T>;
105 fn wwz(self) -> Vec3<T>;
106 fn www(self) -> Vec3<T>;
107 fn xxxx(self) -> Vec4<T>;
108 fn xxxy(self) -> Vec4<T>;
109 fn xxxz(self) -> Vec4<T>;
110 fn xxxw(self) -> Vec4<T>;
111 fn xxyx(self) -> Vec4<T>;
112 fn xxyy(self) -> Vec4<T>;
113 fn xxyz(self) -> Vec4<T>;
114 fn xxyw(self) -> Vec4<T>;
115 fn xxzx(self) -> Vec4<T>;
116 fn xxzy(self) -> Vec4<T>;
117 fn xxzz(self) -> Vec4<T>;
118 fn xxzw(self) -> Vec4<T>;
119 fn xxwx(self) -> Vec4<T>;
120 fn xxwy(self) -> Vec4<T>;
121 fn xxwz(self) -> Vec4<T>;
122 fn xxww(self) -> Vec4<T>;
123 fn xyxx(self) -> Vec4<T>;
124 fn xyxy(self) -> Vec4<T>;
125 fn xyxz(self) -> Vec4<T>;
126 fn xyxw(self) -> Vec4<T>;
127 fn xyyx(self) -> Vec4<T>;
128 fn xyyy(self) -> Vec4<T>;
129 fn xyyz(self) -> Vec4<T>;
130 fn xyyw(self) -> Vec4<T>;
131 fn xyzx(self) -> Vec4<T>;
132 fn xyzy(self) -> Vec4<T>;
133 fn xyzz(self) -> Vec4<T>;
134 fn xyzw(self) -> Vec4<T>;
135 fn xywx(self) -> Vec4<T>;
136 fn xywy(self) -> Vec4<T>;
137 fn xywz(self) -> Vec4<T>;
138 fn xyww(self) -> Vec4<T>;
139 fn xzxx(self) -> Vec4<T>;
140 fn xzxy(self) -> Vec4<T>;
141 fn xzxz(self) -> Vec4<T>;
142 fn xzxw(self) -> Vec4<T>;
143 fn xzyx(self) -> Vec4<T>;
144 fn xzyy(self) -> Vec4<T>;
145 fn xzyz(self) -> Vec4<T>;
146 fn xzyw(self) -> Vec4<T>;
147 fn xzzx(self) -> Vec4<T>;
148 fn xzzy(self) -> Vec4<T>;
149 fn xzzz(self) -> Vec4<T>;
150 fn xzzw(self) -> Vec4<T>;
151 fn xzwx(self) -> Vec4<T>;
152 fn xzwy(self) -> Vec4<T>;
153 fn xzwz(self) -> Vec4<T>;
154 fn xzww(self) -> Vec4<T>;
155 fn xwxx(self) -> Vec4<T>;
156 fn xwxy(self) -> Vec4<T>;
157 fn xwxz(self) -> Vec4<T>;
158 fn xwxw(self) -> Vec4<T>;
159 fn xwyx(self) -> Vec4<T>;
160 fn xwyy(self) -> Vec4<T>;
161 fn xwyz(self) -> Vec4<T>;
162 fn xwyw(self) -> Vec4<T>;
163 fn xwzx(self) -> Vec4<T>;
164 fn xwzy(self) -> Vec4<T>;
165 fn xwzz(self) -> Vec4<T>;
166 fn xwzw(self) -> Vec4<T>;
167 fn xwwx(self) -> Vec4<T>;
168 fn xwwy(self) -> Vec4<T>;
169 fn xwwz(self) -> Vec4<T>;
170 fn xwww(self) -> Vec4<T>;
171 fn yxxx(self) -> Vec4<T>;
172 fn yxxy(self) -> Vec4<T>;
173 fn yxxz(self) -> Vec4<T>;
174 fn yxxw(self) -> Vec4<T>;
175 fn yxyx(self) -> Vec4<T>;
176 fn yxyy(self) -> Vec4<T>;
177 fn yxyz(self) -> Vec4<T>;
178 fn yxyw(self) -> Vec4<T>;
179 fn yxzx(self) -> Vec4<T>;
180 fn yxzy(self) -> Vec4<T>;
181 fn yxzz(self) -> Vec4<T>;
182 fn yxzw(self) -> Vec4<T>;
183 fn yxwx(self) -> Vec4<T>;
184 fn yxwy(self) -> Vec4<T>;
185 fn yxwz(self) -> Vec4<T>;
186 fn yxww(self) -> Vec4<T>;
187 fn yyxx(self) -> Vec4<T>;
188 fn yyxy(self) -> Vec4<T>;
189 fn yyxz(self) -> Vec4<T>;
190 fn yyxw(self) -> Vec4<T>;
191 fn yyyx(self) -> Vec4<T>;
192 fn yyyy(self) -> Vec4<T>;
193 fn yyyz(self) -> Vec4<T>;
194 fn yyyw(self) -> Vec4<T>;
195 fn yyzx(self) -> Vec4<T>;
196 fn yyzy(self) -> Vec4<T>;
197 fn yyzz(self) -> Vec4<T>;
198 fn yyzw(self) -> Vec4<T>;
199 fn yywx(self) -> Vec4<T>;
200 fn yywy(self) -> Vec4<T>;
201 fn yywz(self) -> Vec4<T>;
202 fn yyww(self) -> Vec4<T>;
203 fn yzxx(self) -> Vec4<T>;
204 fn yzxy(self) -> Vec4<T>;
205 fn yzxz(self) -> Vec4<T>;
206 fn yzxw(self) -> Vec4<T>;
207 fn yzyx(self) -> Vec4<T>;
208 fn yzyy(self) -> Vec4<T>;
209 fn yzyz(self) -> Vec4<T>;
210 fn yzyw(self) -> Vec4<T>;
211 fn yzzx(self) -> Vec4<T>;
212 fn yzzy(self) -> Vec4<T>;
213 fn yzzz(self) -> Vec4<T>;
214 fn yzzw(self) -> Vec4<T>;
215 fn yzwx(self) -> Vec4<T>;
216 fn yzwy(self) -> Vec4<T>;
217 fn yzwz(self) -> Vec4<T>;
218 fn yzww(self) -> Vec4<T>;
219 fn ywxx(self) -> Vec4<T>;
220 fn ywxy(self) -> Vec4<T>;
221 fn ywxz(self) -> Vec4<T>;
222 fn ywxw(self) -> Vec4<T>;
223 fn ywyx(self) -> Vec4<T>;
224 fn ywyy(self) -> Vec4<T>;
225 fn ywyz(self) -> Vec4<T>;
226 fn ywyw(self) -> Vec4<T>;
227 fn ywzx(self) -> Vec4<T>;
228 fn ywzy(self) -> Vec4<T>;
229 fn ywzz(self) -> Vec4<T>;
230 fn ywzw(self) -> Vec4<T>;
231 fn ywwx(self) -> Vec4<T>;
232 fn ywwy(self) -> Vec4<T>;
233 fn ywwz(self) -> Vec4<T>;
234 fn ywww(self) -> Vec4<T>;
235 fn zxxx(self) -> Vec4<T>;
236 fn zxxy(self) -> Vec4<T>;
237 fn zxxz(self) -> Vec4<T>;
238 fn zxxw(self) -> Vec4<T>;
239 fn zxyx(self) -> Vec4<T>;
240 fn zxyy(self) -> Vec4<T>;
241 fn zxyz(self) -> Vec4<T>;
242 fn zxyw(self) -> Vec4<T>;
243 fn zxzx(self) -> Vec4<T>;
244 fn zxzy(self) -> Vec4<T>;
245 fn zxzz(self) -> Vec4<T>;
246 fn zxzw(self) -> Vec4<T>;
247 fn zxwx(self) -> Vec4<T>;
248 fn zxwy(self) -> Vec4<T>;
249 fn zxwz(self) -> Vec4<T>;
250 fn zxww(self) -> Vec4<T>;
251 fn zyxx(self) -> Vec4<T>;
252 fn zyxy(self) -> Vec4<T>;
253 fn zyxz(self) -> Vec4<T>;
254 fn zyxw(self) -> Vec4<T>;
255 fn zyyx(self) -> Vec4<T>;
256 fn zyyy(self) -> Vec4<T>;
257 fn zyyz(self) -> Vec4<T>;
258 fn zyyw(self) -> Vec4<T>;
259 fn zyzx(self) -> Vec4<T>;
260 fn zyzy(self) -> Vec4<T>;
261 fn zyzz(self) -> Vec4<T>;
262 fn zyzw(self) -> Vec4<T>;
263 fn zywx(self) -> Vec4<T>;
264 fn zywy(self) -> Vec4<T>;
265 fn zywz(self) -> Vec4<T>;
266 fn zyww(self) -> Vec4<T>;
267 fn zzxx(self) -> Vec4<T>;
268 fn zzxy(self) -> Vec4<T>;
269 fn zzxz(self) -> Vec4<T>;
270 fn zzxw(self) -> Vec4<T>;
271 fn zzyx(self) -> Vec4<T>;
272 fn zzyy(self) -> Vec4<T>;
273 fn zzyz(self) -> Vec4<T>;
274 fn zzyw(self) -> Vec4<T>;
275 fn zzzx(self) -> Vec4<T>;
276 fn zzzy(self) -> Vec4<T>;
277 fn zzzz(self) -> Vec4<T>;
278 fn zzzw(self) -> Vec4<T>;
279 fn zzwx(self) -> Vec4<T>;
280 fn zzwy(self) -> Vec4<T>;
281 fn zzwz(self) -> Vec4<T>;
282 fn zzww(self) -> Vec4<T>;
283 fn zwxx(self) -> Vec4<T>;
284 fn zwxy(self) -> Vec4<T>;
285 fn zwxz(self) -> Vec4<T>;
286 fn zwxw(self) -> Vec4<T>;
287 fn zwyx(self) -> Vec4<T>;
288 fn zwyy(self) -> Vec4<T>;
289 fn zwyz(self) -> Vec4<T>;
290 fn zwyw(self) -> Vec4<T>;
291 fn zwzx(self) -> Vec4<T>;
292 fn zwzy(self) -> Vec4<T>;
293 fn zwzz(self) -> Vec4<T>;
294 fn zwzw(self) -> Vec4<T>;
295 fn zwwx(self) -> Vec4<T>;
296 fn zwwy(self) -> Vec4<T>;
297 fn zwwz(self) -> Vec4<T>;
298 fn zwww(self) -> Vec4<T>;
299 fn wxxx(self) -> Vec4<T>;
300 fn wxxy(self) -> Vec4<T>;
301 fn wxxz(self) -> Vec4<T>;
302 fn wxxw(self) -> Vec4<T>;
303 fn wxyx(self) -> Vec4<T>;
304 fn wxyy(self) -> Vec4<T>;
305 fn wxyz(self) -> Vec4<T>;
306 fn wxyw(self) -> Vec4<T>;
307 fn wxzx(self) -> Vec4<T>;
308 fn wxzy(self) -> Vec4<T>;
309 fn wxzz(self) -> Vec4<T>;
310 fn wxzw(self) -> Vec4<T>;
311 fn wxwx(self) -> Vec4<T>;
312 fn wxwy(self) -> Vec4<T>;
313 fn wxwz(self) -> Vec4<T>;
314 fn wxww(self) -> Vec4<T>;
315 fn wyxx(self) -> Vec4<T>;
316 fn wyxy(self) -> Vec4<T>;
317 fn wyxz(self) -> Vec4<T>;
318 fn wyxw(self) -> Vec4<T>;
319 fn wyyx(self) -> Vec4<T>;
320 fn wyyy(self) -> Vec4<T>;
321 fn wyyz(self) -> Vec4<T>;
322 fn wyyw(self) -> Vec4<T>;
323 fn wyzx(self) -> Vec4<T>;
324 fn wyzy(self) -> Vec4<T>;
325 fn wyzz(self) -> Vec4<T>;
326 fn wyzw(self) -> Vec4<T>;
327 fn wywx(self) -> Vec4<T>;
328 fn wywy(self) -> Vec4<T>;
329 fn wywz(self) -> Vec4<T>;
330 fn wyww(self) -> Vec4<T>;
331 fn wzxx(self) -> Vec4<T>;
332 fn wzxy(self) -> Vec4<T>;
333 fn wzxz(self) -> Vec4<T>;
334 fn wzxw(self) -> Vec4<T>;
335 fn wzyx(self) -> Vec4<T>;
336 fn wzyy(self) -> Vec4<T>;
337 fn wzyz(self) -> Vec4<T>;
338 fn wzyw(self) -> Vec4<T>;
339 fn wzzx(self) -> Vec4<T>;
340 fn wzzy(self) -> Vec4<T>;
341 fn wzzz(self) -> Vec4<T>;
342 fn wzzw(self) -> Vec4<T>;
343 fn wzwx(self) -> Vec4<T>;
344 fn wzwy(self) -> Vec4<T>;
345 fn wzwz(self) -> Vec4<T>;
346 fn wzww(self) -> Vec4<T>;
347 fn wwxx(self) -> Vec4<T>;
348 fn wwxy(self) -> Vec4<T>;
349 fn wwxz(self) -> Vec4<T>;
350 fn wwxw(self) -> Vec4<T>;
351 fn wwyx(self) -> Vec4<T>;
352 fn wwyy(self) -> Vec4<T>;
353 fn wwyz(self) -> Vec4<T>;
354 fn wwyw(self) -> Vec4<T>;
355 fn wwzx(self) -> Vec4<T>;
356 fn wwzy(self) -> Vec4<T>;
357 fn wwzz(self) -> Vec4<T>;
358 fn wwzw(self) -> Vec4<T>;
359 fn wwwx(self) -> Vec4<T>;
360 fn wwwy(self) -> Vec4<T>;
361 fn wwwz(self) -> Vec4<T>;
362 fn wwww(self) -> Vec4<T>;
363 fn set_xw(&mut self, other: Vec2<T>);
364 fn set_yw(&mut self, other: Vec2<T>);
365 fn set_zw(&mut self, other: Vec2<T>);
366 fn set_wx(&mut self, other: Vec2<T>);
367 fn set_wy(&mut self, other: Vec2<T>);
368 fn set_wz(&mut self, other: Vec2<T>);
369 fn set_xyw(&mut self, other: Vec3<T>);
370 fn set_xzw(&mut self, other: Vec3<T>);
371 fn set_xwy(&mut self, other: Vec3<T>);
372 fn set_xwz(&mut self, other: Vec3<T>);
373 fn set_yxw(&mut self, other: Vec3<T>);
374 fn set_yzw(&mut self, other: Vec3<T>);
375 fn set_ywx(&mut self, other: Vec3<T>);
376 fn set_ywz(&mut self, other: Vec3<T>);
377 fn set_zxw(&mut self, other: Vec3<T>);
378 fn set_zyw(&mut self, other: Vec3<T>);
379 fn set_zwx(&mut self, other: Vec3<T>);
380 fn set_zwy(&mut self, other: Vec3<T>);
381 fn set_wxy(&mut self, other: Vec3<T>);
382 fn set_wxz(&mut self, other: Vec3<T>);
383 fn set_wyx(&mut self, other: Vec3<T>);
384 fn set_wyz(&mut self, other: Vec3<T>);
385 fn set_wzx(&mut self, other: Vec3<T>);
386 fn set_wzy(&mut self, other: Vec3<T>);
387 fn set_xyzw(&mut self, other: Vec4<T>);
388 fn set_xywz(&mut self, other: Vec4<T>);
389 fn set_xzyw(&mut self, other: Vec4<T>);
390 fn set_xzwy(&mut self, other: Vec4<T>);
391 fn set_xwyz(&mut self, other: Vec4<T>);
392 fn set_xwzy(&mut self, other: Vec4<T>);
393 fn set_yxzw(&mut self, other: Vec4<T>);
394 fn set_yxwz(&mut self, other: Vec4<T>);
395 fn set_yzxw(&mut self, other: Vec4<T>);
396 fn set_yzwx(&mut self, other: Vec4<T>);
397 fn set_ywxz(&mut self, other: Vec4<T>);
398 fn set_ywzx(&mut self, other: Vec4<T>);
399 fn set_zxyw(&mut self, other: Vec4<T>);
400 fn set_zxwy(&mut self, other: Vec4<T>);
401 fn set_zyxw(&mut self, other: Vec4<T>);
402 fn set_zywx(&mut self, other: Vec4<T>);
403 fn set_zwxy(&mut self, other: Vec4<T>);
404 fn set_zwyx(&mut self, other: Vec4<T>);
405 fn set_wxyz(&mut self, other: Vec4<T>);
406 fn set_wxzy(&mut self, other: Vec4<T>);
407 fn set_wyxz(&mut self, other: Vec4<T>);
408 fn set_wyzx(&mut self, other: Vec4<T>);
409 fn set_wzxy(&mut self, other: Vec4<T>);
410 fn set_wzyx(&mut self, other: Vec4<T>);
411}
412
413macro_rules! v2_swizzle_impl {
414 ($VecN:ident) => {
415 impl<T> Vec2Swizzle<T> for $VecN<T> where T: Number {
416 fn xx(self) -> Vec2<T> {
417 Vec2 {
418 x: self.x,
419 y: self.x
420 }
421 }
422
423 fn xy(self) -> Vec2<T> {
424 Vec2 {
425 x: self.x,
426 y: self.y
427 }
428 }
429
430 fn yx(self) -> Vec2<T> {
431 Vec2 {
432 x: self.y,
433 y: self.x
434 }
435 }
436
437 fn yy(self) -> Vec2<T> {
438 Vec2 {
439 x: self.y,
440 y: self.y
441 }
442 }
443
444 fn set_xy(&mut self, other: Vec2<T>) {
445 self.x = other.x;
446 self.y = other.y;
447 }
448
449 fn set_yx(&mut self, other: Vec2<T>) {
450 self.x = other.y;
451 self.y = other.x;
452 }
453 }
454 }
455}
456
457macro_rules! v3_swizzle_impl {
458 ($VecN:ident) => {
459 impl<T> Vec3Swizzle<T> for $VecN<T> where T: Number {
460 fn xz(self) -> Vec2<T> {
461 Vec2::new(self.x, self.z)
462 }
463
464 fn yz(self) -> Vec2<T> {
465 Vec2::new(self.y, self.z)
466 }
467
468 fn zx(self) -> Vec2<T> {
469 Vec2::new(self.z, self.x)
470 }
471
472 fn zy(self) -> Vec2<T> {
473 Vec2::new(self.z, self.y)
474 }
475
476 fn zz(self) -> Vec2<T> {
477 Vec2::new(self.z, self.z)
478 }
479
480 fn xxx(self) -> Vec3<T> {
481 Vec3 {
482 x: self.x,
483 y: self.x,
484 z: self.x,
485 }
486 }
487
488 fn xxy(self) -> Vec3<T> {
489 Vec3 {
490 x: self.x,
491 y: self.x,
492 z: self.y,
493 }
494 }
495
496 fn xxz(self) -> Vec3<T> {
497 Vec3 {
498 x: self.x,
499 y: self.x,
500 z: self.z,
501 }
502 }
503
504 fn xyx(self) -> Vec3<T> {
505 Vec3 {
506 x: self.x,
507 y: self.y,
508 z: self.x,
509 }
510 }
511
512 fn xyy(self) -> Vec3<T> {
513 Vec3 {
514 x: self.x,
515 y: self.y,
516 z: self.y,
517 }
518 }
519
520 fn xyz(self) -> Vec3<T> {
521 Vec3 {
522 x: self.x,
523 y: self.y,
524 z: self.z,
525 }
526 }
527
528 fn xzx(self) -> Vec3<T> {
529 Vec3 {
530 x: self.x,
531 y: self.z,
532 z: self.x,
533 }
534 }
535
536 fn xzy(self) -> Vec3<T> {
537 Vec3 {
538 x: self.x,
539 y: self.z,
540 z: self.y,
541 }
542 }
543
544 fn xzz(self) -> Vec3<T> {
545 Vec3 {
546 x: self.x,
547 y: self.z,
548 z: self.z,
549 }
550 }
551
552 fn yxx(self) -> Vec3<T> {
553 Vec3 {
554 x: self.y,
555 y: self.x,
556 z: self.x,
557 }
558 }
559
560 fn yxy(self) -> Vec3<T> {
561 Vec3 {
562 x: self.y,
563 y: self.x,
564 z: self.y,
565 }
566 }
567
568 fn yxz(self) -> Vec3<T> {
569 Vec3 {
570 x: self.y,
571 y: self.x,
572 z: self.z,
573 }
574 }
575
576 fn yyx(self) -> Vec3<T> {
577 Vec3 {
578 x: self.y,
579 y: self.y,
580 z: self.x,
581 }
582 }
583
584 fn yyy(self) -> Vec3<T> {
585 Vec3 {
586 x: self.y,
587 y: self.y,
588 z: self.y,
589 }
590 }
591
592 fn yyz(self) -> Vec3<T> {
593 Vec3 {
594 x: self.y,
595 y: self.y,
596 z: self.z,
597 }
598 }
599
600 fn yzx(self) -> Vec3<T> {
601 Vec3 {
602 x: self.y,
603 y: self.z,
604 z: self.x,
605 }
606 }
607
608 fn yzy(self) -> Vec3<T> {
609 Vec3 {
610 x: self.y,
611 y: self.z,
612 z: self.y,
613 }
614 }
615
616 fn yzz(self) -> Vec3<T> {
617 Vec3 {
618 x: self.y,
619 y: self.z,
620 z: self.z,
621 }
622 }
623
624 fn zxx(self) -> Vec3<T> {
625 Vec3 {
626 x: self.z,
627 y: self.x,
628 z: self.x,
629 }
630 }
631
632 fn zxy(self) -> Vec3<T> {
633 Vec3 {
634 x: self.z,
635 y: self.x,
636 z: self.y,
637 }
638 }
639
640 fn zxz(self) -> Vec3<T> {
641 Vec3 {
642 x: self.z,
643 y: self.x,
644 z: self.z,
645 }
646 }
647
648 fn zyx(self) -> Vec3<T> {
649 Vec3 {
650 x: self.z,
651 y: self.y,
652 z: self.x,
653 }
654 }
655
656 fn zyy(self) -> Vec3<T> {
657 Vec3 {
658 x: self.z,
659 y: self.y,
660 z: self.y,
661 }
662 }
663
664 fn zyz(self) -> Vec3<T> {
665 Vec3 {
666 x: self.z,
667 y: self.y,
668 z: self.z,
669 }
670 }
671
672 fn zzx(self) -> Vec3<T> {
673 Vec3 {
674 x: self.z,
675 y: self.z,
676 z: self.x,
677 }
678 }
679
680 fn zzy(self) -> Vec3<T> {
681 Vec3 {
682 x: self.z,
683 y: self.z,
684 z: self.y,
685 }
686 }
687
688 fn zzz(self) -> Vec3<T> {
689 Vec3 {
690 x: self.z,
691 y: self.z,
692 z: self.z,
693 }
694 }
695
696 fn set_xz(&mut self, other: Vec2<T>) {
697 self.x = other.x; self.z = other.y;
698 }
699
700 fn set_yz(&mut self, other: Vec2<T>) {
701 self.y = other.x; self.z = other.y;
702 }
703
704 fn set_zx(&mut self, other: Vec2<T>) {
705 self.z = other.x; self.x = other.y;
706 }
707
708 fn set_zy(&mut self, other: Vec2<T>) {
709 self.z = other.x; self.y = other.y;
710 }
711
712 fn set_xyz(&mut self, other: Vec3<T>) {
713 self.x = other.x;
714 self.y = other.y;
715 self.z = other.z;
716 }
717
718 fn set_xzy(&mut self, other: Vec3<T>) {
719 self.x = other.x;
720 self.y = other.z;
721 self.z = other.y;
722 }
723
724 fn set_yxz(&mut self, other: Vec3<T>) {
725 self.x = other.y;
726 self.y = other.x;
727 self.z = other.z;
728 }
729
730 fn set_yzx(&mut self, other: Vec3<T>) {
731 self.x = other.y;
732 self.y = other.z;
733 self.z = other.x;
734 }
735
736 fn set_zxy(&mut self, other: Vec3<T>) {
737 self.x = other.z;
738 self.y = other.x;
739 self.z = other.y;
740 }
741
742 fn set_zyx(&mut self, other: Vec3<T>) {
743 self.x = other.z;
744 self.y = other.y;
745 self.z = other.x;
746 }
747 }
748 }
749}
750
751macro_rules! v4_swizzle_impl {
752 ($VecN:ident) => {
753 impl<T> Vec4Swizzle<T> for $VecN<T> where T: Number {
754 fn xw(self) -> Vec2<T> {
755 Vec2::new(self.x, self.w)
756 }
757
758 fn yw(self) -> Vec2<T> {
759 Vec2::new(self.y, self.w)
760 }
761
762 fn zw(self) -> Vec2<T> {
763 Vec2::new(self.z, self.w)
764 }
765
766 fn wx(self) -> Vec2<T> {
767 Vec2::new(self.w, self.x)
768 }
769
770 fn wy(self) -> Vec2<T> {
771 Vec2::new(self.w, self.y)
772 }
773
774 fn wz(self) -> Vec2<T> {
775 Vec2::new(self.w, self.z)
776 }
777
778 fn ww(self) -> Vec2<T> {
779 Vec2::new(self.w, self.w)
780 }
781
782 fn xxw(self) -> Vec3<T> {
783 Vec3::new(self.x, self.x, self.w)
784 }
785
786 fn xyw(self) -> Vec3<T> {
787 Vec3::new(self.x, self.y, self.w)
788 }
789
790 fn xzw(self) -> Vec3<T> {
791 Vec3::new(self.x, self.z, self.w)
792 }
793
794 fn xwx(self) -> Vec3<T> {
795 Vec3::new(self.x, self.w, self.x)
796 }
797
798 fn xwy(self) -> Vec3<T> {
799 Vec3::new(self.x, self.w, self.y)
800 }
801
802 fn xwz(self) -> Vec3<T> {
803 Vec3::new(self.x, self.w, self.z)
804 }
805
806 fn xww(self) -> Vec3<T> {
807 Vec3::new(self.x, self.w, self.w)
808 }
809
810 fn yxw(self) -> Vec3<T> {
811 Vec3::new(self.y, self.x, self.w)
812 }
813
814 fn yyw(self) -> Vec3<T> {
815 Vec3::new(self.y, self.y, self.w)
816 }
817
818 fn yzw(self) -> Vec3<T> {
819 Vec3::new(self.y, self.z, self.w)
820 }
821
822 fn ywx(self) -> Vec3<T> {
823 Vec3::new(self.y, self.w, self.x)
824 }
825
826 fn ywy(self) -> Vec3<T> {
827 Vec3::new(self.y, self.w, self.y)
828 }
829
830 fn ywz(self) -> Vec3<T> {
831 Vec3::new(self.y, self.w, self.z)
832 }
833
834 fn yww(self) -> Vec3<T> {
835 Vec3::new(self.y, self.w, self.w)
836 }
837
838 fn zxw(self) -> Vec3<T> {
839 Vec3::new(self.z, self.x, self.w)
840 }
841
842 fn zyw(self) -> Vec3<T> {
843 Vec3::new(self.z, self.y, self.w)
844 }
845
846 fn zzw(self) -> Vec3<T> {
847 Vec3::new(self.z, self.z, self.w)
848 }
849
850 fn zwx(self) -> Vec3<T> {
851 Vec3::new(self.z, self.w, self.x)
852 }
853
854 fn zwy(self) -> Vec3<T> {
855 Vec3::new(self.z, self.w, self.y)
856 }
857
858 fn zwz(self) -> Vec3<T> {
859 Vec3::new(self.z, self.w, self.z)
860 }
861
862 fn zww(self) -> Vec3<T> {
863 Vec3::new(self.z, self.w, self.w)
864 }
865
866 fn wxx(self) -> Vec3<T> {
867 Vec3::new(self.w, self.x, self.x)
868 }
869
870 fn wxy(self) -> Vec3<T> {
871 Vec3::new(self.w, self.x, self.y)
872 }
873
874 fn wxz(self) -> Vec3<T> {
875 Vec3::new(self.w, self.x, self.z)
876 }
877
878 fn wxw(self) -> Vec3<T> {
879 Vec3::new(self.w, self.x, self.w)
880 }
881
882 fn wyx(self) -> Vec3<T> {
883 Vec3::new(self.w, self.y, self.x)
884 }
885
886 fn wyy(self) -> Vec3<T> {
887 Vec3::new(self.w, self.y, self.y)
888 }
889
890 fn wyz(self) -> Vec3<T> {
891 Vec3::new(self.w, self.y, self.z)
892 }
893
894 fn wyw(self) -> Vec3<T> {
895 Vec3::new(self.w, self.y, self.w)
896 }
897
898 fn wzx(self) -> Vec3<T> {
899 Vec3::new(self.w, self.z, self.x)
900 }
901
902 fn wzy(self) -> Vec3<T> {
903 Vec3::new(self.w, self.z, self.y)
904 }
905
906 fn wzz(self) -> Vec3<T> {
907 Vec3::new(self.w, self.z, self.z)
908 }
909
910 fn wzw(self) -> Vec3<T> {
911 Vec3::new(self.w, self.z, self.w)
912 }
913
914 fn wwx(self) -> Vec3<T> {
915 Vec3::new(self.w, self.w, self.x)
916 }
917
918 fn wwy(self) -> Vec3<T> {
919 Vec3::new(self.w, self.w, self.y)
920 }
921
922 fn wwz(self) -> Vec3<T> {
923 Vec3::new(self.w, self.w, self.z)
924 }
925
926 fn www(self) -> Vec3<T> {
927 Vec3::new(self.w, self.w, self.w)
928 }
929
930 fn xxxx(self) -> Vec4<T> {
931 Vec4 {
932 x: self.x,
933 y: self.x,
934 z: self.x,
935 w: self.x,
936 }
937 }
938
939 fn xxxy(self) -> Vec4<T> {
940 Vec4 {
941 x: self.x,
942 y: self.x,
943 z: self.x,
944 w: self.y,
945 }
946 }
947
948 fn xxxz(self) -> Vec4<T> {
949 Vec4 {
950 x: self.x,
951 y: self.x,
952 z: self.x,
953 w: self.z,
954 }
955 }
956
957 fn xxxw(self) -> Vec4<T> {
958 Vec4 {
959 x: self.x,
960 y: self.x,
961 z: self.x,
962 w: self.w,
963 }
964 }
965
966 fn xxyx(self) -> Vec4<T> {
967 Vec4 {
968 x: self.x,
969 y: self.x,
970 z: self.y,
971 w: self.x,
972 }
973 }
974
975 fn xxyy(self) -> Vec4<T> {
976 Vec4 {
977 x: self.x,
978 y: self.x,
979 z: self.y,
980 w: self.y,
981 }
982 }
983
984 fn xxyz(self) -> Vec4<T> {
985 Vec4 {
986 x: self.x,
987 y: self.x,
988 z: self.y,
989 w: self.z,
990 }
991 }
992
993 fn xxyw(self) -> Vec4<T> {
994 Vec4 {
995 x: self.x,
996 y: self.x,
997 z: self.y,
998 w: self.w,
999 }
1000 }
1001
1002 fn xxzx(self) -> Vec4<T> {
1003 Vec4 {
1004 x: self.x,
1005 y: self.x,
1006 z: self.z,
1007 w: self.x,
1008 }
1009 }
1010
1011 fn xxzy(self) -> Vec4<T> {
1012 Vec4 {
1013 x: self.x,
1014 y: self.x,
1015 z: self.z,
1016 w: self.y,
1017 }
1018 }
1019
1020 fn xxzz(self) -> Vec4<T> {
1021 Vec4 {
1022 x: self.x,
1023 y: self.x,
1024 z: self.z,
1025 w: self.z,
1026 }
1027 }
1028
1029 fn xxzw(self) -> Vec4<T> {
1030 Vec4 {
1031 x: self.x,
1032 y: self.x,
1033 z: self.z,
1034 w: self.w,
1035 }
1036 }
1037
1038 fn xxwx(self) -> Vec4<T> {
1039 Vec4 {
1040 x: self.x,
1041 y: self.x,
1042 z: self.w,
1043 w: self.x,
1044 }
1045 }
1046
1047 fn xxwy(self) -> Vec4<T> {
1048 Vec4 {
1049 x: self.x,
1050 y: self.x,
1051 z: self.w,
1052 w: self.y,
1053 }
1054 }
1055
1056 fn xxwz(self) -> Vec4<T> {
1057 Vec4 {
1058 x: self.x,
1059 y: self.x,
1060 z: self.w,
1061 w: self.z,
1062 }
1063 }
1064
1065 fn xxww(self) -> Vec4<T> {
1066 Vec4 {
1067 x: self.x,
1068 y: self.x,
1069 z: self.w,
1070 w: self.w,
1071 }
1072 }
1073
1074 fn xyxx(self) -> Vec4<T> {
1075 Vec4 {
1076 x: self.x,
1077 y: self.y,
1078 z: self.x,
1079 w: self.x,
1080 }
1081 }
1082
1083 fn xyxy(self) -> Vec4<T> {
1084 Vec4 {
1085 x: self.x,
1086 y: self.y,
1087 z: self.x,
1088 w: self.y,
1089 }
1090 }
1091
1092 fn xyxz(self) -> Vec4<T> {
1093 Vec4 {
1094 x: self.x,
1095 y: self.y,
1096 z: self.x,
1097 w: self.z,
1098 }
1099 }
1100
1101 fn xyxw(self) -> Vec4<T> {
1102 Vec4 {
1103 x: self.x,
1104 y: self.y,
1105 z: self.x,
1106 w: self.w,
1107 }
1108 }
1109
1110 fn xyyx(self) -> Vec4<T> {
1111 Vec4 {
1112 x: self.x,
1113 y: self.y,
1114 z: self.y,
1115 w: self.x,
1116 }
1117 }
1118
1119 fn xyyy(self) -> Vec4<T> {
1120 Vec4 {
1121 x: self.x,
1122 y: self.y,
1123 z: self.y,
1124 w: self.y,
1125 }
1126 }
1127
1128 fn xyyz(self) -> Vec4<T> {
1129 Vec4 {
1130 x: self.x,
1131 y: self.y,
1132 z: self.y,
1133 w: self.z,
1134 }
1135 }
1136
1137 fn xyyw(self) -> Vec4<T> {
1138 Vec4 {
1139 x: self.x,
1140 y: self.y,
1141 z: self.y,
1142 w: self.w,
1143 }
1144 }
1145
1146 fn xyzx(self) -> Vec4<T> {
1147 Vec4 {
1148 x: self.x,
1149 y: self.y,
1150 z: self.z,
1151 w: self.x,
1152 }
1153 }
1154
1155 fn xyzy(self) -> Vec4<T> {
1156 Vec4 {
1157 x: self.x,
1158 y: self.y,
1159 z: self.z,
1160 w: self.y,
1161 }
1162 }
1163
1164 fn xyzz(self) -> Vec4<T> {
1165 Vec4 {
1166 x: self.x,
1167 y: self.y,
1168 z: self.z,
1169 w: self.z,
1170 }
1171 }
1172
1173 fn xyzw(self) -> Vec4<T> {
1174 Vec4 {
1175 x: self.x,
1176 y: self.y,
1177 z: self.z,
1178 w: self.w,
1179 }
1180 }
1181
1182 fn xywx(self) -> Vec4<T> {
1183 Vec4 {
1184 x: self.x,
1185 y: self.y,
1186 z: self.w,
1187 w: self.x,
1188 }
1189 }
1190
1191 fn xywy(self) -> Vec4<T> {
1192 Vec4 {
1193 x: self.x,
1194 y: self.y,
1195 z: self.w,
1196 w: self.y,
1197 }
1198 }
1199
1200 fn xywz(self) -> Vec4<T> {
1201 Vec4 {
1202 x: self.x,
1203 y: self.y,
1204 z: self.w,
1205 w: self.z,
1206 }
1207 }
1208
1209 fn xyww(self) -> Vec4<T> {
1210 Vec4 {
1211 x: self.x,
1212 y: self.y,
1213 z: self.w,
1214 w: self.w,
1215 }
1216 }
1217
1218 fn xzxx(self) -> Vec4<T> {
1219 Vec4 {
1220 x: self.x,
1221 y: self.z,
1222 z: self.x,
1223 w: self.x,
1224 }
1225 }
1226
1227 fn xzxy(self) -> Vec4<T> {
1228 Vec4 {
1229 x: self.x,
1230 y: self.z,
1231 z: self.x,
1232 w: self.y,
1233 }
1234 }
1235
1236 fn xzxz(self) -> Vec4<T> {
1237 Vec4 {
1238 x: self.x,
1239 y: self.z,
1240 z: self.x,
1241 w: self.z,
1242 }
1243 }
1244
1245 fn xzxw(self) -> Vec4<T> {
1246 Vec4 {
1247 x: self.x,
1248 y: self.z,
1249 z: self.x,
1250 w: self.w,
1251 }
1252 }
1253
1254 fn xzyx(self) -> Vec4<T> {
1255 Vec4 {
1256 x: self.x,
1257 y: self.z,
1258 z: self.y,
1259 w: self.x,
1260 }
1261 }
1262
1263 fn xzyy(self) -> Vec4<T> {
1264 Vec4 {
1265 x: self.x,
1266 y: self.z,
1267 z: self.y,
1268 w: self.y,
1269 }
1270 }
1271
1272 fn xzyz(self) -> Vec4<T> {
1273 Vec4 {
1274 x: self.x,
1275 y: self.z,
1276 z: self.y,
1277 w: self.z,
1278 }
1279 }
1280
1281 fn xzyw(self) -> Vec4<T> {
1282 Vec4 {
1283 x: self.x,
1284 y: self.z,
1285 z: self.y,
1286 w: self.w,
1287 }
1288 }
1289
1290 fn xzzx(self) -> Vec4<T> {
1291 Vec4 {
1292 x: self.x,
1293 y: self.z,
1294 z: self.z,
1295 w: self.x,
1296 }
1297 }
1298
1299 fn xzzy(self) -> Vec4<T> {
1300 Vec4 {
1301 x: self.x,
1302 y: self.z,
1303 z: self.z,
1304 w: self.y,
1305 }
1306 }
1307
1308 fn xzzz(self) -> Vec4<T> {
1309 Vec4 {
1310 x: self.x,
1311 y: self.z,
1312 z: self.z,
1313 w: self.z,
1314 }
1315 }
1316
1317 fn xzzw(self) -> Vec4<T> {
1318 Vec4 {
1319 x: self.x,
1320 y: self.z,
1321 z: self.z,
1322 w: self.w,
1323 }
1324 }
1325
1326 fn xzwx(self) -> Vec4<T> {
1327 Vec4 {
1328 x: self.x,
1329 y: self.z,
1330 z: self.w,
1331 w: self.x,
1332 }
1333 }
1334
1335 fn xzwy(self) -> Vec4<T> {
1336 Vec4 {
1337 x: self.x,
1338 y: self.z,
1339 z: self.w,
1340 w: self.y,
1341 }
1342 }
1343
1344 fn xzwz(self) -> Vec4<T> {
1345 Vec4 {
1346 x: self.x,
1347 y: self.z,
1348 z: self.w,
1349 w: self.z,
1350 }
1351 }
1352
1353 fn xzww(self) -> Vec4<T> {
1354 Vec4 {
1355 x: self.x,
1356 y: self.z,
1357 z: self.w,
1358 w: self.w,
1359 }
1360 }
1361
1362 fn xwxx(self) -> Vec4<T> {
1363 Vec4 {
1364 x: self.x,
1365 y: self.w,
1366 z: self.x,
1367 w: self.x,
1368 }
1369 }
1370
1371 fn xwxy(self) -> Vec4<T> {
1372 Vec4 {
1373 x: self.x,
1374 y: self.w,
1375 z: self.x,
1376 w: self.y,
1377 }
1378 }
1379
1380 fn xwxz(self) -> Vec4<T> {
1381 Vec4 {
1382 x: self.x,
1383 y: self.w,
1384 z: self.x,
1385 w: self.z,
1386 }
1387 }
1388
1389 fn xwxw(self) -> Vec4<T> {
1390 Vec4 {
1391 x: self.x,
1392 y: self.w,
1393 z: self.x,
1394 w: self.w,
1395 }
1396 }
1397
1398 fn xwyx(self) -> Vec4<T> {
1399 Vec4 {
1400 x: self.x,
1401 y: self.w,
1402 z: self.y,
1403 w: self.x,
1404 }
1405 }
1406
1407 fn xwyy(self) -> Vec4<T> {
1408 Vec4 {
1409 x: self.x,
1410 y: self.w,
1411 z: self.y,
1412 w: self.y,
1413 }
1414 }
1415
1416 fn xwyz(self) -> Vec4<T> {
1417 Vec4 {
1418 x: self.x,
1419 y: self.w,
1420 z: self.y,
1421 w: self.z,
1422 }
1423 }
1424
1425 fn xwyw(self) -> Vec4<T> {
1426 Vec4 {
1427 x: self.x,
1428 y: self.w,
1429 z: self.y,
1430 w: self.w,
1431 }
1432 }
1433
1434 fn xwzx(self) -> Vec4<T> {
1435 Vec4 {
1436 x: self.x,
1437 y: self.w,
1438 z: self.z,
1439 w: self.x,
1440 }
1441 }
1442
1443 fn xwzy(self) -> Vec4<T> {
1444 Vec4 {
1445 x: self.x,
1446 y: self.w,
1447 z: self.z,
1448 w: self.y,
1449 }
1450 }
1451
1452 fn xwzz(self) -> Vec4<T> {
1453 Vec4 {
1454 x: self.x,
1455 y: self.w,
1456 z: self.z,
1457 w: self.z,
1458 }
1459 }
1460
1461 fn xwzw(self) -> Vec4<T> {
1462 Vec4 {
1463 x: self.x,
1464 y: self.w,
1465 z: self.z,
1466 w: self.w,
1467 }
1468 }
1469
1470 fn xwwx(self) -> Vec4<T> {
1471 Vec4 {
1472 x: self.x,
1473 y: self.w,
1474 z: self.w,
1475 w: self.x,
1476 }
1477 }
1478
1479 fn xwwy(self) -> Vec4<T> {
1480 Vec4 {
1481 x: self.x,
1482 y: self.w,
1483 z: self.w,
1484 w: self.y,
1485 }
1486 }
1487
1488 fn xwwz(self) -> Vec4<T> {
1489 Vec4 {
1490 x: self.x,
1491 y: self.w,
1492 z: self.w,
1493 w: self.z,
1494 }
1495 }
1496
1497 fn xwww(self) -> Vec4<T> {
1498 Vec4 {
1499 x: self.x,
1500 y: self.w,
1501 z: self.w,
1502 w: self.w,
1503 }
1504 }
1505
1506 fn yxxx(self) -> Vec4<T> {
1507 Vec4 {
1508 x: self.y,
1509 y: self.x,
1510 z: self.x,
1511 w: self.x,
1512 }
1513 }
1514
1515 fn yxxy(self) -> Vec4<T> {
1516 Vec4 {
1517 x: self.y,
1518 y: self.x,
1519 z: self.x,
1520 w: self.y,
1521 }
1522 }
1523
1524 fn yxxz(self) -> Vec4<T> {
1525 Vec4 {
1526 x: self.y,
1527 y: self.x,
1528 z: self.x,
1529 w: self.z,
1530 }
1531 }
1532
1533 fn yxxw(self) -> Vec4<T> {
1534 Vec4 {
1535 x: self.y,
1536 y: self.x,
1537 z: self.x,
1538 w: self.w,
1539 }
1540 }
1541
1542 fn yxyx(self) -> Vec4<T> {
1543 Vec4 {
1544 x: self.y,
1545 y: self.x,
1546 z: self.y,
1547 w: self.x,
1548 }
1549 }
1550
1551 fn yxyy(self) -> Vec4<T> {
1552 Vec4 {
1553 x: self.y,
1554 y: self.x,
1555 z: self.y,
1556 w: self.y,
1557 }
1558 }
1559
1560 fn yxyz(self) -> Vec4<T> {
1561 Vec4 {
1562 x: self.y,
1563 y: self.x,
1564 z: self.y,
1565 w: self.z,
1566 }
1567 }
1568
1569 fn yxyw(self) -> Vec4<T> {
1570 Vec4 {
1571 x: self.y,
1572 y: self.x,
1573 z: self.y,
1574 w: self.w,
1575 }
1576 }
1577
1578 fn yxzx(self) -> Vec4<T> {
1579 Vec4 {
1580 x: self.y,
1581 y: self.x,
1582 z: self.z,
1583 w: self.x,
1584 }
1585 }
1586
1587 fn yxzy(self) -> Vec4<T> {
1588 Vec4 {
1589 x: self.y,
1590 y: self.x,
1591 z: self.z,
1592 w: self.y,
1593 }
1594 }
1595
1596 fn yxzz(self) -> Vec4<T> {
1597 Vec4 {
1598 x: self.y,
1599 y: self.x,
1600 z: self.z,
1601 w: self.z,
1602 }
1603 }
1604
1605 fn yxzw(self) -> Vec4<T> {
1606 Vec4 {
1607 x: self.y,
1608 y: self.x,
1609 z: self.z,
1610 w: self.w,
1611 }
1612 }
1613
1614 fn yxwx(self) -> Vec4<T> {
1615 Vec4 {
1616 x: self.y,
1617 y: self.x,
1618 z: self.w,
1619 w: self.x,
1620 }
1621 }
1622
1623 fn yxwy(self) -> Vec4<T> {
1624 Vec4 {
1625 x: self.y,
1626 y: self.x,
1627 z: self.w,
1628 w: self.y,
1629 }
1630 }
1631
1632 fn yxwz(self) -> Vec4<T> {
1633 Vec4 {
1634 x: self.y,
1635 y: self.x,
1636 z: self.w,
1637 w: self.z,
1638 }
1639 }
1640
1641 fn yxww(self) -> Vec4<T> {
1642 Vec4 {
1643 x: self.y,
1644 y: self.x,
1645 z: self.w,
1646 w: self.w,
1647 }
1648 }
1649
1650 fn yyxx(self) -> Vec4<T> {
1651 Vec4 {
1652 x: self.y,
1653 y: self.y,
1654 z: self.x,
1655 w: self.x,
1656 }
1657 }
1658
1659 fn yyxy(self) -> Vec4<T> {
1660 Vec4 {
1661 x: self.y,
1662 y: self.y,
1663 z: self.x,
1664 w: self.y,
1665 }
1666 }
1667
1668 fn yyxz(self) -> Vec4<T> {
1669 Vec4 {
1670 x: self.y,
1671 y: self.y,
1672 z: self.x,
1673 w: self.z,
1674 }
1675 }
1676
1677 fn yyxw(self) -> Vec4<T> {
1678 Vec4 {
1679 x: self.y,
1680 y: self.y,
1681 z: self.x,
1682 w: self.w,
1683 }
1684 }
1685
1686 fn yyyx(self) -> Vec4<T> {
1687 Vec4 {
1688 x: self.y,
1689 y: self.y,
1690 z: self.y,
1691 w: self.x,
1692 }
1693 }
1694
1695 fn yyyy(self) -> Vec4<T> {
1696 Vec4 {
1697 x: self.y,
1698 y: self.y,
1699 z: self.y,
1700 w: self.y,
1701 }
1702 }
1703
1704 fn yyyz(self) -> Vec4<T> {
1705 Vec4 {
1706 x: self.y,
1707 y: self.y,
1708 z: self.y,
1709 w: self.z,
1710 }
1711 }
1712
1713 fn yyyw(self) -> Vec4<T> {
1714 Vec4 {
1715 x: self.y,
1716 y: self.y,
1717 z: self.y,
1718 w: self.w,
1719 }
1720 }
1721
1722 fn yyzx(self) -> Vec4<T> {
1723 Vec4 {
1724 x: self.y,
1725 y: self.y,
1726 z: self.z,
1727 w: self.x,
1728 }
1729 }
1730
1731 fn yyzy(self) -> Vec4<T> {
1732 Vec4 {
1733 x: self.y,
1734 y: self.y,
1735 z: self.z,
1736 w: self.y,
1737 }
1738 }
1739
1740 fn yyzz(self) -> Vec4<T> {
1741 Vec4 {
1742 x: self.y,
1743 y: self.y,
1744 z: self.z,
1745 w: self.z,
1746 }
1747 }
1748
1749 fn yyzw(self) -> Vec4<T> {
1750 Vec4 {
1751 x: self.y,
1752 y: self.y,
1753 z: self.z,
1754 w: self.w,
1755 }
1756 }
1757
1758 fn yywx(self) -> Vec4<T> {
1759 Vec4 {
1760 x: self.y,
1761 y: self.y,
1762 z: self.w,
1763 w: self.x,
1764 }
1765 }
1766
1767 fn yywy(self) -> Vec4<T> {
1768 Vec4 {
1769 x: self.y,
1770 y: self.y,
1771 z: self.w,
1772 w: self.y,
1773 }
1774 }
1775
1776 fn yywz(self) -> Vec4<T> {
1777 Vec4 {
1778 x: self.y,
1779 y: self.y,
1780 z: self.w,
1781 w: self.z,
1782 }
1783 }
1784
1785 fn yyww(self) -> Vec4<T> {
1786 Vec4 {
1787 x: self.y,
1788 y: self.y,
1789 z: self.w,
1790 w: self.w,
1791 }
1792 }
1793
1794 fn yzxx(self) -> Vec4<T> {
1795 Vec4 {
1796 x: self.y,
1797 y: self.z,
1798 z: self.x,
1799 w: self.x,
1800 }
1801 }
1802
1803 fn yzxy(self) -> Vec4<T> {
1804 Vec4 {
1805 x: self.y,
1806 y: self.z,
1807 z: self.x,
1808 w: self.y,
1809 }
1810 }
1811
1812 fn yzxz(self) -> Vec4<T> {
1813 Vec4 {
1814 x: self.y,
1815 y: self.z,
1816 z: self.x,
1817 w: self.z,
1818 }
1819 }
1820
1821 fn yzxw(self) -> Vec4<T> {
1822 Vec4 {
1823 x: self.y,
1824 y: self.z,
1825 z: self.x,
1826 w: self.w,
1827 }
1828 }
1829
1830 fn yzyx(self) -> Vec4<T> {
1831 Vec4 {
1832 x: self.y,
1833 y: self.z,
1834 z: self.y,
1835 w: self.x,
1836 }
1837 }
1838
1839 fn yzyy(self) -> Vec4<T> {
1840 Vec4 {
1841 x: self.y,
1842 y: self.z,
1843 z: self.y,
1844 w: self.y,
1845 }
1846 }
1847
1848 fn yzyz(self) -> Vec4<T> {
1849 Vec4 {
1850 x: self.y,
1851 y: self.z,
1852 z: self.y,
1853 w: self.z,
1854 }
1855 }
1856
1857 fn yzyw(self) -> Vec4<T> {
1858 Vec4 {
1859 x: self.y,
1860 y: self.z,
1861 z: self.y,
1862 w: self.w,
1863 }
1864 }
1865
1866 fn yzzx(self) -> Vec4<T> {
1867 Vec4 {
1868 x: self.y,
1869 y: self.z,
1870 z: self.z,
1871 w: self.x,
1872 }
1873 }
1874
1875 fn yzzy(self) -> Vec4<T> {
1876 Vec4 {
1877 x: self.y,
1878 y: self.z,
1879 z: self.z,
1880 w: self.y,
1881 }
1882 }
1883
1884 fn yzzz(self) -> Vec4<T> {
1885 Vec4 {
1886 x: self.y,
1887 y: self.z,
1888 z: self.z,
1889 w: self.z,
1890 }
1891 }
1892
1893 fn yzzw(self) -> Vec4<T> {
1894 Vec4 {
1895 x: self.y,
1896 y: self.z,
1897 z: self.z,
1898 w: self.w,
1899 }
1900 }
1901
1902 fn yzwx(self) -> Vec4<T> {
1903 Vec4 {
1904 x: self.y,
1905 y: self.z,
1906 z: self.w,
1907 w: self.x,
1908 }
1909 }
1910
1911 fn yzwy(self) -> Vec4<T> {
1912 Vec4 {
1913 x: self.y,
1914 y: self.z,
1915 z: self.w,
1916 w: self.y,
1917 }
1918 }
1919
1920 fn yzwz(self) -> Vec4<T> {
1921 Vec4 {
1922 x: self.y,
1923 y: self.z,
1924 z: self.w,
1925 w: self.z,
1926 }
1927 }
1928
1929 fn yzww(self) -> Vec4<T> {
1930 Vec4 {
1931 x: self.y,
1932 y: self.z,
1933 z: self.w,
1934 w: self.w,
1935 }
1936 }
1937
1938 fn ywxx(self) -> Vec4<T> {
1939 Vec4 {
1940 x: self.y,
1941 y: self.w,
1942 z: self.x,
1943 w: self.x,
1944 }
1945 }
1946
1947 fn ywxy(self) -> Vec4<T> {
1948 Vec4 {
1949 x: self.y,
1950 y: self.w,
1951 z: self.x,
1952 w: self.y,
1953 }
1954 }
1955
1956 fn ywxz(self) -> Vec4<T> {
1957 Vec4 {
1958 x: self.y,
1959 y: self.w,
1960 z: self.x,
1961 w: self.z,
1962 }
1963 }
1964
1965 fn ywxw(self) -> Vec4<T> {
1966 Vec4 {
1967 x: self.y,
1968 y: self.w,
1969 z: self.x,
1970 w: self.w,
1971 }
1972 }
1973
1974 fn ywyx(self) -> Vec4<T> {
1975 Vec4 {
1976 x: self.y,
1977 y: self.w,
1978 z: self.y,
1979 w: self.x,
1980 }
1981 }
1982
1983 fn ywyy(self) -> Vec4<T> {
1984 Vec4 {
1985 x: self.y,
1986 y: self.w,
1987 z: self.y,
1988 w: self.y,
1989 }
1990 }
1991
1992 fn ywyz(self) -> Vec4<T> {
1993 Vec4 {
1994 x: self.y,
1995 y: self.w,
1996 z: self.y,
1997 w: self.z,
1998 }
1999 }
2000
2001 fn ywyw(self) -> Vec4<T> {
2002 Vec4 {
2003 x: self.y,
2004 y: self.w,
2005 z: self.y,
2006 w: self.w,
2007 }
2008 }
2009
2010 fn ywzx(self) -> Vec4<T> {
2011 Vec4 {
2012 x: self.y,
2013 y: self.w,
2014 z: self.z,
2015 w: self.x,
2016 }
2017 }
2018
2019 fn ywzy(self) -> Vec4<T> {
2020 Vec4 {
2021 x: self.y,
2022 y: self.w,
2023 z: self.z,
2024 w: self.y,
2025 }
2026 }
2027
2028 fn ywzz(self) -> Vec4<T> {
2029 Vec4 {
2030 x: self.y,
2031 y: self.w,
2032 z: self.z,
2033 w: self.z,
2034 }
2035 }
2036
2037 fn ywzw(self) -> Vec4<T> {
2038 Vec4 {
2039 x: self.y,
2040 y: self.w,
2041 z: self.z,
2042 w: self.w,
2043 }
2044 }
2045
2046 fn ywwx(self) -> Vec4<T> {
2047 Vec4 {
2048 x: self.y,
2049 y: self.w,
2050 z: self.w,
2051 w: self.x,
2052 }
2053 }
2054
2055 fn ywwy(self) -> Vec4<T> {
2056 Vec4 {
2057 x: self.y,
2058 y: self.w,
2059 z: self.w,
2060 w: self.y,
2061 }
2062 }
2063
2064 fn ywwz(self) -> Vec4<T> {
2065 Vec4 {
2066 x: self.y,
2067 y: self.w,
2068 z: self.w,
2069 w: self.z,
2070 }
2071 }
2072
2073 fn ywww(self) -> Vec4<T> {
2074 Vec4 {
2075 x: self.y,
2076 y: self.w,
2077 z: self.w,
2078 w: self.w,
2079 }
2080 }
2081
2082 fn zxxx(self) -> Vec4<T> {
2083 Vec4 {
2084 x: self.z,
2085 y: self.x,
2086 z: self.x,
2087 w: self.x,
2088 }
2089 }
2090
2091 fn zxxy(self) -> Vec4<T> {
2092 Vec4 {
2093 x: self.z,
2094 y: self.x,
2095 z: self.x,
2096 w: self.y,
2097 }
2098 }
2099
2100 fn zxxz(self) -> Vec4<T> {
2101 Vec4 {
2102 x: self.z,
2103 y: self.x,
2104 z: self.x,
2105 w: self.z,
2106 }
2107 }
2108
2109 fn zxxw(self) -> Vec4<T> {
2110 Vec4 {
2111 x: self.z,
2112 y: self.x,
2113 z: self.x,
2114 w: self.w,
2115 }
2116 }
2117
2118 fn zxyx(self) -> Vec4<T> {
2119 Vec4 {
2120 x: self.z,
2121 y: self.x,
2122 z: self.y,
2123 w: self.x,
2124 }
2125 }
2126
2127 fn zxyy(self) -> Vec4<T> {
2128 Vec4 {
2129 x: self.z,
2130 y: self.x,
2131 z: self.y,
2132 w: self.y,
2133 }
2134 }
2135
2136 fn zxyz(self) -> Vec4<T> {
2137 Vec4 {
2138 x: self.z,
2139 y: self.x,
2140 z: self.y,
2141 w: self.z,
2142 }
2143 }
2144
2145 fn zxyw(self) -> Vec4<T> {
2146 Vec4 {
2147 x: self.z,
2148 y: self.x,
2149 z: self.y,
2150 w: self.w,
2151 }
2152 }
2153
2154 fn zxzx(self) -> Vec4<T> {
2155 Vec4 {
2156 x: self.z,
2157 y: self.x,
2158 z: self.z,
2159 w: self.x,
2160 }
2161 }
2162
2163 fn zxzy(self) -> Vec4<T> {
2164 Vec4 {
2165 x: self.z,
2166 y: self.x,
2167 z: self.z,
2168 w: self.y,
2169 }
2170 }
2171
2172 fn zxzz(self) -> Vec4<T> {
2173 Vec4 {
2174 x: self.z,
2175 y: self.x,
2176 z: self.z,
2177 w: self.z,
2178 }
2179 }
2180
2181 fn zxzw(self) -> Vec4<T> {
2182 Vec4 {
2183 x: self.z,
2184 y: self.x,
2185 z: self.z,
2186 w: self.w,
2187 }
2188 }
2189
2190 fn zxwx(self) -> Vec4<T> {
2191 Vec4 {
2192 x: self.z,
2193 y: self.x,
2194 z: self.w,
2195 w: self.x,
2196 }
2197 }
2198
2199 fn zxwy(self) -> Vec4<T> {
2200 Vec4 {
2201 x: self.z,
2202 y: self.x,
2203 z: self.w,
2204 w: self.y,
2205 }
2206 }
2207
2208 fn zxwz(self) -> Vec4<T> {
2209 Vec4 {
2210 x: self.z,
2211 y: self.x,
2212 z: self.w,
2213 w: self.z,
2214 }
2215 }
2216
2217 fn zxww(self) -> Vec4<T> {
2218 Vec4 {
2219 x: self.z,
2220 y: self.x,
2221 z: self.w,
2222 w: self.w,
2223 }
2224 }
2225
2226 fn zyxx(self) -> Vec4<T> {
2227 Vec4 {
2228 x: self.z,
2229 y: self.y,
2230 z: self.x,
2231 w: self.x,
2232 }
2233 }
2234
2235 fn zyxy(self) -> Vec4<T> {
2236 Vec4 {
2237 x: self.z,
2238 y: self.y,
2239 z: self.x,
2240 w: self.y,
2241 }
2242 }
2243
2244 fn zyxz(self) -> Vec4<T> {
2245 Vec4 {
2246 x: self.z,
2247 y: self.y,
2248 z: self.x,
2249 w: self.z,
2250 }
2251 }
2252
2253 fn zyxw(self) -> Vec4<T> {
2254 Vec4 {
2255 x: self.z,
2256 y: self.y,
2257 z: self.x,
2258 w: self.w,
2259 }
2260 }
2261
2262 fn zyyx(self) -> Vec4<T> {
2263 Vec4 {
2264 x: self.z,
2265 y: self.y,
2266 z: self.y,
2267 w: self.x,
2268 }
2269 }
2270
2271 fn zyyy(self) -> Vec4<T> {
2272 Vec4 {
2273 x: self.z,
2274 y: self.y,
2275 z: self.y,
2276 w: self.y,
2277 }
2278 }
2279
2280 fn zyyz(self) -> Vec4<T> {
2281 Vec4 {
2282 x: self.z,
2283 y: self.y,
2284 z: self.y,
2285 w: self.z,
2286 }
2287 }
2288
2289 fn zyyw(self) -> Vec4<T> {
2290 Vec4 {
2291 x: self.z,
2292 y: self.y,
2293 z: self.y,
2294 w: self.w,
2295 }
2296 }
2297
2298 fn zyzx(self) -> Vec4<T> {
2299 Vec4 {
2300 x: self.z,
2301 y: self.y,
2302 z: self.z,
2303 w: self.x,
2304 }
2305 }
2306
2307 fn zyzy(self) -> Vec4<T> {
2308 Vec4 {
2309 x: self.z,
2310 y: self.y,
2311 z: self.z,
2312 w: self.y,
2313 }
2314 }
2315
2316 fn zyzz(self) -> Vec4<T> {
2317 Vec4 {
2318 x: self.z,
2319 y: self.y,
2320 z: self.z,
2321 w: self.z,
2322 }
2323 }
2324
2325 fn zyzw(self) -> Vec4<T> {
2326 Vec4 {
2327 x: self.z,
2328 y: self.y,
2329 z: self.z,
2330 w: self.w,
2331 }
2332 }
2333
2334 fn zywx(self) -> Vec4<T> {
2335 Vec4 {
2336 x: self.z,
2337 y: self.y,
2338 z: self.w,
2339 w: self.x,
2340 }
2341 }
2342
2343 fn zywy(self) -> Vec4<T> {
2344 Vec4 {
2345 x: self.z,
2346 y: self.y,
2347 z: self.w,
2348 w: self.y,
2349 }
2350 }
2351
2352 fn zywz(self) -> Vec4<T> {
2353 Vec4 {
2354 x: self.z,
2355 y: self.y,
2356 z: self.w,
2357 w: self.z,
2358 }
2359 }
2360
2361 fn zyww(self) -> Vec4<T> {
2362 Vec4 {
2363 x: self.z,
2364 y: self.y,
2365 z: self.w,
2366 w: self.w,
2367 }
2368 }
2369
2370 fn zzxx(self) -> Vec4<T> {
2371 Vec4 {
2372 x: self.z,
2373 y: self.z,
2374 z: self.x,
2375 w: self.x,
2376 }
2377 }
2378
2379 fn zzxy(self) -> Vec4<T> {
2380 Vec4 {
2381 x: self.z,
2382 y: self.z,
2383 z: self.x,
2384 w: self.y,
2385 }
2386 }
2387
2388 fn zzxz(self) -> Vec4<T> {
2389 Vec4 {
2390 x: self.z,
2391 y: self.z,
2392 z: self.x,
2393 w: self.z,
2394 }
2395 }
2396
2397 fn zzxw(self) -> Vec4<T> {
2398 Vec4 {
2399 x: self.z,
2400 y: self.z,
2401 z: self.x,
2402 w: self.w,
2403 }
2404 }
2405
2406 fn zzyx(self) -> Vec4<T> {
2407 Vec4 {
2408 x: self.z,
2409 y: self.z,
2410 z: self.y,
2411 w: self.x,
2412 }
2413 }
2414
2415 fn zzyy(self) -> Vec4<T> {
2416 Vec4 {
2417 x: self.z,
2418 y: self.z,
2419 z: self.y,
2420 w: self.y,
2421 }
2422 }
2423
2424 fn zzyz(self) -> Vec4<T> {
2425 Vec4 {
2426 x: self.z,
2427 y: self.z,
2428 z: self.y,
2429 w: self.z,
2430 }
2431 }
2432
2433 fn zzyw(self) -> Vec4<T> {
2434 Vec4 {
2435 x: self.z,
2436 y: self.z,
2437 z: self.y,
2438 w: self.w,
2439 }
2440 }
2441
2442 fn zzzx(self) -> Vec4<T> {
2443 Vec4 {
2444 x: self.z,
2445 y: self.z,
2446 z: self.z,
2447 w: self.x,
2448 }
2449 }
2450
2451 fn zzzy(self) -> Vec4<T> {
2452 Vec4 {
2453 x: self.z,
2454 y: self.z,
2455 z: self.z,
2456 w: self.y,
2457 }
2458 }
2459
2460 fn zzzz(self) -> Vec4<T> {
2461 Vec4 {
2462 x: self.z,
2463 y: self.z,
2464 z: self.z,
2465 w: self.z,
2466 }
2467 }
2468
2469 fn zzzw(self) -> Vec4<T> {
2470 Vec4 {
2471 x: self.z,
2472 y: self.z,
2473 z: self.z,
2474 w: self.w,
2475 }
2476 }
2477
2478 fn zzwx(self) -> Vec4<T> {
2479 Vec4 {
2480 x: self.z,
2481 y: self.z,
2482 z: self.w,
2483 w: self.x,
2484 }
2485 }
2486
2487 fn zzwy(self) -> Vec4<T> {
2488 Vec4 {
2489 x: self.z,
2490 y: self.z,
2491 z: self.w,
2492 w: self.y,
2493 }
2494 }
2495
2496 fn zzwz(self) -> Vec4<T> {
2497 Vec4 {
2498 x: self.z,
2499 y: self.z,
2500 z: self.w,
2501 w: self.z,
2502 }
2503 }
2504
2505 fn zzww(self) -> Vec4<T> {
2506 Vec4 {
2507 x: self.z,
2508 y: self.z,
2509 z: self.w,
2510 w: self.w,
2511 }
2512 }
2513
2514 fn zwxx(self) -> Vec4<T> {
2515 Vec4 {
2516 x: self.z,
2517 y: self.w,
2518 z: self.x,
2519 w: self.x,
2520 }
2521 }
2522
2523 fn zwxy(self) -> Vec4<T> {
2524 Vec4 {
2525 x: self.z,
2526 y: self.w,
2527 z: self.x,
2528 w: self.y,
2529 }
2530 }
2531
2532 fn zwxz(self) -> Vec4<T> {
2533 Vec4 {
2534 x: self.z,
2535 y: self.w,
2536 z: self.x,
2537 w: self.z,
2538 }
2539 }
2540
2541 fn zwxw(self) -> Vec4<T> {
2542 Vec4 {
2543 x: self.z,
2544 y: self.w,
2545 z: self.x,
2546 w: self.w,
2547 }
2548 }
2549
2550 fn zwyx(self) -> Vec4<T> {
2551 Vec4 {
2552 x: self.z,
2553 y: self.w,
2554 z: self.y,
2555 w: self.x,
2556 }
2557 }
2558
2559 fn zwyy(self) -> Vec4<T> {
2560 Vec4 {
2561 x: self.z,
2562 y: self.w,
2563 z: self.y,
2564 w: self.y,
2565 }
2566 }
2567
2568 fn zwyz(self) -> Vec4<T> {
2569 Vec4 {
2570 x: self.z,
2571 y: self.w,
2572 z: self.y,
2573 w: self.z,
2574 }
2575 }
2576
2577 fn zwyw(self) -> Vec4<T> {
2578 Vec4 {
2579 x: self.z,
2580 y: self.w,
2581 z: self.y,
2582 w: self.w,
2583 }
2584 }
2585
2586 fn zwzx(self) -> Vec4<T> {
2587 Vec4 {
2588 x: self.z,
2589 y: self.w,
2590 z: self.z,
2591 w: self.x,
2592 }
2593 }
2594
2595 fn zwzy(self) -> Vec4<T> {
2596 Vec4 {
2597 x: self.z,
2598 y: self.w,
2599 z: self.z,
2600 w: self.y,
2601 }
2602 }
2603
2604 fn zwzz(self) -> Vec4<T> {
2605 Vec4 {
2606 x: self.z,
2607 y: self.w,
2608 z: self.z,
2609 w: self.z,
2610 }
2611 }
2612
2613 fn zwzw(self) -> Vec4<T> {
2614 Vec4 {
2615 x: self.z,
2616 y: self.w,
2617 z: self.z,
2618 w: self.w,
2619 }
2620 }
2621
2622 fn zwwx(self) -> Vec4<T> {
2623 Vec4 {
2624 x: self.z,
2625 y: self.w,
2626 z: self.w,
2627 w: self.x,
2628 }
2629 }
2630
2631 fn zwwy(self) -> Vec4<T> {
2632 Vec4 {
2633 x: self.z,
2634 y: self.w,
2635 z: self.w,
2636 w: self.y,
2637 }
2638 }
2639
2640 fn zwwz(self) -> Vec4<T> {
2641 Vec4 {
2642 x: self.z,
2643 y: self.w,
2644 z: self.w,
2645 w: self.z,
2646 }
2647 }
2648
2649 fn zwww(self) -> Vec4<T> {
2650 Vec4 {
2651 x: self.z,
2652 y: self.w,
2653 z: self.w,
2654 w: self.w,
2655 }
2656 }
2657
2658 fn wxxx(self) -> Vec4<T> {
2659 Vec4 {
2660 x: self.w,
2661 y: self.x,
2662 z: self.x,
2663 w: self.x,
2664 }
2665 }
2666
2667 fn wxxy(self) -> Vec4<T> {
2668 Vec4 {
2669 x: self.w,
2670 y: self.x,
2671 z: self.x,
2672 w: self.y,
2673 }
2674 }
2675
2676 fn wxxz(self) -> Vec4<T> {
2677 Vec4 {
2678 x: self.w,
2679 y: self.x,
2680 z: self.x,
2681 w: self.z,
2682 }
2683 }
2684
2685 fn wxxw(self) -> Vec4<T> {
2686 Vec4 {
2687 x: self.w,
2688 y: self.x,
2689 z: self.x,
2690 w: self.w,
2691 }
2692 }
2693
2694 fn wxyx(self) -> Vec4<T> {
2695 Vec4 {
2696 x: self.w,
2697 y: self.x,
2698 z: self.y,
2699 w: self.x,
2700 }
2701 }
2702
2703 fn wxyy(self) -> Vec4<T> {
2704 Vec4 {
2705 x: self.w,
2706 y: self.x,
2707 z: self.y,
2708 w: self.y,
2709 }
2710 }
2711
2712 fn wxyz(self) -> Vec4<T> {
2713 Vec4 {
2714 x: self.w,
2715 y: self.x,
2716 z: self.y,
2717 w: self.z,
2718 }
2719 }
2720
2721 fn wxyw(self) -> Vec4<T> {
2722 Vec4 {
2723 x: self.w,
2724 y: self.x,
2725 z: self.y,
2726 w: self.w,
2727 }
2728 }
2729
2730 fn wxzx(self) -> Vec4<T> {
2731 Vec4 {
2732 x: self.w,
2733 y: self.x,
2734 z: self.z,
2735 w: self.x,
2736 }
2737 }
2738
2739 fn wxzy(self) -> Vec4<T> {
2740 Vec4 {
2741 x: self.w,
2742 y: self.x,
2743 z: self.z,
2744 w: self.y,
2745 }
2746 }
2747
2748 fn wxzz(self) -> Vec4<T> {
2749 Vec4 {
2750 x: self.w,
2751 y: self.x,
2752 z: self.z,
2753 w: self.z,
2754 }
2755 }
2756
2757 fn wxzw(self) -> Vec4<T> {
2758 Vec4 {
2759 x: self.w,
2760 y: self.x,
2761 z: self.z,
2762 w: self.w,
2763 }
2764 }
2765
2766 fn wxwx(self) -> Vec4<T> {
2767 Vec4 {
2768 x: self.w,
2769 y: self.x,
2770 z: self.w,
2771 w: self.x,
2772 }
2773 }
2774
2775 fn wxwy(self) -> Vec4<T> {
2776 Vec4 {
2777 x: self.w,
2778 y: self.x,
2779 z: self.w,
2780 w: self.y,
2781 }
2782 }
2783
2784 fn wxwz(self) -> Vec4<T> {
2785 Vec4 {
2786 x: self.w,
2787 y: self.x,
2788 z: self.w,
2789 w: self.z,
2790 }
2791 }
2792
2793 fn wxww(self) -> Vec4<T> {
2794 Vec4 {
2795 x: self.w,
2796 y: self.x,
2797 z: self.w,
2798 w: self.w,
2799 }
2800 }
2801
2802 fn wyxx(self) -> Vec4<T> {
2803 Vec4 {
2804 x: self.w,
2805 y: self.y,
2806 z: self.x,
2807 w: self.x,
2808 }
2809 }
2810
2811 fn wyxy(self) -> Vec4<T> {
2812 Vec4 {
2813 x: self.w,
2814 y: self.y,
2815 z: self.x,
2816 w: self.y,
2817 }
2818 }
2819
2820 fn wyxz(self) -> Vec4<T> {
2821 Vec4 {
2822 x: self.w,
2823 y: self.y,
2824 z: self.x,
2825 w: self.z,
2826 }
2827 }
2828
2829 fn wyxw(self) -> Vec4<T> {
2830 Vec4 {
2831 x: self.w,
2832 y: self.y,
2833 z: self.x,
2834 w: self.w,
2835 }
2836 }
2837
2838 fn wyyx(self) -> Vec4<T> {
2839 Vec4 {
2840 x: self.w,
2841 y: self.y,
2842 z: self.y,
2843 w: self.x,
2844 }
2845 }
2846
2847 fn wyyy(self) -> Vec4<T> {
2848 Vec4 {
2849 x: self.w,
2850 y: self.y,
2851 z: self.y,
2852 w: self.y,
2853 }
2854 }
2855
2856 fn wyyz(self) -> Vec4<T> {
2857 Vec4 {
2858 x: self.w,
2859 y: self.y,
2860 z: self.y,
2861 w: self.z,
2862 }
2863 }
2864
2865 fn wyyw(self) -> Vec4<T> {
2866 Vec4 {
2867 x: self.w,
2868 y: self.y,
2869 z: self.y,
2870 w: self.w,
2871 }
2872 }
2873
2874 fn wyzx(self) -> Vec4<T> {
2875 Vec4 {
2876 x: self.w,
2877 y: self.y,
2878 z: self.z,
2879 w: self.x,
2880 }
2881 }
2882
2883 fn wyzy(self) -> Vec4<T> {
2884 Vec4 {
2885 x: self.w,
2886 y: self.y,
2887 z: self.z,
2888 w: self.y,
2889 }
2890 }
2891
2892 fn wyzz(self) -> Vec4<T> {
2893 Vec4 {
2894 x: self.w,
2895 y: self.y,
2896 z: self.z,
2897 w: self.z,
2898 }
2899 }
2900
2901 fn wyzw(self) -> Vec4<T> {
2902 Vec4 {
2903 x: self.w,
2904 y: self.y,
2905 z: self.z,
2906 w: self.w,
2907 }
2908 }
2909
2910 fn wywx(self) -> Vec4<T> {
2911 Vec4 {
2912 x: self.w,
2913 y: self.y,
2914 z: self.w,
2915 w: self.x,
2916 }
2917 }
2918
2919 fn wywy(self) -> Vec4<T> {
2920 Vec4 {
2921 x: self.w,
2922 y: self.y,
2923 z: self.w,
2924 w: self.y,
2925 }
2926 }
2927
2928 fn wywz(self) -> Vec4<T> {
2929 Vec4 {
2930 x: self.w,
2931 y: self.y,
2932 z: self.w,
2933 w: self.z,
2934 }
2935 }
2936
2937 fn wyww(self) -> Vec4<T> {
2938 Vec4 {
2939 x: self.w,
2940 y: self.y,
2941 z: self.w,
2942 w: self.w,
2943 }
2944 }
2945
2946 fn wzxx(self) -> Vec4<T> {
2947 Vec4 {
2948 x: self.w,
2949 y: self.z,
2950 z: self.x,
2951 w: self.x,
2952 }
2953 }
2954
2955 fn wzxy(self) -> Vec4<T> {
2956 Vec4 {
2957 x: self.w,
2958 y: self.z,
2959 z: self.x,
2960 w: self.y,
2961 }
2962 }
2963
2964 fn wzxz(self) -> Vec4<T> {
2965 Vec4 {
2966 x: self.w,
2967 y: self.z,
2968 z: self.x,
2969 w: self.z,
2970 }
2971 }
2972
2973 fn wzxw(self) -> Vec4<T> {
2974 Vec4 {
2975 x: self.w,
2976 y: self.z,
2977 z: self.x,
2978 w: self.w,
2979 }
2980 }
2981
2982 fn wzyx(self) -> Vec4<T> {
2983 Vec4 {
2984 x: self.w,
2985 y: self.z,
2986 z: self.y,
2987 w: self.x,
2988 }
2989 }
2990
2991 fn wzyy(self) -> Vec4<T> {
2992 Vec4 {
2993 x: self.w,
2994 y: self.z,
2995 z: self.y,
2996 w: self.y,
2997 }
2998 }
2999
3000 fn wzyz(self) -> Vec4<T> {
3001 Vec4 {
3002 x: self.w,
3003 y: self.z,
3004 z: self.y,
3005 w: self.z,
3006 }
3007 }
3008
3009 fn wzyw(self) -> Vec4<T> {
3010 Vec4 {
3011 x: self.w,
3012 y: self.z,
3013 z: self.y,
3014 w: self.w,
3015 }
3016 }
3017
3018 fn wzzx(self) -> Vec4<T> {
3019 Vec4 {
3020 x: self.w,
3021 y: self.z,
3022 z: self.z,
3023 w: self.x,
3024 }
3025 }
3026
3027 fn wzzy(self) -> Vec4<T> {
3028 Vec4 {
3029 x: self.w,
3030 y: self.z,
3031 z: self.z,
3032 w: self.y,
3033 }
3034 }
3035
3036 fn wzzz(self) -> Vec4<T> {
3037 Vec4 {
3038 x: self.w,
3039 y: self.z,
3040 z: self.z,
3041 w: self.z,
3042 }
3043 }
3044
3045 fn wzzw(self) -> Vec4<T> {
3046 Vec4 {
3047 x: self.w,
3048 y: self.z,
3049 z: self.z,
3050 w: self.w,
3051 }
3052 }
3053
3054 fn wzwx(self) -> Vec4<T> {
3055 Vec4 {
3056 x: self.w,
3057 y: self.z,
3058 z: self.w,
3059 w: self.x,
3060 }
3061 }
3062
3063 fn wzwy(self) -> Vec4<T> {
3064 Vec4 {
3065 x: self.w,
3066 y: self.z,
3067 z: self.w,
3068 w: self.y,
3069 }
3070 }
3071
3072 fn wzwz(self) -> Vec4<T> {
3073 Vec4 {
3074 x: self.w,
3075 y: self.z,
3076 z: self.w,
3077 w: self.z,
3078 }
3079 }
3080
3081 fn wzww(self) -> Vec4<T> {
3082 Vec4 {
3083 x: self.w,
3084 y: self.z,
3085 z: self.w,
3086 w: self.w,
3087 }
3088 }
3089
3090 fn wwxx(self) -> Vec4<T> {
3091 Vec4 {
3092 x: self.w,
3093 y: self.w,
3094 z: self.x,
3095 w: self.x,
3096 }
3097 }
3098
3099 fn wwxy(self) -> Vec4<T> {
3100 Vec4 {
3101 x: self.w,
3102 y: self.w,
3103 z: self.x,
3104 w: self.y,
3105 }
3106 }
3107
3108 fn wwxz(self) -> Vec4<T> {
3109 Vec4 {
3110 x: self.w,
3111 y: self.w,
3112 z: self.x,
3113 w: self.z,
3114 }
3115 }
3116
3117 fn wwxw(self) -> Vec4<T> {
3118 Vec4 {
3119 x: self.w,
3120 y: self.w,
3121 z: self.x,
3122 w: self.w,
3123 }
3124 }
3125
3126 fn wwyx(self) -> Vec4<T> {
3127 Vec4 {
3128 x: self.w,
3129 y: self.w,
3130 z: self.y,
3131 w: self.x,
3132 }
3133 }
3134
3135 fn wwyy(self) -> Vec4<T> {
3136 Vec4 {
3137 x: self.w,
3138 y: self.w,
3139 z: self.y,
3140 w: self.y,
3141 }
3142 }
3143
3144 fn wwyz(self) -> Vec4<T> {
3145 Vec4 {
3146 x: self.w,
3147 y: self.w,
3148 z: self.y,
3149 w: self.z,
3150 }
3151 }
3152
3153 fn wwyw(self) -> Vec4<T> {
3154 Vec4 {
3155 x: self.w,
3156 y: self.w,
3157 z: self.y,
3158 w: self.w,
3159 }
3160 }
3161
3162 fn wwzx(self) -> Vec4<T> {
3163 Vec4 {
3164 x: self.w,
3165 y: self.w,
3166 z: self.z,
3167 w: self.x,
3168 }
3169 }
3170
3171 fn wwzy(self) -> Vec4<T> {
3172 Vec4 {
3173 x: self.w,
3174 y: self.w,
3175 z: self.z,
3176 w: self.y,
3177 }
3178 }
3179
3180 fn wwzz(self) -> Vec4<T> {
3181 Vec4 {
3182 x: self.w,
3183 y: self.w,
3184 z: self.z,
3185 w: self.z,
3186 }
3187 }
3188
3189 fn wwzw(self) -> Vec4<T> {
3190 Vec4 {
3191 x: self.w,
3192 y: self.w,
3193 z: self.z,
3194 w: self.w,
3195 }
3196 }
3197
3198 fn wwwx(self) -> Vec4<T> {
3199 Vec4 {
3200 x: self.w,
3201 y: self.w,
3202 z: self.w,
3203 w: self.x,
3204 }
3205 }
3206
3207 fn wwwy(self) -> Vec4<T> {
3208 Vec4 {
3209 x: self.w,
3210 y: self.w,
3211 z: self.w,
3212 w: self.y,
3213 }
3214 }
3215
3216 fn wwwz(self) -> Vec4<T> {
3217 Vec4 {
3218 x: self.w,
3219 y: self.w,
3220 z: self.w,
3221 w: self.z,
3222 }
3223 }
3224
3225 fn wwww(self) -> Vec4<T> {
3226 Vec4 {
3227 x: self.w,
3228 y: self.w,
3229 z: self.w,
3230 w: self.w,
3231 }
3232 }
3233
3234 fn set_xw(&mut self, other: Vec2<T>) {
3235 self.x = other.x; self.w = other.y;
3236 }
3237
3238 fn set_yw(&mut self, other: Vec2<T>) {
3239 self.y = other.x; self.w = other.y;
3240 }
3241
3242 fn set_zw(&mut self, other: Vec2<T>) {
3243 self.z = other.x; self.w = other.y;
3244 }
3245
3246 fn set_wx(&mut self, other: Vec2<T>) {
3247 self.w = other.x; self.x = other.y;
3248 }
3249
3250 fn set_wy(&mut self, other: Vec2<T>) {
3251 self.w = other.x; self.y = other.y;
3252 }
3253
3254 fn set_wz(&mut self, other: Vec2<T>) {
3255 self.w = other.x; self.z = other.y;
3256 }
3257
3258
3259 fn set_xyw(&mut self, other: Vec3<T>) {
3261 self.x = other.x; self.y = other.y; self.w = other.z;
3262 }
3263
3264 fn set_xzw(&mut self, other: Vec3<T>) {
3265 self.x = other.x; self.z = other.y; self.w = other.z;
3266 }
3267
3268 fn set_xwy(&mut self, other: Vec3<T>) {
3269 self.x = other.x; self.w = other.y; self.y = other.z;
3270 }
3271
3272 fn set_xwz(&mut self, other: Vec3<T>) {
3273 self.x = other.x; self.w = other.y; self.z = other.z;
3274 }
3275
3276 fn set_yxw(&mut self, other: Vec3<T>) {
3277 self.y = other.x; self.x = other.y; self.w = other.z;
3278 }
3279
3280 fn set_yzw(&mut self, other: Vec3<T>) {
3281 self.y = other.x; self.z = other.y; self.w = other.z;
3282 }
3283
3284 fn set_ywx(&mut self, other: Vec3<T>) {
3285 self.y = other.x; self.w = other.y; self.x = other.z;
3286 }
3287
3288 fn set_ywz(&mut self, other: Vec3<T>) {
3289 self.y = other.x; self.w = other.y; self.z = other.z;
3290 }
3291
3292 fn set_zxw(&mut self, other: Vec3<T>) {
3293 self.z = other.x; self.x = other.y; self.w = other.z;
3294 }
3295
3296 fn set_zyw(&mut self, other: Vec3<T>) {
3297 self.z = other.x; self.y = other.y; self.w = other.z;
3298 }
3299
3300 fn set_zwx(&mut self, other: Vec3<T>) {
3301 self.z = other.x; self.w = other.y; self.x = other.z;
3302 }
3303
3304 fn set_zwy(&mut self, other: Vec3<T>) {
3305 self.z = other.x; self.w = other.y; self.y = other.z;
3306 }
3307
3308 fn set_wxy(&mut self, other: Vec3<T>) {
3309 self.w = other.x; self.x = other.y; self.y = other.z;
3310 }
3311
3312 fn set_wxz(&mut self, other: Vec3<T>) {
3313 self.w = other.x; self.x = other.y; self.z = other.z;
3314 }
3315
3316 fn set_wyx(&mut self, other: Vec3<T>) {
3317 self.w = other.x; self.y = other.y; self.x = other.z;
3318 }
3319
3320 fn set_wyz(&mut self, other: Vec3<T>) {
3321 self.w = other.x; self.y = other.y; self.z = other.z;
3322 }
3323
3324 fn set_wzx(&mut self, other: Vec3<T>) {
3325 self.w = other.x; self.z = other.y; self.x = other.z;
3326 }
3327
3328 fn set_wzy(&mut self, other: Vec3<T>) {
3329 self.w = other.x; self.z = other.y; self.y = other.z;
3330 }
3331
3332 fn set_xyzw(&mut self, other: Vec4<T>) {
3333 self.x = other.x;
3334 self.y = other.y;
3335 self.z = other.z;
3336 self.w = other.w;
3337 }
3338
3339 fn set_xywz(&mut self, other: Vec4<T>) {
3340 self.x = other.x;
3341 self.y = other.y;
3342 self.z = other.w;
3343 self.w = other.z;
3344 }
3345
3346 fn set_xzyw(&mut self, other: Vec4<T>) {
3347 self.x = other.x;
3348 self.y = other.z;
3349 self.z = other.y;
3350 self.w = other.w;
3351 }
3352
3353 fn set_xzwy(&mut self, other: Vec4<T>) {
3354 self.x = other.x;
3355 self.y = other.z;
3356 self.z = other.w;
3357 self.w = other.y;
3358 }
3359
3360 fn set_xwyz(&mut self, other: Vec4<T>) {
3361 self.x = other.x;
3362 self.y = other.w;
3363 self.z = other.y;
3364 self.w = other.z;
3365 }
3366
3367 fn set_xwzy(&mut self, other: Vec4<T>) {
3368 self.x = other.x;
3369 self.y = other.w;
3370 self.z = other.z;
3371 self.w = other.y;
3372 }
3373
3374 fn set_yxzw(&mut self, other: Vec4<T>) {
3375 self.x = other.y;
3376 self.y = other.x;
3377 self.z = other.z;
3378 self.w = other.w;
3379 }
3380
3381 fn set_yxwz(&mut self, other: Vec4<T>) {
3382 self.x = other.y;
3383 self.y = other.x;
3384 self.z = other.w;
3385 self.w = other.z;
3386 }
3387
3388 fn set_yzxw(&mut self, other: Vec4<T>) {
3389 self.x = other.y;
3390 self.y = other.z;
3391 self.z = other.x;
3392 self.w = other.w;
3393 }
3394
3395 fn set_yzwx(&mut self, other: Vec4<T>) {
3396 self.x = other.y;
3397 self.y = other.z;
3398 self.z = other.w;
3399 self.w = other.x;
3400 }
3401
3402 fn set_ywxz(&mut self, other: Vec4<T>) {
3403 self.x = other.y;
3404 self.y = other.w;
3405 self.z = other.x;
3406 self.w = other.z;
3407 }
3408
3409 fn set_ywzx(&mut self, other: Vec4<T>) {
3410 self.x = other.y;
3411 self.y = other.w;
3412 self.z = other.z;
3413 self.w = other.x;
3414 }
3415
3416 fn set_zxyw(&mut self, other: Vec4<T>) {
3417 self.x = other.z;
3418 self.y = other.x;
3419 self.z = other.y;
3420 self.w = other.w;
3421 }
3422
3423 fn set_zxwy(&mut self, other: Vec4<T>) {
3424 self.x = other.z;
3425 self.y = other.x;
3426 self.z = other.w;
3427 self.w = other.y;
3428 }
3429
3430 fn set_zyxw(&mut self, other: Vec4<T>) {
3431 self.x = other.z;
3432 self.y = other.y;
3433 self.z = other.x;
3434 self.w = other.w;
3435 }
3436
3437 fn set_zywx(&mut self, other: Vec4<T>) {
3438 self.x = other.z;
3439 self.y = other.y;
3440 self.z = other.w;
3441 self.w = other.x;
3442 }
3443
3444 fn set_zwxy(&mut self, other: Vec4<T>) {
3445 self.x = other.z;
3446 self.y = other.w;
3447 self.z = other.x;
3448 self.w = other.y;
3449 }
3450
3451 fn set_zwyx(&mut self, other: Vec4<T>) {
3452 self.x = other.z;
3453 self.y = other.w;
3454 self.z = other.y;
3455 self.w = other.x;
3456 }
3457
3458 fn set_wxyz(&mut self, other: Vec4<T>) {
3459 self.x = other.w;
3460 self.y = other.x;
3461 self.z = other.y;
3462 self.w = other.z;
3463 }
3464
3465 fn set_wxzy(&mut self, other: Vec4<T>) {
3466 self.x = other.w;
3467 self.y = other.x;
3468 self.z = other.z;
3469 self.w = other.y;
3470 }
3471
3472 fn set_wyxz(&mut self, other: Vec4<T>) {
3473 self.x = other.w;
3474 self.y = other.y;
3475 self.z = other.x;
3476 self.w = other.z;
3477 }
3478
3479 fn set_wyzx(&mut self, other: Vec4<T>) {
3480 self.x = other.w;
3481 self.y = other.y;
3482 self.z = other.z;
3483 self.w = other.x;
3484 }
3485
3486 fn set_wzxy(&mut self, other: Vec4<T>) {
3487 self.x = other.w;
3488 self.y = other.z;
3489 self.z = other.x;
3490 self.w = other.y;
3491 }
3492
3493 fn set_wzyx(&mut self, other: Vec4<T>) {
3494 self.x = other.w;
3495 self.y = other.z;
3496 self.z = other.y;
3497 self.w = other.x;
3498 }
3499 }
3500 }
3501}
3502
3503v2_swizzle_impl!(Vec2);
3504v2_swizzle_impl!(Vec3);
3505v2_swizzle_impl!(Vec4);
3506v3_swizzle_impl!(Vec3);
3507v3_swizzle_impl!(Vec4);
3508v4_swizzle_impl!(Vec4);