example_vector_quantity_restriction/
example_vector_quantity_restriction.rs1use zmatrix::physics::basic::{Distance, Velocity, Force, Vector3};
2
3fn main() {
4 println!("=== Vector3 类型约束验证示例 ===\n");
5
6 println!("1. 支持向量的物理量可以用于 Vector3:");
8
9 let distance_vector = Vector3::new(
10 Distance::from_m(1.0),
11 Distance::from_m(2.0),
12 Distance::from_m(3.0)
13 );
14 println!(" ✓ Distance Vector: ({}, {}, {}) m",
15 distance_vector.x.as_m(),
16 distance_vector.y.as_m(),
17 distance_vector.z.as_m());
18
19 let velocity_vector = Vector3::new(
20 Velocity::from_m_per_sec(4.0),
21 Velocity::from_m_per_sec(5.0),
22 Velocity::from_m_per_sec(6.0)
23 );
24 println!(" ✓ Velocity Vector: ({}, {}, {}) m/s",
25 velocity_vector.x.as_m_per_sec(),
26 velocity_vector.y.as_m_per_sec(),
27 velocity_vector.z.as_m_per_sec());
28
29 let force_vector = Vector3::new(
30 Force::from_newton(10.0),
31 Force::from_newton(20.0),
32 Force::from_newton(30.0)
33 );
34 println!(" ✓ Force Vector: ({}, {}, {}) N",
35 force_vector.x.as_newton(),
36 force_vector.y.as_newton(),
37 force_vector.z.as_newton());
38
39 println!("\n2. 不支持向量的物理量无法用于 Vector3:");
41 println!(" ✓ 以下代码会在编译时被拒绝:");
42 println!(" let mass_vector = Vector3::new(");
43 println!(" Mass::from_kg(1.0),");
44 println!(" Mass::from_kg(2.0),");
45 println!(" Mass::from_kg(3.0)");
46 println!(" );");
47 println!("\n ✓ 以下代码会在编译时被拒绝:");
48 println!(" let energy_vector = Vector3::new(");
49 println!(" Energy::from_joule(1.0),");
50 println!(" Energy::from_joule(2.0),");
51 println!(" Energy::from_joule(3.0)");
52 println!(" );");
53
54 println!("\n3. 支持向量的物理量列表:");
56 println!(" ✓ Distance (距离/位移)");
57 println!(" ✓ Velocity (速度)");
58 println!(" ✓ Acceleration (加速度)");
59 println!(" ✓ Angular (角度)");
60 println!(" ✓ AngularVelocity (角速度)");
61 println!(" ✓ AngularAcceleration (角加速度)");
62 println!(" ✓ Coef (系数)");
63 println!(" ✓ AngularMomentum (角动量)");
64 println!(" ✓ Momentum (动量)");
65 println!(" ✓ MagneticInduction (磁感应强度)");
66 println!(" ✓ MagneticMoment (磁矩)");
67 println!(" ✓ Torque (力矩)");
68 println!(" ✓ Force (力)");
69 println!(" ✓ MagneticAngularVelocity (磁角速度)");
70
71 println!("\n4. 不支持向量的物理量列表:");
73 println!(" ✗ Mass (质量)");
74 println!(" ✗ Energy (能量)");
75 println!(" ✗ Power (功率)");
76 println!(" ✗ Volume (体积)");
77 println!(" ✗ Area (面积)");
78 println!(" ✗ Time (时间)");
79
80 println!("\n=== 验证完成 ===");
81 println!("Vector3 现在只能用于支持向量的物理量,这确保了类型安全!");
82}