rstsr_core/storage/
combined_trait.rs1use crate::prelude_dev::*;
2use num::{complex::ComplexFloat, Num};
3
4pub trait DeviceComplexFloatAPI<T, D = IxD>:
7 DeviceAPI<T>
8 + DeviceAPI<T::Real>
10 + DeviceCreationNumAPI<T>
11 + DeviceCreationAnyAPI<T>
12 + DeviceCreationComplexFloatAPI<T>
13 + OpAssignArbitaryAPI<T, D, D>
14 + OpAssignArbitaryAPI<T, D, IxD>
15 + OpAssignArbitaryAPI<T, IxD, D>
16 + OpAssignArbitaryAPI<T, IxD, IxD>
17 + OpAssignAPI<T, D>
18 + OpAssignAPI<T, IxD>
19 + DeviceConjAPI<T, D, TOut = T>
20 + DeviceConjAPI<T, IxD, TOut = T>
21 + DeviceCreationTriAPI<T>
22 + DeviceCreationNumAPI<T::Real>
24 + DeviceCreationAnyAPI<T::Real>
25 + DeviceCreationComplexFloatAPI<T::Real>
26 + OpAssignArbitaryAPI<T::Real, D, D>
27 + OpAssignArbitaryAPI<T::Real, D, IxD>
28 + OpAssignArbitaryAPI<T::Real, IxD, D>
29 + OpAssignArbitaryAPI<T::Real, IxD, IxD>
30 + OpAssignAPI<T::Real, D>
31 + OpAssignAPI<T::Real, IxD>
32 + DeviceConjAPI<T::Real, D, TOut = T::Real>
33 + DeviceConjAPI<T::Real, IxD, TOut = T::Real>
34 + DeviceCreationTriAPI<T::Real>
35where
36 T: ComplexFloat,
37 D: DimAPI,
38{
39}
40
41pub trait DeviceNumAPI<T, D = IxD>:
42 DeviceAPI<T>
43 + DeviceCreationNumAPI<T>
44 + DeviceCreationAnyAPI<T>
45 + OpAssignArbitaryAPI<T, D, D>
46 + OpAssignArbitaryAPI<T, D, IxD>
47 + OpAssignArbitaryAPI<T, IxD, D>
48 + OpAssignArbitaryAPI<T, IxD, IxD>
49 + OpAssignAPI<T, D>
50 + OpAssignAPI<T, IxD>
51where
52 T: Num,
53 D: DimAPI,
54{
55}