|
1 | 1 | use crate::simd::SimdElement; |
2 | 2 |
|
3 | | -mod sealed { |
4 | | - /// Cast vector elements to other types. |
5 | | - /// |
6 | | - /// # Safety |
7 | | - /// Implementing this trait asserts that the type is a valid vector element for the `simd_cast` |
8 | | - /// or `simd_as` intrinsics. |
9 | | - pub unsafe trait Sealed {} |
10 | | -} |
11 | | -use sealed::Sealed; |
12 | | - |
13 | 3 | /// Supporting trait for `Simd::cast`. Typically doesn't need to be used directly. |
14 | | -pub trait SimdCast: Sealed + SimdElement {} |
| 4 | +/// |
| 5 | +/// # Safety |
| 6 | +/// Implementing this trait asserts that the type is a valid vector element for the `simd_cast` or |
| 7 | +/// `simd_as` intrinsics. |
| 8 | +pub impl(self) unsafe trait SimdCast: SimdElement {} |
15 | 9 |
|
16 | 10 | // Safety: primitive number types can be cast to other primitive number types |
17 | | -unsafe impl Sealed for i8 {} |
18 | | -impl SimdCast for i8 {} |
| 11 | +unsafe impl SimdCast for i8 {} |
19 | 12 | // Safety: primitive number types can be cast to other primitive number types |
20 | | -unsafe impl Sealed for i16 {} |
21 | | -impl SimdCast for i16 {} |
| 13 | +unsafe impl SimdCast for i16 {} |
22 | 14 | // Safety: primitive number types can be cast to other primitive number types |
23 | | -unsafe impl Sealed for i32 {} |
24 | | -impl SimdCast for i32 {} |
| 15 | +unsafe impl SimdCast for i32 {} |
25 | 16 | // Safety: primitive number types can be cast to other primitive number types |
26 | | -unsafe impl Sealed for i64 {} |
27 | | -impl SimdCast for i64 {} |
| 17 | +unsafe impl SimdCast for i64 {} |
28 | 18 | // Safety: primitive number types can be cast to other primitive number types |
29 | | -unsafe impl Sealed for isize {} |
30 | | -impl SimdCast for isize {} |
| 19 | +unsafe impl SimdCast for isize {} |
31 | 20 | // Safety: primitive number types can be cast to other primitive number types |
32 | | -unsafe impl Sealed for u8 {} |
33 | | -impl SimdCast for u8 {} |
| 21 | +unsafe impl SimdCast for u8 {} |
34 | 22 | // Safety: primitive number types can be cast to other primitive number types |
35 | | -unsafe impl Sealed for u16 {} |
36 | | -impl SimdCast for u16 {} |
| 23 | +unsafe impl SimdCast for u16 {} |
37 | 24 | // Safety: primitive number types can be cast to other primitive number types |
38 | | -unsafe impl Sealed for u32 {} |
39 | | -impl SimdCast for u32 {} |
| 25 | +unsafe impl SimdCast for u32 {} |
40 | 26 | // Safety: primitive number types can be cast to other primitive number types |
41 | | -unsafe impl Sealed for u64 {} |
42 | | -impl SimdCast for u64 {} |
| 27 | +unsafe impl SimdCast for u64 {} |
43 | 28 | // Safety: primitive number types can be cast to other primitive number types |
44 | | -unsafe impl Sealed for usize {} |
45 | | -impl SimdCast for usize {} |
| 29 | +unsafe impl SimdCast for usize {} |
46 | 30 | // Safety: primitive number types can be cast to other primitive number types |
47 | | -unsafe impl Sealed for f16 {} |
48 | | -impl SimdCast for f16 {} |
| 31 | +unsafe impl SimdCast for f16 {} |
49 | 32 | // Safety: primitive number types can be cast to other primitive number types |
50 | | -unsafe impl Sealed for f32 {} |
51 | | -impl SimdCast for f32 {} |
| 33 | +unsafe impl SimdCast for f32 {} |
52 | 34 | // Safety: primitive number types can be cast to other primitive number types |
53 | | -unsafe impl Sealed for f64 {} |
54 | | -impl SimdCast for f64 {} |
| 35 | +unsafe impl SimdCast for f64 {} |
0 commit comments