tuple_conversion/
tuple_conversion.rs1use links_notation::{format_links, LiNo};
2
3fn main() {
4 println!("=== Rust Tuple Conversion Examples ===\n");
5
6 println!("1. Basic 2-tuple conversion:");
8 let link: LiNo<String> = ("papa", "mama").into();
9 println!(" Input: (\"papa\", \"mama\")");
10 println!(" Output: {}\n", link);
11
12 println!("2. 3-tuple conversion:");
14 let link: LiNo<String> = ("papa", "loves", "mama").into();
15 println!(" Input: (\"papa\", \"loves\", \"mama\")");
16 println!(" Output: {}\n", link);
17
18 println!("3. 4-tuple conversion:");
20 let link: LiNo<String> = ("parent", "child1", "child2", "child3").into();
21 println!(" Input: (\"parent\", \"child1\", \"child2\", \"child3\")");
22 println!(" Output: {}\n", link);
23
24 println!("4. Mixed tuple with LiNo:");
26 let child = LiNo::Ref("child".to_string());
27 let link: LiNo<String> = ("parent", child).into();
28 println!(" Input: (\"parent\", LiNo::Ref(\"child\"))");
29 println!(" Output: {}\n", link);
30
31 println!("5. Anonymous link from LiNo tuples:");
33 let a = LiNo::Ref("a".to_string());
34 let b = LiNo::Ref("b".to_string());
35 let link: LiNo<String> = (a, b).into();
36 println!(" Input: (LiNo::Ref(\"a\"), LiNo::Ref(\"b\"))");
37 println!(" Output: {}\n", link);
38
39 println!("6. Complex nested structure:");
41 let loves_mama: LiNo<String> = ("lovesMama", "loves", "mama").into();
42 let papa: LiNo<String> = ("papa", loves_mama).into();
43 let son: LiNo<String> = ("son", "lovesMama").into();
44 let daughter: LiNo<String> = ("daughter", "lovesMama").into();
45
46 let love_ref = LiNo::Ref("love".to_string());
47 let mama_ref = LiNo::Ref("mama".to_string());
48 let love_mama: LiNo<String> = (love_ref, mama_ref).into();
49 let all: LiNo<String> = ("all", love_mama).into();
50
51 let links = vec![papa, son, daughter, all];
52 let result = format_links(&links);
53 println!(" Output:");
54 for line in result.lines() {
55 println!(" {}", line);
56 }
57 println!();
58
59 println!("7. Creating links collection ergonomically:");
61 let links: Vec<LiNo<String>> = vec![
62 ("papa", "mama").into(),
63 ("son", "daughter").into(),
64 ("loves", "family").into(),
65 ];
66 println!(" Vec of tuples converted to links:");
67 for link in &links {
68 println!(" {}", link);
69 }
70 println!();
71
72 println!("8. Owned String tuples:");
74 let id = "parent".to_string();
75 let val = "child".to_string();
76 let link: LiNo<String> = (id, val).into();
77 println!(" Input: (String::from(\"parent\"), String::from(\"child\"))");
78 println!(" Output: {}\n", link);
79
80 println!("=== All examples completed successfully! ===");
81}