yozuk_core_skillset/
lib.rs1#![forbid(unsafe_code)]
2#![deny(clippy::all)]
3
4use yozuk_sdk::prelude::*;
5
6const MODEL_ROOT_ID: &[u8] = b"2isUeklnTTne~VajLCPO6";
7
8#[macro_export]
9macro_rules! skills {
10 ( $([ $x:ident, $y:literal ],)* ) => {
11 $(
12 #[cfg(feature = $y)]
13 mod $x;
14 )*
15
16 pub const SKILLS: &[NamedSkillEntry] = &[
17 $(
18 #[cfg(feature = $y)]
19 NamedSkillEntry {
20 key: $y,
21 entry: $x::ENTRY
22 },
23 )*
24 ];
25
26 pub const fn skills_digest() -> [u8; 20] {
27 use const_sha1::ConstBuffer;
28 let sha_sum = ConstBuffer::from_slice(MODEL_ROOT_ID);
29 $(
30 let sha = ConstBuffer::new();
31 #[cfg(feature = $y)]
32 let sha = sha.push_slice($x::ENTRY.model_id);
33 let sha = sha.push_slice(&const_sha1::sha1(&sha_sum).bytes());
34 let sha_sum = ConstBuffer::from_slice(&const_sha1::sha1(&sha).bytes());
35 )*
36 const_sha1::sha1(&sha_sum).bytes()
37 }
38 };
39}
40
41skills!(
42 [base64, "yozuk-skill-base64"],
43 [calc, "yozuk-skill-calc"],
44 [dice, "yozuk-skill-dice"],
45 [digest, "yozuk-skill-digest"],
46 [lipsum, "yozuk-skill-lipsum"],
47 [nanoid, "yozuk-skill-nanoid"],
48 [numeric, "yozuk-skill-numeric"],
49 [chitchat, "yozuk-skill-chitchat"],
50 [punycode, "yozuk-skill-punycode"],
51 [uuid, "yozuk-skill-uuid"],
52 [version, "yozuk-skill-version"],
53 [color, "yozuk-skill-color"],
54 [unit, "yozuk-skill-unit"],
55 [geo, "yozuk-skill-geo"],
56 [password, "yozuk-skill-password"],
57 [urlencode, "yozuk-skill-urlencode"],
58 [bech32, "yozuk-skill-bech32"],
59 [prime, "yozuk-skill-prime"],
60 [jwt, "yozuk-skill-jwt"],
61 [blurhash, "yozuk-skill-blurhash"],
62 [qrcode, "yozuk-skill-qrcode"],
63 [consts, "yozuk-skill-consts"],
64 [time, "yozuk-skill-time"],
65 [ip, "yozuk-skill-ip"],
66 [msgpack, "yozuk-skill-msgpack"],
67 [unicode, "yozuk-skill-unicode"],
68 [hex, "yozuk-skill-hex"],
69 [kdf, "yozuk-skill-kdf"],
70 [compression, "yozuk-skill-compression"],
71 [username, "yozuk-skill-username"],
72);