basic_usage/
basic_usage.rs1use zigzag_rs::ZigZag;
2
3fn main() {
4 println!("ZigZag Encoding Examples:");
5
6 println!("Single Value Encoding:");
8 println!("i8: -1 encoded as: {} (u8)", i8::zigzag_encode(-1));
9 println!("i16: 10 encoded as: {} (u16)", i16::zigzag_encode(10));
10 println!("i32: -100 encoded as: {} (u32)", i32::zigzag_encode(-100));
11 println!("i64: 1000 encoded as: {} (u64)", i64::zigzag_encode(1000));
12
13 println!("\nZigZag Decoding Examples:");
14
15 println!("Single Value Decoding:");
17 println!("u8: 1 decoded as: {} (i8)", i8::zigzag_decode(1u8));
18 println!("u16: 20 decoded as: {} (i16)", i16::zigzag_decode(20u16));
19 println!("u32: 200 decoded as: {} (i32)", i32::zigzag_decode(200u32));
20 println!("u64: 2000 decoded as: {} (i64)", i64::zigzag_decode(2000u64));
21
22 let original = -42i32;
24 let encoded = i32::zigzag_encode(original);
25 let decoded = i32::zigzag_decode(encoded);
26
27 println!("\nRound-trip Conversion Example (Single Value):");
28 println!("Original value: {}", original);
29 println!("Encoded as: {}", encoded);
30 println!("Decoded back: {}", decoded);
31 println!("Conversion successful: {}", original == decoded);
32
33 println!("\nBatch Processing Example:");
35 let values = [-100i32, -10, -1, 0, 1, 10, 100];
36 let mut encoded = [0u32; 7];
37 let mut decoded = [0i32; 7];
38
39 i32::zigzag_encode_slice(&values, &mut encoded);
41
42 println!("Original values: {:?}", values);
43 println!("Encoded values: {:?}", encoded);
44
45 i32::zigzag_decode_slice(&encoded, &mut decoded);
47 println!("Decoded values: {:?}", decoded);
48 println!("Batch round-trip successful: {}", values == decoded);
49}