1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/// Sanskrit vocabulary layer.
///
/// Classical Sanskrit terms for types, numbers, and language constructs.
/// Words are drawn from Paninian grammar, Vedic tradition, and classical usage.
/// All are valid Rust identifiers — Devanagari Unicode is fully supported.
// ── Sanskrit type aliases ─────────────────────────────────────────────────────
/// `i32` — अङ्क = digit / number (Paninian grammar term for numeral)
pub type अङ्क = i32;
/// `i64` — महाङ्क = great number
pub type महाङ्क = i64;
/// `f64` — राशि = quantity / mathematical term
pub type राशि = f64;
/// `f32` — लघुराशि = small quantity
pub type लघुराशि = f32;
/// `char` — वर्ण = letter / phoneme (core Paninian grammar concept)
pub type वर्ण = char;
/// `String` — सूत्र = thread / formula / aphorism
pub type सूत्र = String;
/// `bool` — सत्यासत्य = true-or-false (Sanskrit dvandva compound)
pub type सत्यासत्य = bool;
/// `Vec<T>` — श्रेणी = series / row / sequence
pub type श्रेणी<T> = ;
/// `Option<T>` — सम्भव = possible / potential
pub type सम् = ;
/// `Result<T, E>` — परिणाम = outcome / result
pub type परिणा = ;
/// `HashMap<K, V>` — निघण्टु = glossary / lexicon (Vedic term for vocabulary list)
pub type निघण्टु<K, V> = HashMap;
/// `BTreeMap<K, V>` — अनुक्रम = ordered sequence
pub type अनुक् = BTreeMap;
/// `HashSet<T>` — वर्गः = class / group / set
pub type वर्गः<T> = HashSet;
/// `Box<T>` — पिटक = basket / container (Pali/Sanskrit term, also Tipitaka)
pub type पि = ;
/// `Arc<T>` — संयोग = union / conjunction
pub type संयो = Arc;
/// `usize` — परिमाण = measure / quantity (Sanskrit; avoids conflict with `let` keyword alias)
pub type परिमाण = usize;
// ── Sanskrit number constants (i32) ──────────────────────────────────────────
// Sanskrit cardinal numbers 0–19, then round numbers.
// Type is i32 (पूर्णांक). Cast with `as` for other types.
/// 0 — नल (null / zero; Sanskrit mathematical term)
pub const नल: i32 = 0;
/// 1 — एक
pub const एक: i32 = 1;
/// 2 — द्वि
pub const द्वि: i32 = 2;
/// 3 — त्रि
pub const त्रि: i32 = 3;
/// 4 — चतुर
pub const चतुर: i32 = 4;
/// 5 — पञ्च
pub const पञ्च: i32 = 5;
/// 6 — षट
pub const षट: i32 = 6;
/// 7 — सप्त
pub const सप्त: i32 = 7;
/// 8 — अष्ट
pub const अष्ट: i32 = 8;
/// 9 — नव
pub const नव: i32 = 9;
/// 10 — दश
pub const दश: i32 = 10;
/// 11 — एकादश
pub const एकादश: i32 = 11;
/// 12 — द्वादश
pub const द्वादश: i32 = 12;
/// 15 — पञ्चदश
pub const पञ्चदश: i32 = 15;
/// 20 — विंशति
pub const विंशति: i32 = 20;
/// 25 — पञ्चविंशति
pub const पञ्चविंशति: i32 = 25;
/// 50 — पञ्चाशत्
pub const पञ्चाशत्: i32 = 50;
/// 100 — शत
pub const शत: i32 = 100;
/// 1000 — सहस्र
pub const सहस्र: i32 = 1_000;
/// 100,000 — लक्ष (lakh)
pub const लक्ष: i32 = 100_000;
/// 10,000,000 — कोटि (crore)
pub const कोटि: i32 = 10_000_000;
// ── Sanskrit number constants (usize) ────────────────────────────────────────
// Suffixed with _आ for usize variants (common in indexing / sizes)
/// 0usize
pub const नल_आ: usize = 0;
/// 1usize
pub const एक_आ: usize = 1;
/// 2usize
pub const द्वि_आ: usize = 2;
/// 3usize
pub const त्रि_आ: usize = 3;
/// 10usize
pub const दश_आ: usize = 10;
/// 100usize
pub const शत_आ: usize = 100;
/// 1000usize
pub const सहस्र_आ: usize = 1_000;
// ── Sanskrit Option / Result variants ────────────────────────────────────────
/// `Option::Some` — विद्यमान = existing / present
pub use OptionSome as विद्यमान;
/// `Option::None` — अविद्यमान = non-existing / absent
pub use OptionNone as अविद्यमान;
/// `Result::Ok` — सिद्ध = accomplished / proven
pub use ResultOk as सिद्ध;
/// `Result::Err` — दोष = fault / defect
pub use ResultErr as दोष;