steid

@jamesgill /

feat: topcoat skeleton serving a page

Replace the cargo-init stub with a minimal Topcoat app: router discovery,
a single page at /, and one component. Verified serving on 127.0.0.1:3000.

Topcoat 0.5 requires rustc >= 1.95; cargo silently resolves to an empty
topcoat v0.0.0 placeholder on older toolchains rather than failing, so the
local stable toolchain was updated to 1.97.1.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
JamesPatrickGill authored 1 month agoparentab7fea9Browse filese6f48749158ce0852f2f4e6301ee9d1b1e593cb7

3 files changed+2177 −2

Cargo.lock+2141 −0View file
@@ -2,6 +2,2147 @@
22 # It is not intended for manual editing.
33 version = 4
44
5+[[package]]
6+name = "adler2"
7+version = "2.0.1"
8+source = "registry+https://github.com/rust-lang/crates.io-index"
9+checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
10+
11+[[package]]
12+name = "aead"
13+version = "0.5.2"
14+source = "registry+https://github.com/rust-lang/crates.io-index"
15+checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0"
16+dependencies = [
17+ "crypto-common 0.1.7",
18+ "generic-array",
19+]
20+
21+[[package]]
22+name = "aes"
23+version = "0.8.4"
24+source = "registry+https://github.com/rust-lang/crates.io-index"
25+checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"
26+dependencies = [
27+ "cfg-if",
28+ "cipher",
29+ "cpufeatures 0.2.17",
30+]
31+
32+[[package]]
33+name = "aes-gcm"
34+version = "0.10.3"
35+source = "registry+https://github.com/rust-lang/crates.io-index"
36+checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1"
37+dependencies = [
38+ "aead",
39+ "aes",
40+ "cipher",
41+ "ctr",
42+ "ghash",
43+ "subtle",
44+]
45+
46+[[package]]
47+name = "alloc-no-stdlib"
48+version = "2.0.4"
49+source = "registry+https://github.com/rust-lang/crates.io-index"
50+checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
51+
52+[[package]]
53+name = "alloc-stdlib"
54+version = "0.2.4"
55+source = "registry+https://github.com/rust-lang/crates.io-index"
56+checksum = "0e76a019e91224d279006ff972f1e984179a6e9feb050adba6ce8274aef23195"
57+dependencies = [
58+ "alloc-no-stdlib",
59+]
60+
61+[[package]]
62+name = "allocator-api2"
63+version = "0.2.21"
64+source = "registry+https://github.com/rust-lang/crates.io-index"
65+checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
66+
67+[[package]]
68+name = "anyhow"
69+version = "1.0.104"
70+source = "registry+https://github.com/rust-lang/crates.io-index"
71+checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470"
72+
73+[[package]]
74+name = "anymap3"
75+version = "1.1.0"
76+source = "registry+https://github.com/rust-lang/crates.io-index"
77+checksum = "fb5dfbc6d8d2675589ccbe4d0fd61df2419075625f8c1a62325e718e2b0049f9"
78+
79+[[package]]
80+name = "async-compression"
81+version = "0.4.43"
82+source = "registry+https://github.com/rust-lang/crates.io-index"
83+checksum = "3976abdc8fe7d1133d43d304afd42abdf5bc3e1319d263d223bde07b5efc4be8"
84+dependencies = [
85+ "compression-codecs",
86+ "compression-core",
87+ "pin-project-lite",
88+ "tokio",
89+]
90+
91+[[package]]
92+name = "atomic-waker"
93+version = "1.1.2"
94+source = "registry+https://github.com/rust-lang/crates.io-index"
95+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
96+
97+[[package]]
98+name = "base64"
99+version = "0.22.1"
100+source = "registry+https://github.com/rust-lang/crates.io-index"
101+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
102+
103+[[package]]
104+name = "base64"
105+version = "0.23.0"
106+source = "registry+https://github.com/rust-lang/crates.io-index"
107+checksum = "b25655df2c3cdd83c5e5b293b88acd880332b2ddadd7c30ac43144fdc0033da9"
108+
109+[[package]]
110+name = "bitflags"
111+version = "2.13.1"
112+source = "registry+https://github.com/rust-lang/crates.io-index"
113+checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da"
114+
115+[[package]]
116+name = "block-buffer"
117+version = "0.10.4"
118+source = "registry+https://github.com/rust-lang/crates.io-index"
119+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
120+dependencies = [
121+ "generic-array",
122+]
123+
124+[[package]]
125+name = "block-buffer"
126+version = "0.12.1"
127+source = "registry+https://github.com/rust-lang/crates.io-index"
128+checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa"
129+dependencies = [
130+ "hybrid-array",
131+]
132+
133+[[package]]
134+name = "boxcar"
135+version = "0.2.14"
136+source = "registry+https://github.com/rust-lang/crates.io-index"
137+checksum = "36f64beae40a84da1b4b26ff2761a5b895c12adc41dc25aaee1c4f2bbfe97a6e"
138+
139+[[package]]
140+name = "brotli"
141+version = "8.0.4"
142+source = "registry+https://github.com/rust-lang/crates.io-index"
143+checksum = "5cc91aac060a7a1e25823bdccbfb6af1875b88f17c6daac97894eed8207166b3"
144+dependencies = [
145+ "alloc-no-stdlib",
146+ "alloc-stdlib",
147+ "brotli-decompressor",
148+]
149+
150+[[package]]
151+name = "brotli-decompressor"
152+version = "5.0.3"
153+source = "registry+https://github.com/rust-lang/crates.io-index"
154+checksum = "3a32acac15fe1967bc3986b2a6347dffc965602354ea6f450ad07e8bfd253583"
155+dependencies = [
156+ "alloc-no-stdlib",
157+ "alloc-stdlib",
158+]
159+
160+[[package]]
161+name = "bumpalo"
162+version = "3.20.3"
163+source = "registry+https://github.com/rust-lang/crates.io-index"
164+checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
165+
166+[[package]]
167+name = "bytes"
168+version = "1.12.1"
169+source = "registry+https://github.com/rust-lang/crates.io-index"
170+checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
171+
172+[[package]]
173+name = "cfg-if"
174+version = "1.0.4"
175+source = "registry+https://github.com/rust-lang/crates.io-index"
176+checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
177+
178+[[package]]
179+name = "cipher"
180+version = "0.4.4"
181+source = "registry+https://github.com/rust-lang/crates.io-index"
182+checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
183+dependencies = [
184+ "crypto-common 0.1.7",
185+ "inout",
186+]
187+
188+[[package]]
189+name = "compression-codecs"
190+version = "0.4.38"
191+source = "registry+https://github.com/rust-lang/crates.io-index"
192+checksum = "ce2548391e9c1929c21bf6aa2680af86fe4c1b33e6cea9ac1cfeec0bd11218cf"
193+dependencies = [
194+ "brotli",
195+ "compression-core",
196+ "flate2",
197+ "memchr",
198+]
199+
200+[[package]]
201+name = "compression-core"
202+version = "0.4.32"
203+source = "registry+https://github.com/rust-lang/crates.io-index"
204+checksum = "cc14f565cf027a105f7a44ccf9e5b424348421a1d8952a8fc9d499d313107789"
205+
206+[[package]]
207+name = "const-oid"
208+version = "0.10.2"
209+source = "registry+https://github.com/rust-lang/crates.io-index"
210+checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c"
211+
212+[[package]]
213+name = "cookie"
214+version = "0.18.1"
215+source = "registry+https://github.com/rust-lang/crates.io-index"
216+checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747"
217+dependencies = [
218+ "aes-gcm",
219+ "base64 0.22.1",
220+ "hkdf",
221+ "hmac",
222+ "percent-encoding",
223+ "rand 0.8.7",
224+ "sha2 0.10.9",
225+ "subtle",
226+ "time",
227+ "version_check",
228+]
229+
230+[[package]]
231+name = "cpufeatures"
232+version = "0.2.17"
233+source = "registry+https://github.com/rust-lang/crates.io-index"
234+checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
235+dependencies = [
236+ "libc",
237+]
238+
239+[[package]]
240+name = "cpufeatures"
241+version = "0.3.0"
242+source = "registry+https://github.com/rust-lang/crates.io-index"
243+checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201"
244+dependencies = [
245+ "libc",
246+]
247+
248+[[package]]
249+name = "crc32fast"
250+version = "1.5.0"
251+source = "registry+https://github.com/rust-lang/crates.io-index"
252+checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
253+dependencies = [
254+ "cfg-if",
255+]
256+
257+[[package]]
258+name = "crypto-common"
259+version = "0.1.7"
260+source = "registry+https://github.com/rust-lang/crates.io-index"
261+checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
262+dependencies = [
263+ "generic-array",
264+ "rand_core 0.6.4",
265+ "typenum",
266+]
267+
268+[[package]]
269+name = "crypto-common"
270+version = "0.2.2"
271+source = "registry+https://github.com/rust-lang/crates.io-index"
272+checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453"
273+dependencies = [
274+ "hybrid-array",
275+]
276+
277+[[package]]
278+name = "ctr"
279+version = "0.9.2"
280+source = "registry+https://github.com/rust-lang/crates.io-index"
281+checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835"
282+dependencies = [
283+ "cipher",
284+]
285+
286+[[package]]
287+name = "data-encoding"
288+version = "2.11.0"
289+source = "registry+https://github.com/rust-lang/crates.io-index"
290+checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8"
291+
292+[[package]]
293+name = "deranged"
294+version = "0.5.8"
295+source = "registry+https://github.com/rust-lang/crates.io-index"
296+checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
297+
298+[[package]]
299+name = "digest"
300+version = "0.10.7"
301+source = "registry+https://github.com/rust-lang/crates.io-index"
302+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
303+dependencies = [
304+ "block-buffer 0.10.4",
305+ "crypto-common 0.1.7",
306+ "subtle",
307+]
308+
309+[[package]]
310+name = "digest"
311+version = "0.11.3"
312+source = "registry+https://github.com/rust-lang/crates.io-index"
313+checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2"
314+dependencies = [
315+ "block-buffer 0.12.1",
316+ "const-oid",
317+ "crypto-common 0.2.2",
318+]
319+
320+[[package]]
321+name = "displaydoc"
322+version = "0.2.7"
323+source = "registry+https://github.com/rust-lang/crates.io-index"
324+checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8"
325+dependencies = [
326+ "proc-macro2",
327+ "quote",
328+ "syn 3.0.3",
329+]
330+
331+[[package]]
332+name = "email-encoding"
333+version = "0.4.2"
334+source = "registry+https://github.com/rust-lang/crates.io-index"
335+checksum = "420b9da095f052ea597503e39073b5b3c522f7db933fbac202d91d24492693fd"
336+dependencies = [
337+ "base64 0.23.0",
338+ "memchr",
339+]
340+
341+[[package]]
342+name = "email_address"
343+version = "0.2.9"
344+source = "registry+https://github.com/rust-lang/crates.io-index"
345+checksum = "e079f19b08ca6239f47f8ba8509c11cf3ea30095831f7fed61441475edd8c449"
346+
347+[[package]]
348+name = "equivalent"
349+version = "1.0.2"
350+source = "registry+https://github.com/rust-lang/crates.io-index"
351+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
352+
353+[[package]]
354+name = "errno"
355+version = "0.3.14"
356+source = "registry+https://github.com/rust-lang/crates.io-index"
357+checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
358+dependencies = [
359+ "libc",
360+ "windows-sys",
361+]
362+
363+[[package]]
364+name = "fastrand"
365+version = "2.5.0"
366+source = "registry+https://github.com/rust-lang/crates.io-index"
367+checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223"
368+
369+[[package]]
370+name = "flate2"
371+version = "1.1.9"
372+source = "registry+https://github.com/rust-lang/crates.io-index"
373+checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
374+dependencies = [
375+ "crc32fast",
376+ "miniz_oxide",
377+]
378+
379+[[package]]
380+name = "fnv"
381+version = "1.0.7"
382+source = "registry+https://github.com/rust-lang/crates.io-index"
383+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
384+
385+[[package]]
386+name = "foldhash"
387+version = "0.2.0"
388+source = "registry+https://github.com/rust-lang/crates.io-index"
389+checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
390+
391+[[package]]
392+name = "form_urlencoded"
393+version = "1.2.2"
394+source = "registry+https://github.com/rust-lang/crates.io-index"
395+checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
396+dependencies = [
397+ "percent-encoding",
398+]
399+
400+[[package]]
401+name = "futures-channel"
402+version = "0.3.33"
403+source = "registry+https://github.com/rust-lang/crates.io-index"
404+checksum = "262590f4fe6afeb0bc83be1daa64e52657fe185690a958af7f3ad0e92085c5ae"
405+dependencies = [
406+ "futures-core",
407+]
408+
409+[[package]]
410+name = "futures-core"
411+version = "0.3.33"
412+source = "registry+https://github.com/rust-lang/crates.io-index"
413+checksum = "2cd50c473c80f6d7c3670a752354b8e569b1a7cbfdc0419ec88e5edad85e0dc7"
414+
415+[[package]]
416+name = "futures-macro"
417+version = "0.3.33"
418+source = "registry+https://github.com/rust-lang/crates.io-index"
419+checksum = "2d6d3cde68c518367be28956066ddfef33813991b77a55005a69dae04bf3b10b"
420+dependencies = [
421+ "proc-macro2",
422+ "quote",
423+ "syn 2.0.119",
424+]
425+
426+[[package]]
427+name = "futures-sink"
428+version = "0.3.33"
429+source = "registry+https://github.com/rust-lang/crates.io-index"
430+checksum = "e34418ac499d6305c2fb5ad0ed2f6ac998c5f8ca209b4510f7f94242c647e307"
431+
432+[[package]]
433+name = "futures-task"
434+version = "0.3.33"
435+source = "registry+https://github.com/rust-lang/crates.io-index"
436+checksum = "b231ed28831efb4a61a08580c4bc233ec56bc009f4cd8f52da2c3cb97df0c109"
437+
438+[[package]]
439+name = "futures-util"
440+version = "0.3.33"
441+source = "registry+https://github.com/rust-lang/crates.io-index"
442+checksum = "a77a90a256fce34da66415271e30f94ee91c57b04b8a2c042d9cf3220179deaa"
443+dependencies = [
444+ "futures-core",
445+ "futures-macro",
446+ "futures-sink",
447+ "futures-task",
448+ "pin-project-lite",
449+ "slab",
450+]
451+
452+[[package]]
453+name = "generic-array"
454+version = "0.14.7"
455+source = "registry+https://github.com/rust-lang/crates.io-index"
456+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
457+dependencies = [
458+ "typenum",
459+ "version_check",
460+]
461+
462+[[package]]
463+name = "getrandom"
464+version = "0.2.17"
465+source = "registry+https://github.com/rust-lang/crates.io-index"
466+checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
467+dependencies = [
468+ "cfg-if",
469+ "js-sys",
470+ "libc",
471+ "wasi",
472+ "wasm-bindgen",
473+]
474+
475+[[package]]
476+name = "getrandom"
477+version = "0.3.4"
478+source = "registry+https://github.com/rust-lang/crates.io-index"
479+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
480+dependencies = [
481+ "cfg-if",
482+ "libc",
483+ "r-efi 5.3.0",
484+ "wasip2",
485+]
486+
487+[[package]]
488+name = "getrandom"
489+version = "0.4.3"
490+source = "registry+https://github.com/rust-lang/crates.io-index"
491+checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
492+dependencies = [
493+ "cfg-if",
494+ "js-sys",
495+ "libc",
496+ "r-efi 6.0.0",
497+ "wasm-bindgen",
498+]
499+
500+[[package]]
501+name = "ghash"
502+version = "0.5.1"
503+source = "registry+https://github.com/rust-lang/crates.io-index"
504+checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1"
505+dependencies = [
506+ "opaque-debug",
507+ "polyval",
508+]
509+
510+[[package]]
511+name = "h2"
512+version = "0.4.15"
513+source = "registry+https://github.com/rust-lang/crates.io-index"
514+checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155"
515+dependencies = [
516+ "atomic-waker",
517+ "bytes",
518+ "fnv",
519+ "futures-core",
520+ "futures-sink",
521+ "http",
522+ "indexmap",
523+ "slab",
524+ "tokio",
525+ "tokio-util",
526+ "tracing",
527+]
528+
529+[[package]]
530+name = "hashbrown"
531+version = "0.17.1"
532+source = "registry+https://github.com/rust-lang/crates.io-index"
533+checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
534+dependencies = [
535+ "allocator-api2",
536+ "equivalent",
537+ "foldhash",
538+]
539+
540+[[package]]
541+name = "heck"
542+version = "0.5.0"
543+source = "registry+https://github.com/rust-lang/crates.io-index"
544+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
545+
546+[[package]]
547+name = "hkdf"
548+version = "0.12.4"
549+source = "registry+https://github.com/rust-lang/crates.io-index"
550+checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7"
551+dependencies = [
552+ "hmac",
553+]
554+
555+[[package]]
556+name = "hmac"
557+version = "0.12.1"
558+source = "registry+https://github.com/rust-lang/crates.io-index"
559+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
560+dependencies = [
561+ "digest 0.10.7",
562+]
563+
564+[[package]]
565+name = "hostname"
566+version = "0.4.2"
567+source = "registry+https://github.com/rust-lang/crates.io-index"
568+checksum = "617aaa3557aef3810a6369d0a99fac8a080891b68bd9f9812a1eeda0c0730cbd"
569+dependencies = [
570+ "cfg-if",
571+ "libc",
572+ "windows-link",
573+]
574+
575+[[package]]
576+name = "http"
577+version = "1.5.0"
578+source = "registry+https://github.com/rust-lang/crates.io-index"
579+checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0"
580+dependencies = [
581+ "bytes",
582+ "itoa",
583+]
584+
585+[[package]]
586+name = "http-body"
587+version = "1.1.0"
588+source = "registry+https://github.com/rust-lang/crates.io-index"
589+checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c"
590+dependencies = [
591+ "bytes",
592+ "http",
593+]
594+
595+[[package]]
596+name = "http-body-util"
597+version = "0.1.4"
598+source = "registry+https://github.com/rust-lang/crates.io-index"
599+checksum = "e9f41fd6a08e4d4ec69df65976da761afd5ad5e58a9d4acb46bd1c953a9e3ff2"
600+dependencies = [
601+ "bytes",
602+ "futures-core",
603+ "http",
604+ "http-body",
605+ "pin-project-lite",
606+]
607+
608+[[package]]
609+name = "httparse"
610+version = "1.10.1"
611+source = "registry+https://github.com/rust-lang/crates.io-index"
612+checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
613+
614+[[package]]
615+name = "httpdate"
616+version = "1.0.3"
617+source = "registry+https://github.com/rust-lang/crates.io-index"
618+checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
619+
620+[[package]]
621+name = "hybrid-array"
622+version = "0.4.14"
623+source = "registry+https://github.com/rust-lang/crates.io-index"
624+checksum = "707114b52a152fa7bdb290cd7cd5912d9467273b6d74e21b8d81aca1f8533f6b"
625+dependencies = [
626+ "typenum",
627+]
628+
629+[[package]]
630+name = "hyper"
631+version = "1.11.0"
632+source = "registry+https://github.com/rust-lang/crates.io-index"
633+checksum = "d22053281f852e11534f5198498373cbb59295120a20771d90f7ed1897490a72"
634+dependencies = [
635+ "atomic-waker",
636+ "bytes",
637+ "futures-channel",
638+ "futures-core",
639+ "h2",
640+ "http",
641+ "http-body",
642+ "httparse",
643+ "httpdate",
644+ "itoa",
645+ "pin-project-lite",
646+ "smallvec",
647+ "tokio",
648+]
649+
650+[[package]]
651+name = "hyper-util"
652+version = "0.1.20"
653+source = "registry+https://github.com/rust-lang/crates.io-index"
654+checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"
655+dependencies = [
656+ "bytes",
657+ "http",
658+ "http-body",
659+ "hyper",
660+ "pin-project-lite",
661+ "tokio",
662+]
663+
664+[[package]]
665+name = "icu_collections"
666+version = "2.2.0"
667+source = "registry+https://github.com/rust-lang/crates.io-index"
668+checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c"
669+dependencies = [
670+ "displaydoc",
671+ "potential_utf",
672+ "utf8_iter",
673+ "yoke",
674+ "zerofrom",
675+ "zerovec",
676+]
677+
678+[[package]]
679+name = "icu_locale_core"
680+version = "2.2.0"
681+source = "registry+https://github.com/rust-lang/crates.io-index"
682+checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29"
683+dependencies = [
684+ "displaydoc",
685+ "litemap",
686+ "tinystr",
687+ "writeable",
688+ "zerovec",
689+]
690+
691+[[package]]
692+name = "icu_normalizer"
693+version = "2.2.0"
694+source = "registry+https://github.com/rust-lang/crates.io-index"
695+checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4"
696+dependencies = [
697+ "icu_collections",
698+ "icu_normalizer_data",
699+ "icu_properties",
700+ "icu_provider",
701+ "smallvec",
702+ "zerovec",
703+]
704+
705+[[package]]
706+name = "icu_normalizer_data"
707+version = "2.2.0"
708+source = "registry+https://github.com/rust-lang/crates.io-index"
709+checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38"
710+
711+[[package]]
712+name = "icu_properties"
713+version = "2.2.0"
714+source = "registry+https://github.com/rust-lang/crates.io-index"
715+checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de"
716+dependencies = [
717+ "icu_collections",
718+ "icu_locale_core",
719+ "icu_properties_data",
720+ "icu_provider",
721+ "zerotrie",
722+ "zerovec",
723+]
724+
725+[[package]]
726+name = "icu_properties_data"
727+version = "2.2.0"
728+source = "registry+https://github.com/rust-lang/crates.io-index"
729+checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14"
730+
731+[[package]]
732+name = "icu_provider"
733+version = "2.2.0"
734+source = "registry+https://github.com/rust-lang/crates.io-index"
735+checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421"
736+dependencies = [
737+ "displaydoc",
738+ "icu_locale_core",
739+ "writeable",
740+ "yoke",
741+ "zerofrom",
742+ "zerotrie",
743+ "zerovec",
744+]
745+
746+[[package]]
747+name = "idna"
748+version = "1.1.0"
749+source = "registry+https://github.com/rust-lang/crates.io-index"
750+checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
751+dependencies = [
752+ "idna_adapter",
753+ "smallvec",
754+ "utf8_iter",
755+]
756+
757+[[package]]
758+name = "idna_adapter"
759+version = "1.2.2"
760+source = "registry+https://github.com/rust-lang/crates.io-index"
761+checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714"
762+dependencies = [
763+ "icu_normalizer",
764+ "icu_properties",
765+]
766+
767+[[package]]
768+name = "indexmap"
769+version = "2.14.0"
770+source = "registry+https://github.com/rust-lang/crates.io-index"
771+checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
772+dependencies = [
773+ "equivalent",
774+ "hashbrown",
775+]
776+
777+[[package]]
778+name = "inout"
779+version = "0.1.4"
780+source = "registry+https://github.com/rust-lang/crates.io-index"
781+checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01"
782+dependencies = [
783+ "generic-array",
784+]
785+
786+[[package]]
787+name = "inventory"
788+version = "0.3.24"
789+source = "registry+https://github.com/rust-lang/crates.io-index"
790+checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b"
791+dependencies = [
792+ "rustversion",
793+]
794+
795+[[package]]
796+name = "itoa"
797+version = "1.0.18"
798+source = "registry+https://github.com/rust-lang/crates.io-index"
799+checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
800+
801+[[package]]
802+name = "js-sys"
803+version = "0.3.103"
804+source = "registry+https://github.com/rust-lang/crates.io-index"
805+checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102"
806+dependencies = [
807+ "cfg-if",
808+ "futures-util",
809+ "wasm-bindgen",
810+]
811+
812+[[package]]
813+name = "lettre"
814+version = "0.11.22"
815+source = "registry+https://github.com/rust-lang/crates.io-index"
816+checksum = "0da65617f6cb926332d039cb578aad56178da86e128db6a1b09f4c94fa5b3349"
817+dependencies = [
818+ "email-encoding",
819+ "email_address",
820+ "fastrand",
821+ "hostname",
822+ "httpdate",
823+ "idna",
824+ "mime",
825+ "nom",
826+ "quoted_printable",
827+]
828+
829+[[package]]
830+name = "libc"
831+version = "0.2.189"
832+source = "registry+https://github.com/rust-lang/crates.io-index"
833+checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
834+
835+[[package]]
836+name = "litemap"
837+version = "0.8.2"
838+source = "registry+https://github.com/rust-lang/crates.io-index"
839+checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0"
840+
841+[[package]]
842+name = "log"
843+version = "0.4.33"
844+source = "registry+https://github.com/rust-lang/crates.io-index"
845+checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
846+
847+[[package]]
848+name = "matchit"
849+version = "0.9.2"
850+source = "registry+https://github.com/rust-lang/crates.io-index"
851+checksum = "8863b587001c1b9a8a4e36008cebc6b3612cb1226fe2de94858e06092687b608"
852+
853+[[package]]
854+name = "memchr"
855+version = "2.8.3"
856+source = "registry+https://github.com/rust-lang/crates.io-index"
857+checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
858+
859+[[package]]
860+name = "mime"
861+version = "0.3.17"
862+source = "registry+https://github.com/rust-lang/crates.io-index"
863+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
864+
865+[[package]]
866+name = "miniz_oxide"
867+version = "0.8.9"
868+source = "registry+https://github.com/rust-lang/crates.io-index"
869+checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
870+dependencies = [
871+ "adler2",
872+ "simd-adler32",
873+]
874+
875+[[package]]
876+name = "mio"
877+version = "1.2.2"
878+source = "registry+https://github.com/rust-lang/crates.io-index"
879+checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427"
880+dependencies = [
881+ "libc",
882+ "wasi",
883+ "windows-sys",
884+]
885+
886+[[package]]
887+name = "nom"
888+version = "8.0.0"
889+source = "registry+https://github.com/rust-lang/crates.io-index"
890+checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405"
891+dependencies = [
892+ "memchr",
893+]
894+
895+[[package]]
896+name = "num-conv"
897+version = "0.2.2"
898+source = "registry+https://github.com/rust-lang/crates.io-index"
899+checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441"
900+
901+[[package]]
902+name = "once_cell"
903+version = "1.21.4"
904+source = "registry+https://github.com/rust-lang/crates.io-index"
905+checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
906+
907+[[package]]
908+name = "opaque-debug"
909+version = "0.3.1"
910+source = "registry+https://github.com/rust-lang/crates.io-index"
911+checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"
912+
913+[[package]]
914+name = "percent-encoding"
915+version = "2.3.2"
916+source = "registry+https://github.com/rust-lang/crates.io-index"
917+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
918+
919+[[package]]
920+name = "pin-project-lite"
921+version = "0.2.17"
922+source = "registry+https://github.com/rust-lang/crates.io-index"
923+checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
924+
925+[[package]]
926+name = "polyval"
927+version = "0.6.2"
928+source = "registry+https://github.com/rust-lang/crates.io-index"
929+checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25"
930+dependencies = [
931+ "cfg-if",
932+ "cpufeatures 0.2.17",
933+ "opaque-debug",
934+ "universal-hash",
935+]
936+
937+[[package]]
938+name = "potential_utf"
939+version = "0.1.5"
940+source = "registry+https://github.com/rust-lang/crates.io-index"
941+checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564"
942+dependencies = [
943+ "zerovec",
944+]
945+
946+[[package]]
947+name = "powerfmt"
948+version = "0.2.0"
949+source = "registry+https://github.com/rust-lang/crates.io-index"
950+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
951+
952+[[package]]
953+name = "ppv-lite86"
954+version = "0.2.21"
955+source = "registry+https://github.com/rust-lang/crates.io-index"
956+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
957+dependencies = [
958+ "zerocopy",
959+]
960+
961+[[package]]
962+name = "proc-macro-crate"
963+version = "3.5.0"
964+source = "registry+https://github.com/rust-lang/crates.io-index"
965+checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"
966+dependencies = [
967+ "toml_edit",
968+]
969+
970+[[package]]
971+name = "proc-macro2"
972+version = "1.0.107"
973+source = "registry+https://github.com/rust-lang/crates.io-index"
974+checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
975+dependencies = [
976+ "unicode-ident",
977+]
978+
979+[[package]]
980+name = "quote"
981+version = "1.0.47"
982+source = "registry+https://github.com/rust-lang/crates.io-index"
983+checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
984+dependencies = [
985+ "proc-macro2",
986+]
987+
988+[[package]]
989+name = "quoted_printable"
990+version = "0.5.2"
991+source = "registry+https://github.com/rust-lang/crates.io-index"
992+checksum = "478e0585659a122aa407eb7e3c0e1fa51b1d8a870038bd29f0cf4a8551eea972"
993+
994+[[package]]
995+name = "r-efi"
996+version = "5.3.0"
997+source = "registry+https://github.com/rust-lang/crates.io-index"
998+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
999+
1000+[[package]]

Showing the first 1000 lines of 2148. View the whole file at this revision.

Cargo.toml+2 −0View file
@@ -4,3 +4,5 @@ version = "0.1.0"
44 edition = "2024"
55
66 [dependencies]
7+tokio = { version = "1.53.1", features = ["rt-multi-thread", "macros"] }
8+topcoat = "0.5.0"
src/main.rs+34 −2View file
@@ -1,3 +1,35 @@
1fn main() {
2 println!("Hello, world!");
1+use topcoat::{
2+ Result,
3+ router::{Router, RouterBuilderDiscoverExt, page},
4+ view::{component, view},
5+};
6+
7+#[tokio::main]
8+async fn main() {
9+ topcoat::start(Router::builder().discover().build())
10+ .await
11+ .unwrap();
12+}
13+
14+#[page("/")]
15+async fn home() -> Result {
16+ view! {
17+ <!DOCTYPE html>
18+ <html>
19+ <head>
20+ <title>"steid"</title>
21+ topcoat::dev::script()
22+ </head>
23+ <body>
24+ heading(name: "steid")
25+ </body>
26+ </html>
27+ }
28+}
29+
30+#[component]
31+async fn heading(name: &str) -> Result {
32+ view! {
33+ <h1>(name)</h1>
34+ }
335 }