basic_types/
basic_types.rs1use nson::{Array, Map, Value, m};
6
7fn main() {
8 println!("=== NSON 基本类型示例 ===\n");
9
10 let numbers = m! {
12 "i8": -128i8, "u8": 255u8, "i16": -32768i16, "u16": 65535u16, "i32": -2147483648i32, "u32": 4294967295u32, "i64": -9223372036854775808i64, "u64": 18446744073709551615u64, "f32": 3.14159f32, "f64": 2.718281828459045f64, };
23
24 println!("数字类型 Map:");
25 println!("{}\n", numbers);
26
27 let bytes = numbers.to_bytes().unwrap();
29 println!("编码后大小: {} 字节", bytes.len());
30
31 let decoded = Map::from_bytes(&bytes).unwrap();
32 println!("解码成功: {:?}\n", decoded == numbers);
33
34 println!("访问各种类型:");
36 println!(" i8 value: {:?}", decoded.get_i8("i8"));
37 println!(" u8 value: {:?}", decoded.get_u8("u8"));
38 println!(" i16 value: {:?}", decoded.get_i16("i16"));
39 println!(" u16 value: {:?}", decoded.get_u16("u16"));
40 println!(" i32 value: {:?}", decoded.get_i32("i32"));
41 println!(" u32 value: {:?}", decoded.get_u32("u32"));
42 println!(" i64 value: {:?}", decoded.get_i64("i64"));
43 println!(" u64 value: {:?}", decoded.get_u64("u64"));
44 println!(" f32 value: {:?}", decoded.get_f32("f32"));
45 println!(" f64 value: {:?}", decoded.get_f64("f64"));
46
47 println!("\n=== 数组中的类型 ===\n");
48
49 let mixed_array = Array::from_vec(vec![
51 Value::I8(-10),
52 Value::U8(200),
53 Value::I16(-1000),
54 Value::U16(50000),
55 Value::F32(1.5),
56 Value::from("text"),
57 ]);
58
59 println!("混合类型数组: {:?}", mixed_array);
60
61 let array_bytes = mixed_array.to_bytes().unwrap();
62 let decoded_array = Array::from_bytes(&array_bytes).unwrap();
63 println!("数组解码成功: {:?}\n", decoded_array == mixed_array);
64
65 println!("=== 类型存储大小 ===");
67 let size_demo = m! {
68 "i8": -1i8,
69 "i16": -1i16,
70 "i32": -1i32,
71 "i64": -1i64,
72 };
73
74 for (key, value) in size_demo.iter() {
75 println!("{}: {} 字节 + 1字节类型标记", key, value.bytes_size());
76 }
77}