jag

typing_rust

public

A small typing test program in Rust

Star0
Watch0

Commit 12f039d6d5c5

tarball

Jaglekon <jaglekon@jaglekon.de>2026-09-23 16:21 UTC

7 files changed+1900-0
init
Added file: .envrc+2 additions
@@ -0,0 +1,2 @@
1+use flake
2+
Added file: .gitignore+2 additions
@@ -0,0 +1,2 @@
1+/target
2+.direnv
Added file: Cargo.lock+1672 additions
@@ -0,0 +1,1672 @@
1+# This file is automatically @generated by Cargo.
2+# It is not intended for manual editing.
3+version = 4
4+
5+[[package]]
6+name = "aho-corasick"
7+version = "1.1.5"
8+source = "registry+https://github.com/rust-lang/crates.io-index"
9+checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba"
10+dependencies = [
11+ "memchr",
12+]
13+
14+[[package]]
15+name = "allocator-api2"
16+version = "0.2.21"
17+source = "registry+https://github.com/rust-lang/crates.io-index"
18+checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
19+
20+[[package]]
21+name = "anyhow"
22+version = "1.0.104"
23+source = "registry+https://github.com/rust-lang/crates.io-index"
24+checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470"
25+
26+[[package]]
27+name = "approx"
28+version = "0.5.1"
29+source = "registry+https://github.com/rust-lang/crates.io-index"
30+checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6"
31+dependencies = [
32+ "num-traits",
33+]
34+
35+[[package]]
36+name = "atomic"
37+version = "0.6.1"
38+source = "registry+https://github.com/rust-lang/crates.io-index"
39+checksum = "a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340"
40+dependencies = [
41+ "bytemuck",
42+]
43+
44+[[package]]
45+name = "autocfg"
46+version = "1.5.1"
47+source = "registry+https://github.com/rust-lang/crates.io-index"
48+checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
49+
50+[[package]]
51+name = "base64"
52+version = "0.22.1"
53+source = "registry+https://github.com/rust-lang/crates.io-index"
54+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
55+
56+[[package]]
57+name = "bit-set"
58+version = "0.5.3"
59+source = "registry+https://github.com/rust-lang/crates.io-index"
60+checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1"
61+dependencies = [
62+ "bit-vec",
63+]
64+
65+[[package]]
66+name = "bit-vec"
67+version = "0.6.3"
68+source = "registry+https://github.com/rust-lang/crates.io-index"
69+checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
70+
71+[[package]]
72+name = "bitflags"
73+version = "1.3.2"
74+source = "registry+https://github.com/rust-lang/crates.io-index"
75+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
76+
77+[[package]]
78+name = "bitflags"
79+version = "2.13.2"
80+source = "registry+https://github.com/rust-lang/crates.io-index"
81+checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06"
82+
83+[[package]]
84+name = "block-buffer"
85+version = "0.10.4"
86+source = "registry+https://github.com/rust-lang/crates.io-index"
87+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
88+dependencies = [
89+ "generic-array",
90+]
91+
92+[[package]]
93+name = "bumpalo"
94+version = "3.20.3"
95+source = "registry+https://github.com/rust-lang/crates.io-index"
96+checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
97+
98+[[package]]
99+name = "by_address"
100+version = "1.2.1"
101+source = "registry+https://github.com/rust-lang/crates.io-index"
102+checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06"
103+
104+[[package]]
105+name = "bytemuck"
106+version = "1.25.2"
107+source = "registry+https://github.com/rust-lang/crates.io-index"
108+checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797"
109+
110+[[package]]
111+name = "castaway"
112+version = "0.2.4"
113+source = "registry+https://github.com/rust-lang/crates.io-index"
114+checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a"
115+dependencies = [
116+ "rustversion",
117+]
118+
119+[[package]]
120+name = "cfg-if"
121+version = "1.0.5"
122+source = "registry+https://github.com/rust-lang/crates.io-index"
123+checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600"
124+
125+[[package]]
126+name = "cfg_aliases"
127+version = "0.2.2"
128+source = "registry+https://github.com/rust-lang/crates.io-index"
129+checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527"
130+
131+[[package]]
132+name = "compact_str"
133+version = "0.9.1"
134+source = "registry+https://github.com/rust-lang/crates.io-index"
135+checksum = "9dfdd1c2274d9aa354115b09dc9a901d6c5576818cdf70d14cae2bdb47df00ab"
136+dependencies = [
137+ "castaway",
138+ "cfg-if",
139+ "itoa",
140+ "rustversion",
141+ "ryu",
142+ "static_assertions",
143+]
144+
145+[[package]]
146+name = "convert_case"
147+version = "0.10.0"
148+source = "registry+https://github.com/rust-lang/crates.io-index"
149+checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9"
150+dependencies = [
151+ "unicode-segmentation",
152+]
153+
154+[[package]]
155+name = "cpufeatures"
156+version = "0.2.17"
157+source = "registry+https://github.com/rust-lang/crates.io-index"
158+checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
159+dependencies = [
160+ "libc",
161+]
162+
163+[[package]]
164+name = "critical-section"
165+version = "1.2.0"
166+source = "registry+https://github.com/rust-lang/crates.io-index"
167+checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b"
168+
169+[[package]]
170+name = "crossterm"
171+version = "0.29.0"
172+source = "registry+https://github.com/rust-lang/crates.io-index"
173+checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b"
174+dependencies = [
175+ "bitflags 2.13.2",
176+ "crossterm_winapi",
177+ "derive_more",
178+ "document-features",
179+ "mio",
180+ "parking_lot",
181+ "rustix",
182+ "signal-hook",
183+ "signal-hook-mio",
184+ "winapi",
185+]
186+
187+[[package]]
188+name = "crossterm_winapi"
189+version = "0.9.1"
190+source = "registry+https://github.com/rust-lang/crates.io-index"
191+checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
192+dependencies = [
193+ "winapi",
194+]
195+
196+[[package]]
197+name = "crypto-common"
198+version = "0.1.7"
199+source = "registry+https://github.com/rust-lang/crates.io-index"
200+checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
201+dependencies = [
202+ "generic-array",
203+ "typenum",
204+]
205+
206+[[package]]
207+name = "csscolorparser"
208+version = "0.6.2"
209+source = "registry+https://github.com/rust-lang/crates.io-index"
210+checksum = "eb2a7d3066da2de787b7f032c736763eb7ae5d355f81a68bab2675a96008b0bf"
211+dependencies = [
212+ "lab",
213+ "phf",
214+]
215+
216+[[package]]
217+name = "darling"
218+version = "0.24.1"
219+source = "registry+https://github.com/rust-lang/crates.io-index"
220+checksum = "ed17f5901b6630b993ca003def43f2f8ef4014fc13b047b57aad617ff32bc2ec"
221+dependencies = [
222+ "darling_core",
223+ "darling_macro",
224+]
225+
226+[[package]]
227+name = "darling_core"
228+version = "0.24.1"
229+source = "registry+https://github.com/rust-lang/crates.io-index"
230+checksum = "6837e2cf7485aaae18f86181d2f0e9a7ed297a025e220aeabf63fdebd3a2ddff"
231+dependencies = [
232+ "ident_case",
233+ "proc-macro2",
234+ "quote",
235+ "strsim",
236+ "syn 3.0.6",
237+]
238+
239+[[package]]
240+name = "darling_macro"
241+version = "0.24.1"
242+source = "registry+https://github.com/rust-lang/crates.io-index"
243+checksum = "2ac7135c3ef02b2f7833bbeb1be5ba7f966dcde8a87c6b87f65a778d71a02785"
244+dependencies = [
245+ "darling_core",
246+ "quote",
247+ "syn 3.0.6",
248+]
249+
250+[[package]]
251+name = "deltae"
252+version = "0.3.2"
253+source = "registry+https://github.com/rust-lang/crates.io-index"
254+checksum = "5729f5117e208430e437df2f4843f5e5952997175992d1414f94c57d61e270b4"
255+
256+[[package]]
257+name = "deranged"
258+version = "0.5.8"
259+source = "registry+https://github.com/rust-lang/crates.io-index"
260+checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
261+
262+[[package]]
263+name = "derive_more"
264+version = "2.1.1"
265+source = "registry+https://github.com/rust-lang/crates.io-index"
266+checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134"
267+dependencies = [
268+ "derive_more-impl",
269+]
270+
271+[[package]]
272+name = "derive_more-impl"
273+version = "2.1.1"
274+source = "registry+https://github.com/rust-lang/crates.io-index"
275+checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb"
276+dependencies = [
277+ "convert_case",
278+ "proc-macro2",
279+ "quote",
280+ "rustc_version",
281+ "syn 2.0.119",
282+]
283+
284+[[package]]
285+name = "digest"
286+version = "0.10.7"
287+source = "registry+https://github.com/rust-lang/crates.io-index"
288+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
289+dependencies = [
290+ "block-buffer",
291+ "crypto-common",
292+]
293+
294+[[package]]
295+name = "document-features"
296+version = "0.2.12"
297+source = "registry+https://github.com/rust-lang/crates.io-index"
298+checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"
299+dependencies = [
300+ "litrs",
301+]
302+
303+[[package]]
304+name = "either"
305+version = "1.18.0"
306+source = "registry+https://github.com/rust-lang/crates.io-index"
307+checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34"
308+
309+[[package]]
310+name = "equivalent"
311+version = "1.0.2"
312+source = "registry+https://github.com/rust-lang/crates.io-index"
313+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
314+
315+[[package]]
316+name = "errno"
317+version = "0.3.14"
318+source = "registry+https://github.com/rust-lang/crates.io-index"
319+checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
320+dependencies = [
321+ "libc",
322+ "windows-sys",
323+]
324+
325+[[package]]
326+name = "euclid"
327+version = "0.22.14"
328+source = "registry+https://github.com/rust-lang/crates.io-index"
329+checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06"
330+dependencies = [
331+ "num-traits",
332+]
333+
334+[[package]]
335+name = "fancy-regex"
336+version = "0.11.0"
337+source = "registry+https://github.com/rust-lang/crates.io-index"
338+checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2"
339+dependencies = [
340+ "bit-set",
341+ "regex",
342+]
343+
344+[[package]]
345+name = "filedescriptor"
346+version = "0.8.3"
347+source = "registry+https://github.com/rust-lang/crates.io-index"
348+checksum = "e40758ed24c9b2eeb76c35fb0aebc66c626084edd827e07e1552279814c6682d"
349+dependencies = [
350+ "libc",
351+ "thiserror 1.0.69",
352+ "winapi",
353+]
354+
355+[[package]]
356+name = "finl_unicode"
357+version = "1.5.0"
358+source = "registry+https://github.com/rust-lang/crates.io-index"
359+checksum = "80bb028c8b4148c9ee0cca68fcd9add6044e81d3619f48577ddf13a263d047a2"
360+
361+[[package]]
362+name = "fixedbitset"
363+version = "0.4.2"
364+source = "registry+https://github.com/rust-lang/crates.io-index"
365+checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
366+
367+[[package]]
368+name = "fnv"
369+version = "1.0.7"
370+source = "registry+https://github.com/rust-lang/crates.io-index"
371+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
372+
373+[[package]]
374+name = "foldhash"
375+version = "0.2.0"
376+source = "registry+https://github.com/rust-lang/crates.io-index"
377+checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
378+
379+[[package]]
380+name = "futures-core"
381+version = "0.3.34"
382+source = "registry+https://github.com/rust-lang/crates.io-index"
383+checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e"
384+
385+[[package]]
386+name = "futures-task"
387+version = "0.3.34"
388+source = "registry+https://github.com/rust-lang/crates.io-index"
389+checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd"
390+
391+[[package]]
392+name = "futures-util"
393+version = "0.3.34"
394+source = "registry+https://github.com/rust-lang/crates.io-index"
395+checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc"
396+dependencies = [
397+ "futures-core",
398+ "futures-task",
399+ "pin-project-lite",
400+ "slab",
401+]
402+
403+[[package]]
404+name = "generic-array"
405+version = "0.14.7"
406+source = "registry+https://github.com/rust-lang/crates.io-index"
407+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
408+dependencies = [
409+ "typenum",
410+ "version_check",
411+]
412+
413+[[package]]
414+name = "getrandom"
415+version = "0.3.4"
416+source = "registry+https://github.com/rust-lang/crates.io-index"
417+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
418+dependencies = [
419+ "cfg-if",
420+ "libc",
421+ "r-efi 5.3.0",
422+ "wasip2",
423+]
424+
425+[[package]]
426+name = "getrandom"
427+version = "0.4.3"
428+source = "registry+https://github.com/rust-lang/crates.io-index"
429+checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
430+dependencies = [
431+ "cfg-if",
432+ "libc",
433+ "r-efi 6.0.0",
434+]
435+
436+[[package]]
437+name = "hashbrown"
438+version = "0.16.1"
439+source = "registry+https://github.com/rust-lang/crates.io-index"
440+checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
441+dependencies = [
442+ "allocator-api2",
443+ "equivalent",
444+ "foldhash",
445+]
446+
447+[[package]]
448+name = "hashbrown"
449+version = "0.17.1"
450+source = "registry+https://github.com/rust-lang/crates.io-index"
451+checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
452+dependencies = [
453+ "allocator-api2",
454+ "equivalent",
455+ "foldhash",
456+]
457+
458+[[package]]
459+name = "heck"
460+version = "0.5.0"
461+source = "registry+https://github.com/rust-lang/crates.io-index"
462+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
463+
464+[[package]]
465+name = "hex"
466+version = "0.4.3"
467+source = "registry+https://github.com/rust-lang/crates.io-index"
468+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
469+
470+[[package]]
471+name = "ident_case"
472+version = "1.0.1"
473+source = "registry+https://github.com/rust-lang/crates.io-index"
474+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
475+
476+[[package]]
477+name = "indoc"
478+version = "2.0.7"
479+source = "registry+https://github.com/rust-lang/crates.io-index"
480+checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
481+dependencies = [
482+ "rustversion",
483+]
484+
485+[[package]]
486+name = "instability"
487+version = "0.3.13"
488+source = "registry+https://github.com/rust-lang/crates.io-index"
489+checksum = "2bf84e73fa6f27f299dec58e13223cf70db80da872eb921d4f6138342a0eabc8"
490+dependencies = [
491+ "darling",
492+ "indoc",
493+ "proc-macro2",
494+ "quote",
495+ "syn 3.0.6",
496+]
497+
498+[[package]]
499+name = "itertools"
500+version = "0.14.0"
501+source = "registry+https://github.com/rust-lang/crates.io-index"
502+checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
503+dependencies = [
504+ "either",
505+]
506+
507+[[package]]
508+name = "itoa"
509+version = "1.0.18"
510+source = "registry+https://github.com/rust-lang/crates.io-index"
511+checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
512+
513+[[package]]
514+name = "js-sys"
515+version = "0.3.105"
516+source = "registry+https://github.com/rust-lang/crates.io-index"
517+checksum = "ce57d20d1ea864ce2ac172ab472d409214f4fd359f0b2a2775abdf522e2af99e"
518+dependencies = [
519+ "cfg-if",
520+ "futures-util",
521+ "wasm-bindgen",
522+]
523+
524+[[package]]
525+name = "kasuari"
526+version = "0.4.12"
527+source = "registry+https://github.com/rust-lang/crates.io-index"
528+checksum = "bde5057d6143cc94e861d90f591b9303d6716c6b9602309150bd068853c10899"
529+dependencies = [
530+ "hashbrown 0.16.1",
531+ "portable-atomic",
532+ "thiserror 2.0.20",
533+]
534+
535+[[package]]
536+name = "lab"
537+version = "0.11.0"
538+source = "registry+https://github.com/rust-lang/crates.io-index"
539+checksum = "bf36173d4167ed999940f804952e6b08197cae5ad5d572eb4db150ce8ad5d58f"
540+
541+[[package]]
542+name = "lazy_static"
543+version = "1.5.0"
544+source = "registry+https://github.com/rust-lang/crates.io-index"
545+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
546+
547+[[package]]
548+name = "libc"
549+version = "0.2.189"
550+source = "registry+https://github.com/rust-lang/crates.io-index"
551+checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
552+
553+[[package]]
554+name = "libm"
555+version = "0.2.16"
556+source = "registry+https://github.com/rust-lang/crates.io-index"
557+checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
558+
559+[[package]]
560+name = "line-clipping"
561+version = "0.3.8"
562+source = "registry+https://github.com/rust-lang/crates.io-index"
563+checksum = "e752191d037c44ad111a8caa762921926658402f01cc1253f7bef2020ece4f5e"
564+dependencies = [
565+ "bitflags 2.13.2",
566+]
567+
568+[[package]]
569+name = "linux-raw-sys"
570+version = "0.12.1"
571+source = "registry+https://github.com/rust-lang/crates.io-index"
572+checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
573+
574+[[package]]
575+name = "litrs"
576+version = "1.0.0"
577+source = "registry+https://github.com/rust-lang/crates.io-index"
578+checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092"
579+
580+[[package]]
581+name = "lock_api"
582+version = "0.4.14"
583+source = "registry+https://github.com/rust-lang/crates.io-index"
584+checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
585+dependencies = [
586+ "scopeguard",
587+]
588+
589+[[package]]
590+name = "log"
591+version = "0.4.34"
592+source = "registry+https://github.com/rust-lang/crates.io-index"
593+checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6"
594+
595+[[package]]
596+name = "lru"
597+version = "0.18.4"
598+source = "registry+https://github.com/rust-lang/crates.io-index"
599+checksum = "ff9840bcc50b71349309900da0ce7279aa336ae71d73250b07998932c7d97c25"
600+dependencies = [
601+ "hashbrown 0.17.1",
602+]
603+
604+[[package]]
605+name = "mac_address"
606+version = "1.1.8"
607+source = "registry+https://github.com/rust-lang/crates.io-index"
608+checksum = "c0aeb26bf5e836cc1c341c8106051b573f1766dfa05aa87f0b98be5e51b02303"
609+dependencies = [
610+ "nix",
611+ "winapi",
612+]
613+
614+[[package]]
615+name = "memchr"
616+version = "2.8.3"
617+source = "registry+https://github.com/rust-lang/crates.io-index"
618+checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
619+
620+[[package]]
621+name = "memmem"
622+version = "0.1.1"
623+source = "registry+https://github.com/rust-lang/crates.io-index"
624+checksum = "a64a92489e2744ce060c349162be1c5f33c6969234104dbd99ddb5feb08b8c15"
625+
626+[[package]]
627+name = "memoffset"
628+version = "0.9.1"
629+source = "registry+https://github.com/rust-lang/crates.io-index"
630+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
631+dependencies = [
632+ "autocfg",
633+]
634+
635+[[package]]
636+name = "minimal-lexical"
637+version = "0.2.1"
638+source = "registry+https://github.com/rust-lang/crates.io-index"
639+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
640+
641+[[package]]
642+name = "mio"
643+version = "1.2.3"
644+source = "registry+https://github.com/rust-lang/crates.io-index"
645+checksum = "4b18443e9c262bfe8fa82f51666e2642c53393f7e5c27b3e1aeab922cff5b9d8"
646+dependencies = [
647+ "libc",
648+ "log",
649+ "wasi",
650+ "windows-sys",
651+]
652+
653+[[package]]
654+name = "monkey"
655+version = "0.1.0"
656+dependencies = [
657+ "crossterm",
658+ "ratatui",
659+]
660+
661+[[package]]
662+name = "nix"
663+version = "0.29.0"
664+source = "registry+https://github.com/rust-lang/crates.io-index"
665+checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
666+dependencies = [
667+ "bitflags 2.13.2",
668+ "cfg-if",
669+ "cfg_aliases",
670+ "libc",
671+ "memoffset",
672+]
673+
674+[[package]]
675+name = "nom"
676+version = "7.1.3"
677+source = "registry+https://github.com/rust-lang/crates.io-index"
678+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
679+dependencies = [
680+ "memchr",
681+ "minimal-lexical",
682+]
683+
684+[[package]]
685+name = "num-conv"
686+version = "0.2.2"
687+source = "registry+https://github.com/rust-lang/crates.io-index"
688+checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441"
689+
690+[[package]]
691+name = "num-derive"
692+version = "0.4.2"
693+source = "registry+https://github.com/rust-lang/crates.io-index"
694+checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
695+dependencies = [
696+ "proc-macro2",
697+ "quote",
698+ "syn 2.0.119",
699+]
700+
701+[[package]]
702+name = "num-traits"
703+version = "0.2.19"
704+source = "registry+https://github.com/rust-lang/crates.io-index"
705+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
706+dependencies = [
707+ "autocfg",
708+]
709+
710+[[package]]
711+name = "num_threads"
712+version = "0.1.7"
713+source = "registry+https://github.com/rust-lang/crates.io-index"
714+checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
715+dependencies = [
716+ "libc",
717+]
718+
719+[[package]]
720+name = "once_cell"
721+version = "1.21.4"
722+source = "registry+https://github.com/rust-lang/crates.io-index"
723+checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
724+
725+[[package]]
726+name = "ordered-float"
727+version = "4.6.0"
728+source = "registry+https://github.com/rust-lang/crates.io-index"
729+checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951"
730+dependencies = [
731+ "num-traits",
732+]
733+
734+[[package]]
735+name = "palette"
736+version = "0.7.7"
737+source = "registry+https://github.com/rust-lang/crates.io-index"
738+checksum = "ddeed8580d347d2abf3dcf06a5f0b3dc020258338526b277847cd4248a70fc64"
739+dependencies = [
740+ "approx",
741+ "libm",
742+ "palette_derive",
743+ "palette_math",
744+]
745+
746+[[package]]
747+name = "palette_derive"
748+version = "0.7.7"
749+source = "registry+https://github.com/rust-lang/crates.io-index"
750+checksum = "88537020289b719d81be994ccf1bbf4990f477e2f69ee52fe3e45f43a02e56be"
751+dependencies = [
752+ "by_address",
753+ "proc-macro2",
754+ "quote",
755+ "syn 2.0.119",
756+]
757+
758+[[package]]
759+name = "palette_math"
760+version = "0.7.7"
761+source = "registry+https://github.com/rust-lang/crates.io-index"
762+checksum = "6e6eb142958d64335fb0e345c5b9ead2ecd6fc438c307e9d7d3c4fd428dbaf12"
763+dependencies = [
764+ "libm",
765+]
766+
767+[[package]]
768+name = "parking_lot"
769+version = "0.12.5"
770+source = "registry+https://github.com/rust-lang/crates.io-index"
771+checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
772+dependencies = [
773+ "lock_api",
774+ "parking_lot_core",
775+]
776+
777+[[package]]
778+name = "parking_lot_core"
779+version = "0.9.12"
780+source = "registry+https://github.com/rust-lang/crates.io-index"
781+checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
782+dependencies = [
783+ "cfg-if",
784+ "libc",
785+ "redox_syscall",
786+ "smallvec",
787+ "windows-link",
788+]
789+
790+[[package]]
791+name = "pest"
792+version = "2.9.2"
793+source = "registry+https://github.com/rust-lang/crates.io-index"
794+checksum = "45d3aca230fad2e6f6317ca0a72724338c4960cb97168a85cdee66df4a9a21a8"
795+dependencies = [
796+ "memchr",
797+ "ucd-trie",
798+]
799+
800+[[package]]
801+name = "pest_derive"
802+version = "2.9.2"
803+source = "registry+https://github.com/rust-lang/crates.io-index"
804+checksum = "284b60557f2c4a2e72ad3f2d34d42685a2fa4a6a61d0d2a10c0ae2a5e916c2cf"
805+dependencies = [
806+ "pest",
807+ "pest_generator",
808+]
809+
810+[[package]]
811+name = "pest_generator"
812+version = "2.9.2"
813+source = "registry+https://github.com/rust-lang/crates.io-index"
814+checksum = "1d9d1f08a115309ee99268cf85e5228e0e56aa9caf8841ec12866b6be07c3109"
815+dependencies = [
816+ "pest",
817+ "pest_meta",
818+ "proc-macro2",
819+ "quote",
820+ "syn 2.0.119",
821+]
822+
823+[[package]]
824+name = "pest_meta"
825+version = "2.9.2"
826+source = "registry+https://github.com/rust-lang/crates.io-index"
827+checksum = "ed93ba1a9ffcca32130a5188701c81c0c49cf00d4b7c5007d5148951d743adcb"
828+dependencies = [
829+ "pest",
830+]
831+
832+[[package]]
833+name = "phf"
834+version = "0.11.3"
835+source = "registry+https://github.com/rust-lang/crates.io-index"
836+checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
837+dependencies = [
838+ "phf_macros",
839+ "phf_shared",
840+]
841+
842+[[package]]
843+name = "phf_codegen"
844+version = "0.11.3"
845+source = "registry+https://github.com/rust-lang/crates.io-index"
846+checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a"
847+dependencies = [
848+ "phf_generator",
849+ "phf_shared",
850+]
851+
852+[[package]]
853+name = "phf_generator"
854+version = "0.11.3"
855+source = "registry+https://github.com/rust-lang/crates.io-index"
856+checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
857+dependencies = [
858+ "phf_shared",
859+ "rand",
860+]
861+
862+[[package]]
863+name = "phf_macros"
864+version = "0.11.3"
865+source = "registry+https://github.com/rust-lang/crates.io-index"
866+checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216"
867+dependencies = [
868+ "phf_generator",
869+ "phf_shared",
870+ "proc-macro2",
871+ "quote",
872+ "syn 2.0.119",
873+]
874+
875+[[package]]
876+name = "phf_shared"
877+version = "0.11.3"
878+source = "registry+https://github.com/rust-lang/crates.io-index"
879+checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5"
880+dependencies = [
881+ "siphasher",
882+]
883+
884+[[package]]
885+name = "pin-project-lite"
886+version = "0.2.17"
887+source = "registry+https://github.com/rust-lang/crates.io-index"
888+checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
889+
890+[[package]]
891+name = "portable-atomic"
892+version = "1.15.0"
893+source = "registry+https://github.com/rust-lang/crates.io-index"
894+checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
895+
896+[[package]]
897+name = "powerfmt"
898+version = "0.2.0"
899+source = "registry+https://github.com/rust-lang/crates.io-index"
900+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
901+
902+[[package]]
903+name = "proc-macro2"
904+version = "1.0.107"
905+source = "registry+https://github.com/rust-lang/crates.io-index"
906+checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
907+dependencies = [
908+ "unicode-ident",
909+]
910+
911+[[package]]
912+name = "quote"
913+version = "1.0.47"
914+source = "registry+https://github.com/rust-lang/crates.io-index"
915+checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
916+dependencies = [
917+ "proc-macro2",
918+]
919+
920+[[package]]
921+name = "r-efi"
922+version = "5.3.0"
923+source = "registry+https://github.com/rust-lang/crates.io-index"
924+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
925+
926+[[package]]
927+name = "r-efi"
928+version = "6.0.0"
929+source = "registry+https://github.com/rust-lang/crates.io-index"
930+checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
931+
932+[[package]]
933+name = "rand"
934+version = "0.8.8"
935+source = "registry+https://github.com/rust-lang/crates.io-index"
936+checksum = "e058c7de0b26af77780c769414d6257830bb240f3c38477dbc2c16e5f54d6d4c"
937+dependencies = [
938+ "rand_core",
939+]
940+
941+[[package]]
942+name = "rand_core"
943+version = "0.6.4"
944+source = "registry+https://github.com/rust-lang/crates.io-index"
945+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
946+
947+[[package]]
948+name = "ratatui"
949+version = "0.30.2"
950+source = "registry+https://github.com/rust-lang/crates.io-index"
951+checksum = "3274ba0a2c5e1bcad2a2005d20f4dc59dad26b2eb0940fb094500dba4099d57d"
952+dependencies = [
953+ "instability",
954+ "ratatui-core",
955+ "ratatui-crossterm",
956+ "ratatui-macros",
957+ "ratatui-termina",
958+ "ratatui-termwiz",
959+ "ratatui-widgets",
960+ "serde",
961+]
962+
963+[[package]]
964+name = "ratatui-core"
965+version = "0.1.2"
966+source = "registry+https://github.com/rust-lang/crates.io-index"
967+checksum = "cbb175c433c8e28a809d1f5773a2ae96e68c0ce40db865cbab1020bf33ae479c"
968+dependencies = [
969+ "bitflags 2.13.2",
970+ "compact_str",
971+ "critical-section",
972+ "hashbrown 0.17.1",
973+ "itertools",
974+ "kasuari",
975+ "lru",
976+ "palette",
977+ "serde",
978+ "strum",
979+ "thiserror 2.0.20",
980+ "unicode-segmentation",
981+ "unicode-truncate",
982+ "unicode-width",
983+]
984+
985+[[package]]
986+name = "ratatui-crossterm"
987+version = "0.1.2"
988+source = "registry+https://github.com/rust-lang/crates.io-index"
989+checksum = "567584a3b0e6a8203c23de40b4861497266725eb5363dbfd18a1edd603cca9f0"
990+dependencies = [
991+ "cfg-if",
992+ "crossterm",
993+ "instability",
994+ "ratatui-core",
995+]
996+
997+[[package]]
998+name = "ratatui-macros"
999+version = "0.7.2"
1000+source = "registry+https://github.com/rust-lang/crates.io-index"
1001+checksum = "ed7dc68daa7498a43e4d68e0eb078427e10c38fbcfbb1e42d955f1fa2140d814"
1002+dependencies = [
1003+ "ratatui-core",
1004+ "ratatui-widgets",
1005+]
1006+
1007+[[package]]
1008+name = "ratatui-termina"
1009+version = "0.1.0"
1010+source = "registry+https://github.com/rust-lang/crates.io-index"
1011+checksum = "c0bf912d9e66f057a759d92e386a280ea886b352ab757d6ac4d653c7ed2c43c2"
1012+dependencies = [
1013+ "instability",
1014+ "ratatui-core",
1015+ "termina",
1016+]
1017+
1018+[[package]]
1019+name = "ratatui-termwiz"
1020+version = "0.1.2"
1021+source = "registry+https://github.com/rust-lang/crates.io-index"
1022+checksum = "faf03e0380b7744054d6cb74224fe3adf062a029754933f575ca1e3b4c2ce977"
1023+dependencies = [
1024+ "ratatui-core",
1025+ "termwiz",
1026+]
1027+
1028+[[package]]
1029+name = "ratatui-widgets"
1030+version = "0.3.2"
1031+source = "registry+https://github.com/rust-lang/crates.io-index"
1032+checksum = "66e3d19bcc9130ca376277d93b60767ff121ace3be06f5f95f81dd68956407d1"
1033+dependencies = [
1034+ "bitflags 2.13.2",
1035+ "hashbrown 0.17.1",
1036+ "indoc",
1037+ "instability",
1038+ "itertools",
1039+ "line-clipping",
1040+ "ratatui-core",
1041+ "serde",
1042+ "strum",
1043+ "time",
1044+ "unicode-segmentation",
1045+ "unicode-width",
1046+]
1047+
1048+[[package]]
1049+name = "redox_syscall"
1050+version = "0.5.18"
1051+source = "registry+https://github.com/rust-lang/crates.io-index"
1052+checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
1053+dependencies = [
1054+ "bitflags 2.13.2",
1055+]
1056+
1057+[[package]]
1058+name = "regex"
1059+version = "1.13.1"
1060+source = "registry+https://github.com/rust-lang/crates.io-index"
1061+checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d"
1062+dependencies = [
1063+ "aho-corasick",
1064+ "memchr",
1065+ "regex-automata",
1066+ "regex-syntax",
1067+]
1068+
1069+[[package]]
1070+name = "regex-automata"
1071+version = "0.4.18"
1072+source = "registry+https://github.com/rust-lang/crates.io-index"
1073+checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2"
1074+dependencies = [
1075+ "aho-corasick",
1076+ "memchr",
1077+ "regex-syntax",
1078+]
1079+
1080+[[package]]
1081+name = "regex-syntax"
1082+version = "0.8.11"
1083+source = "registry+https://github.com/rust-lang/crates.io-index"
1084+checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
1085+
1086+[[package]]
1087+name = "rustc_version"
1088+version = "0.4.1"
1089+source = "registry+https://github.com/rust-lang/crates.io-index"
1090+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
1091+dependencies = [
1092+ "semver",
1093+]
1094+
1095+[[package]]
1096+name = "rustix"
1097+version = "1.1.5"
1098+source = "registry+https://github.com/rust-lang/crates.io-index"
1099+checksum = "891efababe418670775f199f0d233d84843c227a0949a883ce15b37c78d6629d"
1100+dependencies = [
1101+ "bitflags 2.13.2",
1102+ "errno",
1103+ "libc",
1104+ "linux-raw-sys",
1105+ "windows-sys",
1106+]
1107+
1108+[[package]]
1109+name = "rustversion"
1110+version = "1.0.23"
1111+source = "registry+https://github.com/rust-lang/crates.io-index"
1112+checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
1113+
1114+[[package]]
1115+name = "ryu"
1116+version = "1.0.23"
1117+source = "registry+https://github.com/rust-lang/crates.io-index"
1118+checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
1119+
1120+[[package]]
1121+name = "scopeguard"
1122+version = "1.2.0"
1123+source = "registry+https://github.com/rust-lang/crates.io-index"
1124+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
1125+
1126+[[package]]
1127+name = "semver"
1128+version = "1.0.28"
1129+source = "registry+https://github.com/rust-lang/crates.io-index"
1130+checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"
1131+
1132+[[package]]
1133+name = "serde"
1134+version = "1.0.229"
1135+source = "registry+https://github.com/rust-lang/crates.io-index"
1136+checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
1137+dependencies = [
1138+ "serde_core",
1139+ "serde_derive",
1140+]
1141+
1142+[[package]]
1143+name = "serde_core"
1144+version = "1.0.229"
1145+source = "registry+https://github.com/rust-lang/crates.io-index"
1146+checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
1147+dependencies = [
1148+ "serde_derive",
1149+]
1150+
1151+[[package]]
1152+name = "serde_derive"
1153+version = "1.0.229"
1154+source = "registry+https://github.com/rust-lang/crates.io-index"
1155+checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
1156+dependencies = [
1157+ "proc-macro2",
1158+ "quote",
1159+ "syn 3.0.6",
1160+]
1161+
1162+[[package]]
1163+name = "sha2"
1164+version = "0.10.9"
1165+source = "registry+https://github.com/rust-lang/crates.io-index"
1166+checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
1167+dependencies = [
1168+ "cfg-if",
1169+ "cpufeatures",
1170+ "digest",
1171+]
1172+
1173+[[package]]
1174+name = "signal-hook"
1175+version = "0.3.18"
1176+source = "registry+https://github.com/rust-lang/crates.io-index"
1177+checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2"
1178+dependencies = [
1179+ "libc",
1180+ "signal-hook-registry",
1181+]
1182+
1183+[[package]]
1184+name = "signal-hook-mio"
1185+version = "0.2.5"
1186+source = "registry+https://github.com/rust-lang/crates.io-index"
1187+checksum = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc"
1188+dependencies = [
1189+ "libc",
1190+ "mio",
1191+ "signal-hook",
1192+]
1193+
1194+[[package]]
1195+name = "signal-hook-registry"
1196+version = "1.4.8"
1197+source = "registry+https://github.com/rust-lang/crates.io-index"
1198+checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"
1199+dependencies = [
1200+ "errno",
1201+ "libc",
1202+]
1203+
1204+[[package]]
1205+name = "siphasher"
1206+version = "1.0.3"
1207+source = "registry+https://github.com/rust-lang/crates.io-index"
1208+checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649"
1209+
1210+[[package]]
1211+name = "slab"
1212+version = "0.4.12"
1213+source = "registry+https://github.com/rust-lang/crates.io-index"
1214+checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
1215+
1216+[[package]]
1217+name = "smallvec"
1218+version = "1.16.1"
1219+source = "registry+https://github.com/rust-lang/crates.io-index"
1220+checksum = "ba467056f1b547ed52077911161fc86985becbc60e8e1857c8a144dab0def891"
1221+
1222+[[package]]
1223+name = "static_assertions"
1224+version = "1.1.0"
1225+source = "registry+https://github.com/rust-lang/crates.io-index"
1226+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
1227+
1228+[[package]]
1229+name = "strsim"
1230+version = "0.11.1"
1231+source = "registry+https://github.com/rust-lang/crates.io-index"
1232+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
1233+
1234+[[package]]
1235+name = "strum"
1236+version = "0.28.0"
1237+source = "registry+https://github.com/rust-lang/crates.io-index"
1238+checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd"
1239+dependencies = [
1240+ "strum_macros",
1241+]
1242+
1243+[[package]]
1244+name = "strum_macros"
1245+version = "0.28.0"
1246+source = "registry+https://github.com/rust-lang/crates.io-index"
1247+checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664"
1248+dependencies = [
1249+ "heck",
1250+ "proc-macro2",
1251+ "quote",
1252+ "syn 2.0.119",
1253+]
1254+
1255+[[package]]
1256+name = "syn"
1257+version = "1.0.109"
1258+source = "registry+https://github.com/rust-lang/crates.io-index"
1259+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
1260+dependencies = [
1261+ "proc-macro2",
1262+ "quote",
1263+ "unicode-ident",
1264+]
1265+
1266+[[package]]
1267+name = "syn"
1268+version = "2.0.119"
1269+source = "registry+https://github.com/rust-lang/crates.io-index"
1270+checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
1271+dependencies = [
1272+ "proc-macro2",
1273+ "quote",
1274+ "unicode-ident",
1275+]
1276+
1277+[[package]]
1278+name = "syn"
1279+version = "3.0.6"
1280+source = "registry+https://github.com/rust-lang/crates.io-index"
1281+checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee"
1282+dependencies = [
1283+ "proc-macro2",
1284+ "quote",
1285+ "unicode-ident",
1286+]
1287+
1288+[[package]]
1289+name = "termina"
1290+version = "0.3.3"
1291+source = "registry+https://github.com/rust-lang/crates.io-index"
1292+checksum = "9048a889effe34a5cddee0af7f53285198b16dca3be510858d38dfdb3e62a04e"
1293+dependencies = [
1294+ "bitflags 2.13.2",
1295+ "parking_lot",
1296+ "rustix",
1297+ "signal-hook",
1298+ "windows-sys",
1299+]
1300+
1301+[[package]]
1302+name = "terminfo"
1303+version = "0.9.0"
1304+source = "registry+https://github.com/rust-lang/crates.io-index"
1305+checksum = "d4ea810f0692f9f51b382fff5893887bb4580f5fa246fde546e0b13e7fcee662"
1306+dependencies = [
1307+ "fnv",
1308+ "nom",
1309+ "phf",
1310+ "phf_codegen",
1311+]
1312+
1313+[[package]]
1314+name = "termios"
1315+version = "0.3.3"
1316+source = "registry+https://github.com/rust-lang/crates.io-index"
1317+checksum = "411c5bf740737c7918b8b1fe232dca4dc9f8e754b8ad5e20966814001ed0ac6b"
1318+dependencies = [
1319+ "libc",
1320+]
1321+
1322+[[package]]
1323+name = "termwiz"
1324+version = "0.23.3"
1325+source = "registry+https://github.com/rust-lang/crates.io-index"
1326+checksum = "4676b37242ccbd1aabf56edb093a4827dc49086c0ffd764a5705899e0f35f8f7"
1327+dependencies = [
1328+ "anyhow",
1329+ "base64",
1330+ "bitflags 2.13.2",
1331+ "fancy-regex",
1332+ "filedescriptor",
1333+ "finl_unicode",
1334+ "fixedbitset",
1335+ "hex",
1336+ "lazy_static",
1337+ "libc",
1338+ "log",
1339+ "memmem",
1340+ "nix",
1341+ "num-derive",
1342+ "num-traits",
1343+ "ordered-float",
1344+ "pest",
1345+ "pest_derive",
1346+ "phf",
1347+ "sha2",
1348+ "signal-hook",
1349+ "siphasher",
1350+ "terminfo",
1351+ "termios",
1352+ "thiserror 1.0.69",
1353+ "ucd-trie",
1354+ "unicode-segmentation",
1355+ "vtparse",
1356+ "wezterm-bidi",
1357+ "wezterm-blob-leases",
1358+ "wezterm-color-types",
1359+ "wezterm-dynamic",
1360+ "wezterm-input-types",
1361+ "winapi",
1362+]
1363+
1364+[[package]]
1365+name = "thiserror"
1366+version = "1.0.69"
1367+source = "registry+https://github.com/rust-lang/crates.io-index"
1368+checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
1369+dependencies = [
1370+ "thiserror-impl 1.0.69",
1371+]
1372+
1373+[[package]]
1374+name = "thiserror"
1375+version = "2.0.20"
1376+source = "registry+https://github.com/rust-lang/crates.io-index"
1377+checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f"
1378+dependencies = [
1379+ "thiserror-impl 2.0.20",
1380+]
1381+
1382+[[package]]
1383+name = "thiserror-impl"
1384+version = "1.0.69"
1385+source = "registry+https://github.com/rust-lang/crates.io-index"
1386+checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
1387+dependencies = [
1388+ "proc-macro2",
1389+ "quote",
1390+ "syn 2.0.119",
1391+]
1392+
1393+[[package]]
1394+name = "thiserror-impl"
1395+version = "2.0.20"
1396+source = "registry+https://github.com/rust-lang/crates.io-index"
1397+checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af"
1398+dependencies = [
1399+ "proc-macro2",
1400+ "quote",
1401+ "syn 3.0.6",
1402+]
1403+
1404+[[package]]
1405+name = "time"
1406+version = "0.3.55"
1407+source = "registry+https://github.com/rust-lang/crates.io-index"
1408+checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134"
1409+dependencies = [
1410+ "deranged",
1411+ "libc",
1412+ "num-conv",
1413+ "num_threads",
1414+ "powerfmt",
1415+ "serde_core",
1416+ "time-core",
1417+]
1418+
1419+[[package]]
1420+name = "time-core"
1421+version = "0.1.9"
1422+source = "registry+https://github.com/rust-lang/crates.io-index"
1423+checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109"
1424+
1425+[[package]]
1426+name = "typenum"
1427+version = "1.20.1"
1428+source = "registry+https://github.com/rust-lang/crates.io-index"
1429+checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
1430+
1431+[[package]]
1432+name = "ucd-trie"
1433+version = "0.1.7"
1434+source = "registry+https://github.com/rust-lang/crates.io-index"
1435+checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"
1436+
1437+[[package]]
1438+name = "unicode-ident"
1439+version = "1.0.26"
1440+source = "registry+https://github.com/rust-lang/crates.io-index"
1441+checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954"
1442+
1443+[[package]]
1444+name = "unicode-segmentation"
1445+version = "1.13.3"
1446+source = "registry+https://github.com/rust-lang/crates.io-index"
1447+checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8"
1448+
1449+[[package]]
1450+name = "unicode-truncate"
1451+version = "2.0.1"
1452+source = "registry+https://github.com/rust-lang/crates.io-index"
1453+checksum = "16b380a1238663e5f8a691f9039c73e1cdae598a30e9855f541d29b08b53e9a5"
1454+dependencies = [
1455+ "itertools",
1456+ "unicode-segmentation",
1457+ "unicode-width",
1458+]
1459+
1460+[[package]]
1461+name = "unicode-width"
1462+version = "0.2.2"
1463+source = "registry+https://github.com/rust-lang/crates.io-index"
1464+checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"
1465+
1466+[[package]]
1467+name = "utf8parse"
1468+version = "0.2.2"
1469+source = "registry+https://github.com/rust-lang/crates.io-index"
1470+checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
1471+
1472+[[package]]
1473+name = "uuid"
1474+version = "1.26.1"
1475+source = "registry+https://github.com/rust-lang/crates.io-index"
1476+checksum = "2ef6dac1e96601b4fb3acccccff2139741fcb757cb9a36089bf5be91cfb285ce"
1477+dependencies = [
1478+ "atomic",
1479+ "getrandom 0.4.3",
1480+ "js-sys",
1481+ "wasm-bindgen",
1482+]
1483+
1484+[[package]]
1485+name = "version_check"
1486+version = "0.9.5"
1487+source = "registry+https://github.com/rust-lang/crates.io-index"
1488+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
1489+
1490+[[package]]
1491+name = "vtparse"
1492+version = "0.6.2"
1493+source = "registry+https://github.com/rust-lang/crates.io-index"
1494+checksum = "6d9b2acfb050df409c972a37d3b8e08cdea3bddb0c09db9d53137e504cfabed0"
1495+dependencies = [
1496+ "utf8parse",
1497+]
1498+
1499+[[package]]
1500+name = "wasi"
1501+version = "0.11.1+wasi-snapshot-preview1"
1502+source = "registry+https://github.com/rust-lang/crates.io-index"
1503+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
1504+
1505+[[package]]
1506+name = "wasip2"
1507+version = "1.0.4+wasi-0.2.12"
1508+source = "registry+https://github.com/rust-lang/crates.io-index"
1509+checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487"
1510+dependencies = [
1511+ "wit-bindgen",
1512+]
1513+
1514+[[package]]
1515+name = "wasm-bindgen"
1516+version = "0.2.128"
1517+source = "registry+https://github.com/rust-lang/crates.io-index"
1518+checksum = "aecb87a33d3b0c5e3b7aa46336eaf486cffafbd281b195e4c8b80d50df2351bf"
1519+dependencies = [
1520+ "cfg-if",
1521+ "once_cell",
1522+ "rustversion",
1523+ "wasm-bindgen-macro",
1524+ "wasm-bindgen-shared",
1525+]
1526+
1527+[[package]]
1528+name = "wasm-bindgen-macro"
1529+version = "0.2.128"
1530+source = "registry+https://github.com/rust-lang/crates.io-index"
1531+checksum = "a690d511e3c1a8b3a55e33511e3c2c00c78415cd23650f32b808627f5696b9ed"
1532+dependencies = [
1533+ "quote",
1534+ "wasm-bindgen-macro-support",
1535+]
1536+
1537+[[package]]
1538+name = "wasm-bindgen-macro-support"
1539+version = "0.2.128"
1540+source = "registry+https://github.com/rust-lang/crates.io-index"
1541+checksum = "411e4887f0071ef2d2164a9d5fdf2d20efbef78fccd3a78b0c10a1dc5295e48a"
1542+dependencies = [
1543+ "bumpalo",
1544+ "proc-macro2",
1545+ "quote",
1546+ "syn 3.0.6",
1547+ "wasm-bindgen-shared",
1548+]
1549+
1550+[[package]]
1551+name = "wasm-bindgen-shared"
1552+version = "0.2.128"
1553+source = "registry+https://github.com/rust-lang/crates.io-index"
1554+checksum = "81941cd78d0c92026c33e5e01312845a4cb1e9af3407f9134b100dd03144103e"
1555+dependencies = [
1556+ "unicode-ident",
1557+]
1558+
1559+[[package]]
1560+name = "wezterm-bidi"
1561+version = "0.2.3"
1562+source = "registry+https://github.com/rust-lang/crates.io-index"
1563+checksum = "0c0a6e355560527dd2d1cf7890652f4f09bb3433b6aadade4c9b5ed76de5f3ec"
1564+dependencies = [
1565+ "log",
1566+ "wezterm-dynamic",
1567+]
1568+
1569+[[package]]
1570+name = "wezterm-blob-leases"
1571+version = "0.1.1"
1572+source = "registry+https://github.com/rust-lang/crates.io-index"
1573+checksum = "692daff6d93d94e29e4114544ef6d5c942a7ed998b37abdc19b17136ea428eb7"
1574+dependencies = [
1575+ "getrandom 0.3.4",
1576+ "mac_address",
1577+ "sha2",
1578+ "thiserror 1.0.69",
1579+ "uuid",
1580+]
1581+
1582+[[package]]
1583+name = "wezterm-color-types"
1584+version = "0.3.0"
1585+source = "registry+https://github.com/rust-lang/crates.io-index"
1586+checksum = "7de81ef35c9010270d63772bebef2f2d6d1f2d20a983d27505ac850b8c4b4296"
1587+dependencies = [
1588+ "csscolorparser",
1589+ "deltae",
1590+ "lazy_static",
1591+ "wezterm-dynamic",
1592+]
1593+
1594+[[package]]
1595+name = "wezterm-dynamic"
1596+version = "0.2.1"
1597+source = "registry+https://github.com/rust-lang/crates.io-index"
1598+checksum = "5f2ab60e120fd6eaa68d9567f3226e876684639d22a4219b313ff69ec0ccd5ac"
1599+dependencies = [
1600+ "log",
1601+ "ordered-float",
1602+ "strsim",
1603+ "thiserror 1.0.69",
1604+ "wezterm-dynamic-derive",
1605+]
1606+
1607+[[package]]
1608+name = "wezterm-dynamic-derive"
1609+version = "0.1.1"
1610+source = "registry+https://github.com/rust-lang/crates.io-index"
1611+checksum = "46c0cf2d539c645b448eaffec9ec494b8b19bd5077d9e58cb1ae7efece8d575b"
1612+dependencies = [
1613+ "proc-macro2",
1614+ "quote",
1615+ "syn 1.0.109",
1616+]
1617+
1618+[[package]]
1619+name = "wezterm-input-types"
1620+version = "0.1.0"
1621+source = "registry+https://github.com/rust-lang/crates.io-index"
1622+checksum = "7012add459f951456ec9d6c7e6fc340b1ce15d6fc9629f8c42853412c029e57e"
1623+dependencies = [
1624+ "bitflags 1.3.2",
1625+ "euclid",
1626+ "lazy_static",
1627+ "serde",
1628+ "wezterm-dynamic",
1629+]
1630+
1631+[[package]]
1632+name = "winapi"
1633+version = "0.3.9"
1634+source = "registry+https://github.com/rust-lang/crates.io-index"
1635+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
1636+dependencies = [
1637+ "winapi-i686-pc-windows-gnu",
1638+ "winapi-x86_64-pc-windows-gnu",
1639+]
1640+
1641+[[package]]
1642+name = "winapi-i686-pc-windows-gnu"
1643+version = "0.4.0"
1644+source = "registry+https://github.com/rust-lang/crates.io-index"
1645+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
1646+
1647+[[package]]
1648+name = "winapi-x86_64-pc-windows-gnu"
1649+version = "0.4.0"
1650+source = "registry+https://github.com/rust-lang/crates.io-index"
1651+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
1652+
1653+[[package]]
1654+name = "windows-link"
1655+version = "0.2.1"
1656+source = "registry+https://github.com/rust-lang/crates.io-index"
1657+checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
1658+
1659+[[package]]
1660+name = "windows-sys"
1661+version = "0.61.2"
1662+source = "registry+https://github.com/rust-lang/crates.io-index"
1663+checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
1664+dependencies = [
1665+ "windows-link",
1666+]
1667+
1668+[[package]]
1669+name = "wit-bindgen"
1670+version = "0.57.1"
1671+source = "registry+https://github.com/rust-lang/crates.io-index"
1672+checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"
Added file: Cargo.toml+8 additions
@@ -0,0 +1,8 @@
1+[package]
2+name = "monkey"
3+version = "0.1.0"
4+edition = "2024"
5+
6+[dependencies]
7+crossterm = "0.29.0"
8+ratatui = "0.30.2"
Added file: flake.lock+27 additions
@@ -0,0 +1,27 @@
1+{
2+ "nodes": {
3+ "nixpkgs": {
4+ "locked": {
5+ "lastModified": 1790055231,
6+ "narHash": "sha256-QpXotokGh5eeMG1Njiuh27oP0rK6t5+cMp7ymXSs7mc=",
7+ "owner": "NixOS",
8+ "repo": "nixpkgs",
9+ "rev": "b6c98e9e6633ee64753b594ff4a5febf0367fc00",
10+ "type": "github"
11+ },
12+ "original": {
13+ "owner": "NixOS",
14+ "ref": "nixpkgs-unstable",
15+ "repo": "nixpkgs",
16+ "type": "github"
17+ }
18+ },
19+ "root": {
20+ "inputs": {
21+ "nixpkgs": "nixpkgs"
22+ }
23+ }
24+ },
25+ "root": "root",
26+ "version": 7
27+}
Added file: flake.nix+33 additions
@@ -0,0 +1,33 @@
1+{
2+ description = "Rust 2048 game";
3+
4+ inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
5+
6+ outputs = {nixpkgs, ...}: let
7+ system = "x86_64-linux";
8+ pkgs = nixpkgs.legacyPackages.${system};
9+ in {
10+ packages.${system}.default = pkgs.rustPlatform.buildRustPackage {
11+ pname = "jag_2048";
12+ version = "1.0.0";
13+
14+ src = ./.;
15+
16+ cargoLock.lockFile = ./Cargo.lock;
17+
18+ meta = {
19+ description = "Rust 2048 game";
20+ mainProgram = "jag_2048";
21+ };
22+ };
23+
24+ devShells.${system}.default = pkgs.mkShell {
25+ packages = with pkgs; [
26+ rustc
27+ cargo
28+ rustfmt
29+ clippy
30+ ];
31+ };
32+ };
33+}
Added file: src/main.rs+156 additions
@@ -0,0 +1,156 @@
1+use std::io;
2+
3+use crossterm::event::{self, Event, KeyCode, KeyEvent, KeyEventKind};
4+use ratatui::{
5+ buffer::Buffer,
6+ layout::{Rect, Layout, Direction, Constraint},
7+ style::Stylize,
8+ symbols::border,
9+ text::{Line, Text},
10+ widgets::{Block, Paragraph, Widget},
11+ DefaultTerminal, Frame,
12+};
13+
14+#[derive(Debug, PartialEq, Eq)]
15+enum States {
16+ Running,
17+ Paused,
18+ Quit,
19+}
20+
21+impl Default for States {
22+ fn default() -> Self {
23+ States::Running
24+ }
25+}
26+
27+#[derive(Debug, Default)]
28+pub struct App {
29+ counter: u8,
30+ state: States,
31+}
32+
33+impl Widget for &App {
34+ fn render(self, area: Rect, buf: &mut Buffer) {
35+
36+ let title = Line::from(" Counter App Tutorial ".bold());
37+ let instructions = Line::from(vec![
38+ " Decrement ".into(),
39+ "<Left>".blue().bold(),
40+ " Increment ".into(),
41+ "<Right>".blue().bold(),
42+ " Pause ".into(),
43+ "<P>".blue().bold(),
44+ " Quit".into(),
45+ "<Q> ".blue().bold(),
46+ ]);
47+ let block = Block::bordered()
48+ .title(title.centered())
49+ .title_bottom(instructions.centered())
50+ .border_set(border::THICK);
51+
52+ let counter_text = Text::from(vec![Line::from(vec![
53+ "Value: ".into(),
54+ self.counter.to_string().yellow(),
55+ ])]);
56+
57+ Paragraph::new(counter_text)
58+ .centered()
59+ .block(block)
60+ .render(area, buf);
61+
62+ if self.state == States::Paused {
63+
64+ let pause_area = area.centered(
65+ Constraint::Length(20),
66+ Constraint::Length(5),
67+ );
68+
69+ let pause_block = Block::bordered()
70+ .border_set(border::ROUNDED);
71+
72+ let pause_text = Text::from("PAUSE");
73+
74+ let pause_text_area = pause_area.centered(
75+ Constraint::Length(pause_text.width() as u16),
76+ Constraint::Length(1),
77+ );
78+
79+ pause_block.render(pause_area, buf);
80+
81+ Paragraph::new(pause_text)
82+ .render(pause_text_area, buf);
83+ }
84+ }
85+}
86+
87+impl App {
88+
89+ pub fn run(&mut self, terminal: &mut DefaultTerminal) -> io::Result<()> {
90+ while self.state != States::Quit {
91+ terminal.draw(|frame| self.draw(frame))?;
92+ self.handle_events()?;
93+ }
94+ Ok(())
95+ }
96+
97+ fn draw(&self, frame: &mut Frame) {
98+ frame.render_widget(self, frame.area());
99+ }
100+
101+ fn handle_events(&mut self) -> io::Result<()> {
102+ match event::read()? {
103+ Event::Key(key_event) if key_event.kind == KeyEventKind::Press => {
104+ self.handle_key_event(key_event)
105+ },
106+ _ => {},
107+ };
108+ Ok(())
109+ }
110+
111+ fn handle_key_event(&mut self, key_event: KeyEvent) {
112+ match self.state {
113+ States::Running =>
114+ match key_event.code {
115+ KeyCode::Char('p') => self.pause(),
116+ KeyCode::Char('q') => self.exit(),
117+ KeyCode::Left => self.decrement_counter(),
118+ KeyCode::Right => self.increment_counter(),
119+ _ => {}
120+ },
121+ States::Paused =>
122+ match key_event.code {
123+ KeyCode::Char('p') => self.pause(),
124+ KeyCode::Char('q') => self.exit(),
125+ _ => {},
126+ },
127+
128+ States::Quit => {},
129+ }
130+ }
131+
132+ fn pause(&mut self) {
133+ if self.state == States::Paused {
134+ self.state = States::Running;
135+ } else {
136+ self.state = States::Paused;
137+ }
138+ }
139+
140+ fn exit(&mut self) {
141+ self.state = States::Quit;
142+ }
143+
144+ fn increment_counter(&mut self) {
145+ self.counter += 1;
146+ }
147+
148+ fn decrement_counter(&mut self) {
149+ self.counter -= 1;
150+ }
151+}
152+
153+
154+fn main() -> io::Result<()> {
155+ ratatui::run(|terminal| App::default().run(terminal))
156+}