dioxus server

Orual d85fcef4 41e905e3

+3409 -1403
+2928 -105
Cargo.lock
··· 159 checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16" 160 161 [[package]] 162 name = "async-compression" 163 version = "0.4.32" 164 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 172 ] 173 174 [[package]] 175 name = "async-lock" 176 version = "3.4.1" 177 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 183 ] 184 185 [[package]] 186 name = "async-trait" 187 version = "0.1.89" 188 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 194 ] 195 196 [[package]] 197 name = "atomic-waker" 198 version = "1.1.2" 199 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 231 "http-body-util", 232 "hyper", 233 "hyper-util", 234 - "itoa", 235 "matchit", 236 "memchr 2.7.6", 237 "mime", ··· 367 version = "2.10.0" 368 source = "registry+https://github.com/rust-lang/crates.io-index" 369 checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" 370 371 [[package]] 372 name = "block-buffer" ··· 375 checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 376 dependencies = [ 377 "generic-array", 378 ] 379 380 [[package]] ··· 504 ] 505 506 [[package]] 507 name = "cbor4ii" 508 version = "0.2.14" 509 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 538 version = "1.1.0" 539 source = "registry+https://github.com/rust-lang/crates.io-index" 540 checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 541 542 [[package]] 543 name = "cfg-if" ··· 685 ] 686 687 [[package]] 688 name = "colorchoice" 689 version = "1.0.4" 690 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 749 ] 750 751 [[package]] 752 name = "const-oid" 753 version = "0.9.6" 754 source = "registry+https://github.com/rust-lang/crates.io-index" 755 checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" 756 757 [[package]] 758 name = "const-str" 759 version = "0.4.3" 760 source = "registry+https://github.com/rust-lang/crates.io-index" 761 checksum = "2f421161cb492475f1661ddc9815a745a1c894592070661180fdec3d4872e9c3" 762 763 [[package]] 764 name = "cookie" 765 version = "0.18.1" 766 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 808 checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 809 810 [[package]] 811 name = "core2" 812 version = "0.4.0" 813 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 897 ] 898 899 [[package]] 900 name = "curve25519-dalek" 901 version = "4.1.3" 902 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 995 996 [[package]] 997 name = "dashmap" 998 version = "6.1.0" 999 source = "registry+https://github.com/rust-lang/crates.io-index" 1000 checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" ··· 1084 1085 [[package]] 1086 name = "derive_more" 1087 version = "1.0.0" 1088 source = "registry+https://github.com/rust-lang/crates.io-index" 1089 checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" ··· 1119 "byteorder", 1120 "chrono", 1121 "diesel_derives", 1122 - "itoa", 1123 "libsqlite3-sys", 1124 "pq-sys", 1125 "serde_json", ··· 1187 ] 1188 1189 [[package]] 1190 name = "dirs" 1191 version = "6.0.0" 1192 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1208 ] 1209 1210 [[package]] 1211 name = "displaydoc" 1212 version = "0.2.5" 1213 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1219 ] 1220 1221 [[package]] 1222 name = "dotenvy" 1223 version = "0.15.7" 1224 source = "registry+https://github.com/rust-lang/crates.io-index" 1225 checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" 1226 1227 [[package]] 1228 name = "dsl_auto_type" ··· 1239 ] 1240 1241 [[package]] 1242 name = "dyn-clone" 1243 version = "1.0.20" 1244 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1347 ] 1348 1349 [[package]] 1350 name = "enum-as-inner" 1351 version = "0.6.1" 1352 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1359 ] 1360 1361 [[package]] 1362 name = "equivalent" 1363 version = "1.0.2" 1364 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1372 dependencies = [ 1373 "libc", 1374 "windows-sys 0.61.2", 1375 ] 1376 1377 [[package]] ··· 1419 checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 1420 1421 [[package]] 1422 name = "ff" 1423 version = "0.13.1" 1424 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1433 version = "0.2.9" 1434 source = "registry+https://github.com/rust-lang/crates.io-index" 1435 checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" 1436 1437 [[package]] 1438 name = "filetime" ··· 1496 source = "registry+https://github.com/rust-lang/crates.io-index" 1497 checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 1498 dependencies = [ 1499 - "foreign-types-shared", 1500 ] 1501 1502 [[package]] ··· 1506 checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 1507 1508 [[package]] 1509 name = "form_urlencoded" 1510 version = "1.2.2" 1511 source = "registry+https://github.com/rust-lang/crates.io-index" 1512 checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" 1513 dependencies = [ 1514 "percent-encoding", 1515 - ] 1516 - 1517 - [[package]] 1518 - name = "fsevent-sys" 1519 - version = "4.1.0" 1520 - source = "registry+https://github.com/rust-lang/crates.io-index" 1521 - checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" 1522 - dependencies = [ 1523 - "libc", 1524 ] 1525 1526 [[package]] ··· 1649 ] 1650 1651 [[package]] 1652 name = "generator" 1653 version = "0.8.7" 1654 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1659 "libc", 1660 "log", 1661 "rustversion", 1662 - "windows", 1663 ] 1664 1665 [[package]] ··· 1685 1686 [[package]] 1687 name = "getrandom" 1688 version = "0.2.16" 1689 source = "registry+https://github.com/rust-lang/crates.io-index" 1690 checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" ··· 1692 "cfg-if 1.0.4", 1693 "js-sys", 1694 "libc", 1695 - "wasi", 1696 "wasm-bindgen", 1697 ] 1698 ··· 1717 checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" 1718 1719 [[package]] 1720 name = "globset" 1721 version = "0.4.18" 1722 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1730 ] 1731 1732 [[package]] 1733 name = "group" 1734 version = "0.13.0" 1735 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1741 ] 1742 1743 [[package]] 1744 name = "gzip-header" 1745 version = "1.0.0" 1746 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1928 1929 [[package]] 1930 name = "html5ever" 1931 version = "0.27.0" 1932 source = "registry+https://github.com/rust-lang/crates.io-index" 1933 checksum = "c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4" 1934 dependencies = [ 1935 "log", 1936 "mac", 1937 - "markup5ever", 1938 "proc-macro2", 1939 "quote", 1940 "syn 2.0.108", ··· 1948 dependencies = [ 1949 "bytes", 1950 "fnv", 1951 - "itoa", 1952 ] 1953 1954 [[package]] ··· 2007 "http-body", 2008 "httparse", 2009 "httpdate", 2010 - "itoa", 2011 "pin-project-lite", 2012 "pin-utils", 2013 "smallvec", ··· 2255 ] 2256 2257 [[package]] 2258 - name = "inotify" 2259 version = "0.11.0" 2260 source = "registry+https://github.com/rust-lang/crates.io-index" 2261 - checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" 2262 dependencies = [ 2263 - "bitflags 2.10.0", 2264 - "inotify-sys", 2265 - "libc", 2266 - ] 2267 - 2268 - [[package]] 2269 - name = "inotify-sys" 2270 - version = "0.1.5" 2271 - source = "registry+https://github.com/rust-lang/crates.io-index" 2272 - checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" 2273 - dependencies = [ 2274 - "libc", 2275 ] 2276 2277 [[package]] ··· 2284 "once_cell", 2285 "serde", 2286 "similar", 2287 ] 2288 2289 [[package]] ··· 2345 version = "1.70.2" 2346 source = "registry+https://github.com/rust-lang/crates.io-index" 2347 checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" 2348 2349 [[package]] 2350 name = "itoa" ··· 2509 source = "git+https://tangled.org/@nonbinary.computer/jacquard#10d719d2a2c459ab562b2be6fecdfe11f52b521c" 2510 dependencies = [ 2511 "cid", 2512 - "dashmap", 2513 "heck 0.5.0", 2514 "inventory", 2515 "jacquard-common", ··· 2537 "base64 0.22.1", 2538 "bytes", 2539 "chrono", 2540 - "dashmap", 2541 "elliptic-curve", 2542 "http", 2543 "jacquard-common", ··· 2563 ] 2564 2565 [[package]] 2566 name = "jni" 2567 version = "0.21.1" 2568 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2697 ] 2698 2699 [[package]] 2700 - name = "kqueue" 2701 - version = "1.1.1" 2702 source = "registry+https://github.com/rust-lang/crates.io-index" 2703 - checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" 2704 dependencies = [ 2705 - "kqueue-sys", 2706 - "libc", 2707 ] 2708 2709 [[package]] 2710 - name = "kqueue-sys" 2711 - version = "1.0.4" 2712 source = "registry+https://github.com/rust-lang/crates.io-index" 2713 - checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" 2714 dependencies = [ 2715 - "bitflags 1.3.2", 2716 - "libc", 2717 ] 2718 2719 [[package]] ··· 2726 "static-regular-grammar", 2727 "thiserror 1.0.69", 2728 ] 2729 2730 [[package]] 2731 name = "lazy_static" ··· 2737 ] 2738 2739 [[package]] 2740 name = "libc" 2741 version = "0.2.177" 2742 source = "registry+https://github.com/rust-lang/crates.io-index" 2743 checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" 2744 2745 [[package]] 2746 name = "libm" ··· 2770 ] 2771 2772 [[package]] 2773 name = "linked-hash-map" 2774 version = "0.5.6" 2775 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2812 checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" 2813 2814 [[package]] 2815 name = "loom" 2816 version = "0.7.2" 2817 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2855 ] 2856 2857 [[package]] 2858 name = "markdown-weaver" 2859 version = "0.13.0" 2860 source = "git+https://github.com/rsform/markdown-weaver#46f3eee6c93118da84a5de3d25fef642735aedd2" ··· 2874 2875 [[package]] 2876 name = "markup5ever" 2877 version = "0.12.1" 2878 source = "registry+https://github.com/rust-lang/crates.io-index" 2879 checksum = "16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45" 2880 dependencies = [ 2881 "log", 2882 "phf 0.11.3", 2883 - "phf_codegen", 2884 "string_cache", 2885 "string_cache_codegen", 2886 "tendril", ··· 2892 source = "registry+https://github.com/rust-lang/crates.io-index" 2893 checksum = "edaa21ab3701bfee5099ade5f7e1f84553fd19228cf332f13cd6e964bf59be18" 2894 dependencies = [ 2895 - "html5ever", 2896 - "markup5ever", 2897 "tendril", 2898 "xml5ever", 2899 ] ··· 2919 ] 2920 2921 [[package]] 2922 name = "matchit" 2923 version = "0.8.4" 2924 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2959 checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" 2960 2961 [[package]] 2962 name = "miette" 2963 version = "5.10.0" 2964 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3091 checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" 3092 dependencies = [ 3093 "libc", 3094 - "log", 3095 - "wasi", 3096 "windows-sys 0.61.2", 3097 ] 3098 ··· 3118 ] 3119 3120 [[package]] 3121 name = "multibase" 3122 version = "0.9.2" 3123 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3165 checksum = "7bb0e5d99e681ab3c938842b96fcb41bf8a7bb4bfdb11ccbd653a7e83e06c794" 3166 dependencies = [ 3167 "cfg_aliases", 3168 - "derive_more", 3169 "futures-buffered", 3170 "futures-lite", 3171 "futures-util", ··· 3197 ] 3198 3199 [[package]] 3200 name = "ndk-context" 3201 version = "0.1.1" 3202 source = "registry+https://github.com/rust-lang/crates.io-index" 3203 checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" 3204 3205 [[package]] 3206 name = "new_debug_unreachable" 3207 version = "1.0.6" 3208 source = "registry+https://github.com/rust-lang/crates.io-index" 3209 checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" 3210 3211 [[package]] 3212 name = "nom" 3213 version = "3.2.1" 3214 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3226 "memchr 2.7.6", 3227 "minimal-lexical", 3228 ] 3229 - 3230 - [[package]] 3231 - name = "notify" 3232 - version = "8.2.0" 3233 - source = "registry+https://github.com/rust-lang/crates.io-index" 3234 - checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" 3235 - dependencies = [ 3236 - "bitflags 2.10.0", 3237 - "fsevent-sys", 3238 - "inotify", 3239 - "kqueue", 3240 - "libc", 3241 - "log", 3242 - "mio", 3243 - "notify-types", 3244 - "walkdir", 3245 - "windows-sys 0.60.2", 3246 - ] 3247 - 3248 - [[package]] 3249 - name = "notify-types" 3250 - version = "2.0.0" 3251 - source = "registry+https://github.com/rust-lang/crates.io-index" 3252 - checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d" 3253 3254 [[package]] 3255 name = "nu-ansi-term" ··· 3324 ] 3325 3326 [[package]] 3327 name = "num_threads" 3328 version = "0.1.7" 3329 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3339 checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 3340 dependencies = [ 3341 "malloc_buf", 3342 ] 3343 3344 [[package]] ··· 3392 dependencies = [ 3393 "bitflags 2.10.0", 3394 "cfg-if 1.0.4", 3395 - "foreign-types", 3396 "libc", 3397 "once_cell", 3398 "openssl-macros", ··· 3444 ] 3445 3446 [[package]] 3447 name = "ouroboros" 3448 version = "0.18.5" 3449 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3498 ] 3499 3500 [[package]] 3501 name = "parking" 3502 version = "2.2.1" 3503 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3583 3584 [[package]] 3585 name = "phf" 3586 version = "0.11.3" 3587 source = "registry+https://github.com/rust-lang/crates.io-index" 3588 checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" ··· 3602 3603 [[package]] 3604 name = "phf_codegen" 3605 version = "0.11.3" 3606 source = "registry+https://github.com/rust-lang/crates.io-index" 3607 checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" 3608 dependencies = [ 3609 - "phf_generator", 3610 "phf_shared 0.11.3", 3611 ] 3612 3613 [[package]] 3614 name = "phf_generator" 3615 version = "0.11.3" 3616 source = "registry+https://github.com/rust-lang/crates.io-index" 3617 checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" ··· 3621 ] 3622 3623 [[package]] 3624 name = "phf_shared" 3625 version = "0.11.3" 3626 source = "registry+https://github.com/rust-lang/crates.io-index" 3627 checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" 3628 dependencies = [ 3629 - "siphasher", 3630 ] 3631 3632 [[package]] ··· 3635 source = "registry+https://github.com/rust-lang/crates.io-index" 3636 checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" 3637 dependencies = [ 3638 - "siphasher", 3639 ] 3640 3641 [[package]] ··· 3669 version = "0.1.0" 3670 source = "registry+https://github.com/rust-lang/crates.io-index" 3671 checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 3672 3673 [[package]] 3674 name = "pkcs1" ··· 3711 ] 3712 3713 [[package]] 3714 name = "portable-atomic" 3715 version = "1.11.1" 3716 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3806 ] 3807 3808 [[package]] 3809 name = "proc-macro-error" 3810 version = "1.0.4" 3811 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3830 ] 3831 3832 [[package]] 3833 name = "proc-macro2" 3834 version = "1.0.103" 3835 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3877 "pin-project-lite", 3878 "quinn-proto", 3879 "quinn-udp", 3880 - "rustc-hash", 3881 "rustls", 3882 "socket2 0.6.1", 3883 "thiserror 2.0.17", ··· 3897 "lru-slab", 3898 "rand 0.9.2", 3899 "ring", 3900 - "rustc-hash", 3901 "rustls", 3902 "rustls-pki-types", 3903 "slab", ··· 3938 3939 [[package]] 3940 name = "rand" 3941 version = "0.8.5" 3942 source = "registry+https://github.com/rust-lang/crates.io-index" 3943 checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" ··· 3955 dependencies = [ 3956 "rand_chacha 0.9.0", 3957 "rand_core 0.9.3", 3958 ] 3959 3960 [[package]] ··· 3979 3980 [[package]] 3981 name = "rand_core" 3982 version = "0.6.4" 3983 source = "registry+https://github.com/rust-lang/crates.io-index" 3984 checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" ··· 3996 ] 3997 3998 [[package]] 3999 name = "range-traits" 4000 version = "0.3.2" 4001 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4006 version = "0.5.2" 4007 source = "registry+https://github.com/rust-lang/crates.io-index" 4008 checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" 4009 4010 [[package]] 4011 name = "redox_syscall" ··· 4105 "js-sys", 4106 "log", 4107 "mime", 4108 "native-tls", 4109 "percent-encoding", 4110 "pin-project-lite", ··· 4147 ] 4148 4149 [[package]] 4150 name = "ring" 4151 version = "0.17.14" 4152 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4209 version = "0.1.26" 4210 source = "registry+https://github.com/rust-lang/crates.io-index" 4211 checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" 4212 4213 [[package]] 4214 name = "rustc-hash" ··· 4434 ] 4435 4436 [[package]] 4437 name = "semver" 4438 version = "1.0.27" 4439 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4444 version = "0.6.0" 4445 source = "registry+https://github.com/rust-lang/crates.io-index" 4446 checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" 4447 4448 [[package]] 4449 name = "serde" ··· 4466 ] 4467 4468 [[package]] 4469 name = "serde_bytes" 4470 version = "0.11.19" 4471 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4513 dependencies = [ 4514 "form_urlencoded", 4515 "indexmap 2.12.0", 4516 - "itoa", 4517 "ryu", 4518 "serde_core", 4519 ] ··· 4537 checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" 4538 dependencies = [ 4539 "indexmap 2.12.0", 4540 - "itoa", 4541 "memchr 2.7.6", 4542 "ryu", 4543 "serde", ··· 4550 source = "registry+https://github.com/rust-lang/crates.io-index" 4551 checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" 4552 dependencies = [ 4553 - "itoa", 4554 "serde", 4555 "serde_core", 4556 ] 4557 4558 [[package]] 4559 name = "serde_repr" 4560 version = "0.1.20" 4561 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4591 checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 4592 dependencies = [ 4593 "form_urlencoded", 4594 - "itoa", 4595 "ryu", 4596 "serde", 4597 ] ··· 4638 ] 4639 4640 [[package]] 4641 name = "sha1" 4642 version = "0.10.6" 4643 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4679 version = "1.3.0" 4680 source = "registry+https://github.com/rust-lang/crates.io-index" 4681 checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 4682 4683 [[package]] 4684 name = "signal-hook-registry" ··· 4713 4714 [[package]] 4715 name = "siphasher" 4716 version = "1.0.1" 4717 source = "registry+https://github.com/rust-lang/crates.io-index" 4718 checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" ··· 4724 checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" 4725 4726 [[package]] 4727 name = "smallvec" 4728 version = "1.15.1" 4729 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4760 ] 4761 4762 [[package]] 4763 name = "spin" 4764 version = "0.9.8" 4765 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4832 source = "registry+https://github.com/rust-lang/crates.io-index" 4833 checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" 4834 dependencies = [ 4835 - "phf_generator", 4836 "phf_shared 0.11.3", 4837 "proc-macro2", 4838 "quote", ··· 4974 ] 4975 4976 [[package]] 4977 name = "tabwriter" 4978 version = "1.4.1" 4979 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4989 checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" 4990 4991 [[package]] 4992 name = "tempfile" 4993 version = "3.23.0" 4994 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5042 ] 5043 5044 [[package]] 5045 name = "thiserror" 5046 version = "1.0.69" 5047 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5106 checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" 5107 dependencies = [ 5108 "deranged", 5109 - "itoa", 5110 "libc", 5111 "num-conv", 5112 "num_threads", ··· 5183 "signal-hook-registry", 5184 "socket2 0.6.1", 5185 "tokio-macros", 5186 "windows-sys 0.61.2", 5187 ] 5188 ··· 5256 "rustls-pki-types", 5257 "tokio", 5258 "tokio-rustls", 5259 - "tungstenite", 5260 ] 5261 5262 [[package]] ··· 5302 "serde", 5303 "serde_spanned 0.6.9", 5304 "toml_datetime 0.6.11", 5305 - "toml_edit", 5306 ] 5307 5308 [[package]] ··· 5317 "toml_datetime 0.7.3", 5318 "toml_parser", 5319 "toml_writer", 5320 - "winnow", 5321 ] 5322 5323 [[package]] ··· 5340 5341 [[package]] 5342 name = "toml_edit" 5343 version = "0.22.27" 5344 source = "registry+https://github.com/rust-lang/crates.io-index" 5345 checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" ··· 5349 "serde_spanned 0.6.9", 5350 "toml_datetime 0.6.11", 5351 "toml_write", 5352 - "winnow", 5353 ] 5354 5355 [[package]] ··· 5358 source = "registry+https://github.com/rust-lang/crates.io-index" 5359 checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" 5360 dependencies = [ 5361 - "winnow", 5362 ] 5363 5364 [[package]] ··· 5535 ] 5536 5537 [[package]] 5538 name = "trait-variant" 5539 version = "0.1.2" 5540 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5546 ] 5547 5548 [[package]] 5549 name = "tree_magic" 5550 version = "0.2.3" 5551 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5571 5572 [[package]] 5573 name = "tungstenite" 5574 version = "0.24.0" 5575 source = "registry+https://github.com/rust-lang/crates.io-index" 5576 checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" ··· 5603 version = "1.19.0" 5604 source = "registry+https://github.com/rust-lang/crates.io-index" 5605 checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" 5606 5607 [[package]] 5608 name = "unicase" ··· 5746 checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" 5747 5748 [[package]] 5749 name = "version_check" 5750 version = "0.9.5" 5751 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5771 ] 5772 5773 [[package]] 5774 name = "wasi" 5775 version = "0.11.1+wasi-snapshot-preview1" 5776 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5885 "axum", 5886 "chrono", 5887 "clap 4.5.51", 5888 - "dashmap", 5889 "diesel", 5890 "diesel-async", 5891 "diesel_migrations", ··· 5976 "async-trait", 5977 "bitflags 2.10.0", 5978 "compact_string", 5979 - "dashmap", 5980 "dynosaur", 5981 "http", 5982 "ignore", ··· 6006 name = "weaver-server" 6007 version = "0.1.0" 6008 dependencies = [ 6009 - "axum", 6010 - "clap 4.5.51", 6011 "jacquard", 6012 - "jacquard-axum", 6013 - "notify", 6014 - "tokio", 6015 "weaver-common", 6016 "weaver-workspace-hack", 6017 ] ··· 6068 "tracing", 6069 "tracing-core", 6070 "uuid", 6071 - "winnow", 6072 "zerocopy", 6073 "zeroize", 6074 ] ··· 6105 "log", 6106 "ndk-context", 6107 "objc", 6108 - "raw-window-handle", 6109 "url", 6110 "web-sys", 6111 ] 6112 6113 [[package]] 6114 name = "webpage" 6115 version = "2.0.1" 6116 source = "registry+https://github.com/rust-lang/crates.io-index" 6117 checksum = "70862efc041d46e6bbaa82bb9c34ae0596d090e86cbd14bd9e93b36ee6802eac" 6118 dependencies = [ 6119 - "html5ever", 6120 "markup5ever_rcdom", 6121 "serde_json", 6122 "url", ··· 6132 ] 6133 6134 [[package]] 6135 name = "whoami" 6136 version = "1.6.1" 6137 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6181 6182 [[package]] 6183 name = "windows" 6184 version = "0.61.3" 6185 source = "registry+https://github.com/rust-lang/crates.io-index" 6186 checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" ··· 6203 6204 [[package]] 6205 name = "windows-core" 6206 version = "0.61.2" 6207 source = "registry+https://github.com/rust-lang/crates.io-index" 6208 checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" 6209 dependencies = [ 6210 - "windows-implement", 6211 - "windows-interface", 6212 "windows-link 0.1.3", 6213 "windows-result 0.3.4", 6214 "windows-strings 0.4.2", ··· 6220 source = "registry+https://github.com/rust-lang/crates.io-index" 6221 checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" 6222 dependencies = [ 6223 - "windows-implement", 6224 - "windows-interface", 6225 "windows-link 0.2.1", 6226 "windows-result 0.4.1", 6227 "windows-strings 0.5.1", ··· 6240 6241 [[package]] 6242 name = "windows-implement" 6243 version = "0.60.2" 6244 source = "registry+https://github.com/rust-lang/crates.io-index" 6245 checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" ··· 6251 6252 [[package]] 6253 name = "windows-interface" 6254 version = "0.59.3" 6255 source = "registry+https://github.com/rust-lang/crates.io-index" 6256 checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" ··· 6295 6296 [[package]] 6297 name = "windows-result" 6298 version = "0.3.4" 6299 source = "registry+https://github.com/rust-lang/crates.io-index" 6300 checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" ··· 6309 checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" 6310 dependencies = [ 6311 "windows-link 0.2.1", 6312 ] 6313 6314 [[package]] ··· 6456 ] 6457 6458 [[package]] 6459 name = "windows_aarch64_gnullvm" 6460 version = "0.42.2" 6461 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6637 6638 [[package]] 6639 name = "winnow" 6640 version = "0.7.13" 6641 source = "registry+https://github.com/rust-lang/crates.io-index" 6642 checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" ··· 6667 checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" 6668 6669 [[package]] 6670 name = "xml5ever" 6671 version = "0.18.1" 6672 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6674 dependencies = [ 6675 "log", 6676 "mac", 6677 - "markup5ever", 6678 ] 6679 6680 [[package]] 6681 name = "yaml-rust" ··· 6727 ] 6728 6729 [[package]] 6730 name = "zerocopy" 6731 version = "0.8.27" 6732 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6848 "cc", 6849 "pkg-config", 6850 ]
··· 159 checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16" 160 161 [[package]] 162 + name = "ashpd" 163 + version = "0.8.1" 164 + source = "registry+https://github.com/rust-lang/crates.io-index" 165 + checksum = "dd884d7c72877a94102c3715f3b1cd09ff4fac28221add3e57cfbe25c236d093" 166 + dependencies = [ 167 + "enumflags2", 168 + "futures-channel", 169 + "futures-util", 170 + "rand 0.8.5", 171 + "serde", 172 + "serde_repr", 173 + "tokio", 174 + "url", 175 + "zbus", 176 + ] 177 + 178 + [[package]] 179 + name = "async-broadcast" 180 + version = "0.7.2" 181 + source = "registry+https://github.com/rust-lang/crates.io-index" 182 + checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" 183 + dependencies = [ 184 + "event-listener", 185 + "event-listener-strategy", 186 + "futures-core", 187 + "pin-project-lite", 188 + ] 189 + 190 + [[package]] 191 + name = "async-channel" 192 + version = "2.5.0" 193 + source = "registry+https://github.com/rust-lang/crates.io-index" 194 + checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" 195 + dependencies = [ 196 + "concurrent-queue", 197 + "event-listener-strategy", 198 + "futures-core", 199 + "pin-project-lite", 200 + ] 201 + 202 + [[package]] 203 name = "async-compression" 204 version = "0.4.32" 205 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 213 ] 214 215 [[package]] 216 + name = "async-io" 217 + version = "2.6.0" 218 + source = "registry+https://github.com/rust-lang/crates.io-index" 219 + checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" 220 + dependencies = [ 221 + "autocfg", 222 + "cfg-if 1.0.4", 223 + "concurrent-queue", 224 + "futures-io", 225 + "futures-lite", 226 + "parking", 227 + "polling", 228 + "rustix", 229 + "slab", 230 + "windows-sys 0.61.2", 231 + ] 232 + 233 + [[package]] 234 name = "async-lock" 235 version = "3.4.1" 236 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 242 ] 243 244 [[package]] 245 + name = "async-process" 246 + version = "2.5.0" 247 + source = "registry+https://github.com/rust-lang/crates.io-index" 248 + checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" 249 + dependencies = [ 250 + "async-channel", 251 + "async-io", 252 + "async-lock", 253 + "async-signal", 254 + "async-task", 255 + "blocking", 256 + "cfg-if 1.0.4", 257 + "event-listener", 258 + "futures-lite", 259 + "rustix", 260 + ] 261 + 262 + [[package]] 263 + name = "async-recursion" 264 + version = "1.1.1" 265 + source = "registry+https://github.com/rust-lang/crates.io-index" 266 + checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" 267 + dependencies = [ 268 + "proc-macro2", 269 + "quote", 270 + "syn 2.0.108", 271 + ] 272 + 273 + [[package]] 274 + name = "async-signal" 275 + version = "0.2.13" 276 + source = "registry+https://github.com/rust-lang/crates.io-index" 277 + checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" 278 + dependencies = [ 279 + "async-io", 280 + "async-lock", 281 + "atomic-waker", 282 + "cfg-if 1.0.4", 283 + "futures-core", 284 + "futures-io", 285 + "rustix", 286 + "signal-hook-registry", 287 + "slab", 288 + "windows-sys 0.61.2", 289 + ] 290 + 291 + [[package]] 292 + name = "async-task" 293 + version = "4.7.1" 294 + source = "registry+https://github.com/rust-lang/crates.io-index" 295 + checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" 296 + 297 + [[package]] 298 name = "async-trait" 299 version = "0.1.89" 300 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 306 ] 307 308 [[package]] 309 + name = "atk" 310 + version = "0.18.2" 311 + source = "registry+https://github.com/rust-lang/crates.io-index" 312 + checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" 313 + dependencies = [ 314 + "atk-sys", 315 + "glib", 316 + "libc", 317 + ] 318 + 319 + [[package]] 320 + name = "atk-sys" 321 + version = "0.18.2" 322 + source = "registry+https://github.com/rust-lang/crates.io-index" 323 + checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" 324 + dependencies = [ 325 + "glib-sys", 326 + "gobject-sys", 327 + "libc", 328 + "system-deps", 329 + ] 330 + 331 + [[package]] 332 name = "atomic-waker" 333 version = "1.1.2" 334 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 366 "http-body-util", 367 "hyper", 368 "hyper-util", 369 + "itoa 1.0.15", 370 "matchit", 371 "memchr 2.7.6", 372 "mime", ··· 502 version = "2.10.0" 503 source = "registry+https://github.com/rust-lang/crates.io-index" 504 checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" 505 + dependencies = [ 506 + "serde_core", 507 + ] 508 + 509 + [[package]] 510 + name = "block" 511 + version = "0.1.6" 512 + source = "registry+https://github.com/rust-lang/crates.io-index" 513 + checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 514 515 [[package]] 516 name = "block-buffer" ··· 519 checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 520 dependencies = [ 521 "generic-array", 522 + ] 523 + 524 + [[package]] 525 + name = "block2" 526 + version = "0.5.1" 527 + source = "registry+https://github.com/rust-lang/crates.io-index" 528 + checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" 529 + dependencies = [ 530 + "objc2 0.5.2", 531 + ] 532 + 533 + [[package]] 534 + name = "block2" 535 + version = "0.6.2" 536 + source = "registry+https://github.com/rust-lang/crates.io-index" 537 + checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" 538 + dependencies = [ 539 + "objc2 0.6.3", 540 + ] 541 + 542 + [[package]] 543 + name = "blocking" 544 + version = "1.6.2" 545 + source = "registry+https://github.com/rust-lang/crates.io-index" 546 + checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" 547 + dependencies = [ 548 + "async-channel", 549 + "async-task", 550 + "futures-io", 551 + "futures-lite", 552 + "piper", 553 ] 554 555 [[package]] ··· 679 ] 680 681 [[package]] 682 + name = "cairo-rs" 683 + version = "0.18.5" 684 + source = "registry+https://github.com/rust-lang/crates.io-index" 685 + checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" 686 + dependencies = [ 687 + "bitflags 2.10.0", 688 + "cairo-sys-rs", 689 + "glib", 690 + "libc", 691 + "once_cell", 692 + "thiserror 1.0.69", 693 + ] 694 + 695 + [[package]] 696 + name = "cairo-sys-rs" 697 + version = "0.18.2" 698 + source = "registry+https://github.com/rust-lang/crates.io-index" 699 + checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" 700 + dependencies = [ 701 + "glib-sys", 702 + "libc", 703 + "system-deps", 704 + ] 705 + 706 + [[package]] 707 name = "cbor4ii" 708 version = "0.2.14" 709 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 738 version = "1.1.0" 739 source = "registry+https://github.com/rust-lang/crates.io-index" 740 checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 741 + 742 + [[package]] 743 + name = "cfb" 744 + version = "0.7.3" 745 + source = "registry+https://github.com/rust-lang/crates.io-index" 746 + checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" 747 + dependencies = [ 748 + "byteorder", 749 + "fnv", 750 + "uuid", 751 + ] 752 + 753 + [[package]] 754 + name = "cfg-expr" 755 + version = "0.15.8" 756 + source = "registry+https://github.com/rust-lang/crates.io-index" 757 + checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" 758 + dependencies = [ 759 + "smallvec", 760 + "target-lexicon", 761 + ] 762 763 [[package]] 764 name = "cfg-if" ··· 906 ] 907 908 [[package]] 909 + name = "cocoa" 910 + version = "0.25.0" 911 + source = "registry+https://github.com/rust-lang/crates.io-index" 912 + checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" 913 + dependencies = [ 914 + "bitflags 1.3.2", 915 + "block", 916 + "cocoa-foundation 0.1.2", 917 + "core-foundation 0.9.4", 918 + "core-graphics 0.23.2", 919 + "foreign-types 0.5.0", 920 + "libc", 921 + "objc", 922 + ] 923 + 924 + [[package]] 925 + name = "cocoa" 926 + version = "0.26.1" 927 + source = "registry+https://github.com/rust-lang/crates.io-index" 928 + checksum = "ad36507aeb7e16159dfe68db81ccc27571c3ccd4b76fb2fb72fc59e7a4b1b64c" 929 + dependencies = [ 930 + "bitflags 2.10.0", 931 + "block", 932 + "cocoa-foundation 0.2.1", 933 + "core-foundation 0.10.1", 934 + "core-graphics 0.24.0", 935 + "foreign-types 0.5.0", 936 + "libc", 937 + "objc", 938 + ] 939 + 940 + [[package]] 941 + name = "cocoa-foundation" 942 + version = "0.1.2" 943 + source = "registry+https://github.com/rust-lang/crates.io-index" 944 + checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" 945 + dependencies = [ 946 + "bitflags 1.3.2", 947 + "block", 948 + "core-foundation 0.9.4", 949 + "core-graphics-types 0.1.3", 950 + "libc", 951 + "objc", 952 + ] 953 + 954 + [[package]] 955 + name = "cocoa-foundation" 956 + version = "0.2.1" 957 + source = "registry+https://github.com/rust-lang/crates.io-index" 958 + checksum = "81411967c50ee9a1fc11365f8c585f863a22a9697c89239c452292c40ba79b0d" 959 + dependencies = [ 960 + "bitflags 2.10.0", 961 + "block", 962 + "core-foundation 0.10.1", 963 + "core-graphics-types 0.2.0", 964 + "objc", 965 + ] 966 + 967 + [[package]] 968 name = "colorchoice" 969 version = "1.0.4" 970 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1029 ] 1030 1031 [[package]] 1032 + name = "console_error_panic_hook" 1033 + version = "0.1.7" 1034 + source = "registry+https://github.com/rust-lang/crates.io-index" 1035 + checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" 1036 + dependencies = [ 1037 + "cfg-if 1.0.4", 1038 + "wasm-bindgen", 1039 + ] 1040 + 1041 + [[package]] 1042 name = "const-oid" 1043 version = "0.9.6" 1044 source = "registry+https://github.com/rust-lang/crates.io-index" 1045 checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" 1046 1047 [[package]] 1048 + name = "const-serialize" 1049 + version = "0.6.2" 1050 + source = "registry+https://github.com/rust-lang/crates.io-index" 1051 + checksum = "08259976d62c715c4826cb4a3d64a3a9e5c5f68f964ff6087319857f569f93a6" 1052 + dependencies = [ 1053 + "const-serialize-macro", 1054 + "serde", 1055 + ] 1056 + 1057 + [[package]] 1058 + name = "const-serialize-macro" 1059 + version = "0.6.2" 1060 + source = "registry+https://github.com/rust-lang/crates.io-index" 1061 + checksum = "04382d0d9df7434af6b1b49ea1a026ef39df1b0738b1cc373368cf175354f6eb" 1062 + dependencies = [ 1063 + "proc-macro2", 1064 + "quote", 1065 + "syn 2.0.108", 1066 + ] 1067 + 1068 + [[package]] 1069 name = "const-str" 1070 version = "0.4.3" 1071 source = "registry+https://github.com/rust-lang/crates.io-index" 1072 checksum = "2f421161cb492475f1661ddc9815a745a1c894592070661180fdec3d4872e9c3" 1073 1074 [[package]] 1075 + name = "const_format" 1076 + version = "0.2.35" 1077 + source = "registry+https://github.com/rust-lang/crates.io-index" 1078 + checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" 1079 + dependencies = [ 1080 + "const_format_proc_macros", 1081 + ] 1082 + 1083 + [[package]] 1084 + name = "const_format_proc_macros" 1085 + version = "0.2.34" 1086 + source = "registry+https://github.com/rust-lang/crates.io-index" 1087 + checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" 1088 + dependencies = [ 1089 + "proc-macro2", 1090 + "quote", 1091 + "unicode-xid", 1092 + ] 1093 + 1094 + [[package]] 1095 + name = "convert_case" 1096 + version = "0.4.0" 1097 + source = "registry+https://github.com/rust-lang/crates.io-index" 1098 + checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" 1099 + 1100 + [[package]] 1101 + name = "convert_case" 1102 + version = "0.6.0" 1103 + source = "registry+https://github.com/rust-lang/crates.io-index" 1104 + checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" 1105 + dependencies = [ 1106 + "unicode-segmentation", 1107 + ] 1108 + 1109 + [[package]] 1110 name = "cookie" 1111 version = "0.18.1" 1112 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1154 checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 1155 1156 [[package]] 1157 + name = "core-graphics" 1158 + version = "0.23.2" 1159 + source = "registry+https://github.com/rust-lang/crates.io-index" 1160 + checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" 1161 + dependencies = [ 1162 + "bitflags 1.3.2", 1163 + "core-foundation 0.9.4", 1164 + "core-graphics-types 0.1.3", 1165 + "foreign-types 0.5.0", 1166 + "libc", 1167 + ] 1168 + 1169 + [[package]] 1170 + name = "core-graphics" 1171 + version = "0.24.0" 1172 + source = "registry+https://github.com/rust-lang/crates.io-index" 1173 + checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" 1174 + dependencies = [ 1175 + "bitflags 2.10.0", 1176 + "core-foundation 0.10.1", 1177 + "core-graphics-types 0.2.0", 1178 + "foreign-types 0.5.0", 1179 + "libc", 1180 + ] 1181 + 1182 + [[package]] 1183 + name = "core-graphics-types" 1184 + version = "0.1.3" 1185 + source = "registry+https://github.com/rust-lang/crates.io-index" 1186 + checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" 1187 + dependencies = [ 1188 + "bitflags 1.3.2", 1189 + "core-foundation 0.9.4", 1190 + "libc", 1191 + ] 1192 + 1193 + [[package]] 1194 + name = "core-graphics-types" 1195 + version = "0.2.0" 1196 + source = "registry+https://github.com/rust-lang/crates.io-index" 1197 + checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" 1198 + dependencies = [ 1199 + "bitflags 2.10.0", 1200 + "core-foundation 0.10.1", 1201 + "libc", 1202 + ] 1203 + 1204 + [[package]] 1205 name = "core2" 1206 version = "0.4.0" 1207 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1291 ] 1292 1293 [[package]] 1294 + name = "cssparser" 1295 + version = "0.27.2" 1296 + source = "registry+https://github.com/rust-lang/crates.io-index" 1297 + checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" 1298 + dependencies = [ 1299 + "cssparser-macros", 1300 + "dtoa-short", 1301 + "itoa 0.4.8", 1302 + "matches", 1303 + "phf 0.8.0", 1304 + "proc-macro2", 1305 + "quote", 1306 + "smallvec", 1307 + "syn 1.0.109", 1308 + ] 1309 + 1310 + [[package]] 1311 + name = "cssparser-macros" 1312 + version = "0.6.1" 1313 + source = "registry+https://github.com/rust-lang/crates.io-index" 1314 + checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" 1315 + dependencies = [ 1316 + "quote", 1317 + "syn 2.0.108", 1318 + ] 1319 + 1320 + [[package]] 1321 name = "curve25519-dalek" 1322 version = "4.1.3" 1323 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1416 1417 [[package]] 1418 name = "dashmap" 1419 + version = "5.5.3" 1420 + source = "registry+https://github.com/rust-lang/crates.io-index" 1421 + checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" 1422 + dependencies = [ 1423 + "cfg-if 1.0.4", 1424 + "hashbrown 0.14.5", 1425 + "lock_api 0.4.14", 1426 + "once_cell", 1427 + "parking_lot_core 0.9.12", 1428 + ] 1429 + 1430 + [[package]] 1431 + name = "dashmap" 1432 version = "6.1.0" 1433 source = "registry+https://github.com/rust-lang/crates.io-index" 1434 checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" ··· 1518 1519 [[package]] 1520 name = "derive_more" 1521 + version = "0.99.20" 1522 + source = "registry+https://github.com/rust-lang/crates.io-index" 1523 + checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" 1524 + dependencies = [ 1525 + "convert_case 0.4.0", 1526 + "proc-macro2", 1527 + "quote", 1528 + "rustc_version", 1529 + "syn 2.0.108", 1530 + ] 1531 + 1532 + [[package]] 1533 + name = "derive_more" 1534 version = "1.0.0" 1535 source = "registry+https://github.com/rust-lang/crates.io-index" 1536 checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" ··· 1566 "byteorder", 1567 "chrono", 1568 "diesel_derives", 1569 + "itoa 1.0.15", 1570 "libsqlite3-sys", 1571 "pq-sys", 1572 "serde_json", ··· 1634 ] 1635 1636 [[package]] 1637 + name = "dioxus" 1638 + version = "0.6.3" 1639 + source = "registry+https://github.com/rust-lang/crates.io-index" 1640 + checksum = "60a247114500f1a78e87022defa8173de847accfada8e8809dfae23a118a580c" 1641 + dependencies = [ 1642 + "dioxus-cli-config", 1643 + "dioxus-config-macro", 1644 + "dioxus-core", 1645 + "dioxus-core-macro", 1646 + "dioxus-desktop", 1647 + "dioxus-devtools", 1648 + "dioxus-document", 1649 + "dioxus-fullstack", 1650 + "dioxus-history", 1651 + "dioxus-hooks", 1652 + "dioxus-html", 1653 + "dioxus-logger", 1654 + "dioxus-mobile", 1655 + "dioxus-router", 1656 + "dioxus-signals", 1657 + "dioxus-web", 1658 + "manganis", 1659 + "serde", 1660 + "warnings", 1661 + ] 1662 + 1663 + [[package]] 1664 + name = "dioxus-cli-config" 1665 + version = "0.6.3" 1666 + source = "registry+https://github.com/rust-lang/crates.io-index" 1667 + checksum = "cdd16948f1ffdb068dd9a64812158073a4250e2af4e98ea31fdac0312e6bce86" 1668 + dependencies = [ 1669 + "wasm-bindgen", 1670 + ] 1671 + 1672 + [[package]] 1673 + name = "dioxus-config-macro" 1674 + version = "0.6.2" 1675 + source = "registry+https://github.com/rust-lang/crates.io-index" 1676 + checksum = "75cbf582fbb1c32d34a1042ea675469065574109c95154468710a4d73ee98b49" 1677 + dependencies = [ 1678 + "proc-macro2", 1679 + "quote", 1680 + ] 1681 + 1682 + [[package]] 1683 + name = "dioxus-core" 1684 + version = "0.6.3" 1685 + source = "registry+https://github.com/rust-lang/crates.io-index" 1686 + checksum = "9c03f451a119e47433c16e2d8eb5b15bf7d6e6734eb1a4c47574e6711dadff8d" 1687 + dependencies = [ 1688 + "const_format", 1689 + "dioxus-core-types", 1690 + "futures-channel", 1691 + "futures-util", 1692 + "generational-box", 1693 + "longest-increasing-subsequence", 1694 + "rustc-hash 1.1.0", 1695 + "rustversion", 1696 + "serde", 1697 + "slab", 1698 + "slotmap", 1699 + "tracing", 1700 + "warnings", 1701 + ] 1702 + 1703 + [[package]] 1704 + name = "dioxus-core-macro" 1705 + version = "0.6.3" 1706 + source = "registry+https://github.com/rust-lang/crates.io-index" 1707 + checksum = "105c954caaaedf8cd10f3d1ba576b01e18aa8d33ad435182125eefe488cf0064" 1708 + dependencies = [ 1709 + "convert_case 0.6.0", 1710 + "dioxus-rsx", 1711 + "proc-macro2", 1712 + "quote", 1713 + "syn 2.0.108", 1714 + ] 1715 + 1716 + [[package]] 1717 + name = "dioxus-core-types" 1718 + version = "0.6.2" 1719 + source = "registry+https://github.com/rust-lang/crates.io-index" 1720 + checksum = "91a82fccfa48574eb7aa183e297769540904694844598433a9eb55896ad9f93b" 1721 + dependencies = [ 1722 + "once_cell", 1723 + ] 1724 + 1725 + [[package]] 1726 + name = "dioxus-desktop" 1727 + version = "0.6.3" 1728 + source = "registry+https://github.com/rust-lang/crates.io-index" 1729 + checksum = "b5b0cca3e7a10a4a3df37ea52c4cc7a53e5c9233489e03ee3f2829471fc3099a" 1730 + dependencies = [ 1731 + "async-trait", 1732 + "base64 0.22.1", 1733 + "cocoa 0.25.0", 1734 + "core-foundation 0.9.4", 1735 + "dioxus-cli-config", 1736 + "dioxus-core", 1737 + "dioxus-devtools", 1738 + "dioxus-document", 1739 + "dioxus-history", 1740 + "dioxus-hooks", 1741 + "dioxus-html", 1742 + "dioxus-interpreter-js", 1743 + "dioxus-signals", 1744 + "dunce", 1745 + "futures-channel", 1746 + "futures-util", 1747 + "generational-box", 1748 + "global-hotkey", 1749 + "infer", 1750 + "jni", 1751 + "lazy-js-bundle", 1752 + "muda 0.11.5", 1753 + "ndk", 1754 + "ndk-context", 1755 + "ndk-sys", 1756 + "objc", 1757 + "objc_id", 1758 + "once_cell", 1759 + "rfd", 1760 + "rustc-hash 1.1.0", 1761 + "serde", 1762 + "serde_json", 1763 + "signal-hook", 1764 + "slab", 1765 + "tao", 1766 + "thiserror 1.0.69", 1767 + "tokio", 1768 + "tracing", 1769 + "tray-icon", 1770 + "urlencoding", 1771 + "webbrowser", 1772 + "wry", 1773 + ] 1774 + 1775 + [[package]] 1776 + name = "dioxus-devtools" 1777 + version = "0.6.2" 1778 + source = "registry+https://github.com/rust-lang/crates.io-index" 1779 + checksum = "712a7300f1e8181218187b03502044157eef04e0a25b518117c5ef9ae1096880" 1780 + dependencies = [ 1781 + "dioxus-core", 1782 + "dioxus-devtools-types", 1783 + "dioxus-signals", 1784 + "serde", 1785 + "serde_json", 1786 + "tracing", 1787 + "tungstenite 0.23.0", 1788 + "warnings", 1789 + ] 1790 + 1791 + [[package]] 1792 + name = "dioxus-devtools-types" 1793 + version = "0.6.2" 1794 + source = "registry+https://github.com/rust-lang/crates.io-index" 1795 + checksum = "f62434973c0c9c5a3bc42e9cd5e7070401c2062a437fb5528f318c3e42ebf4ff" 1796 + dependencies = [ 1797 + "dioxus-core", 1798 + "serde", 1799 + ] 1800 + 1801 + [[package]] 1802 + name = "dioxus-document" 1803 + version = "0.6.3" 1804 + source = "registry+https://github.com/rust-lang/crates.io-index" 1805 + checksum = "802a2014d1662b6615eec0a275745822ee4fc66aacd9d0f2fb33d6c8da79b8f2" 1806 + dependencies = [ 1807 + "dioxus-core", 1808 + "dioxus-core-macro", 1809 + "dioxus-core-types", 1810 + "dioxus-html", 1811 + "futures-channel", 1812 + "futures-util", 1813 + "generational-box", 1814 + "lazy-js-bundle", 1815 + "serde", 1816 + "serde_json", 1817 + "tracing", 1818 + ] 1819 + 1820 + [[package]] 1821 + name = "dioxus-fullstack" 1822 + version = "0.6.3" 1823 + source = "registry+https://github.com/rust-lang/crates.io-index" 1824 + checksum = "fe99b48a1348eec385b5c4bd3e80fd863b0d3b47257d34e2ddc58754dec5d128" 1825 + dependencies = [ 1826 + "base64 0.22.1", 1827 + "bytes", 1828 + "ciborium", 1829 + "dioxus-desktop", 1830 + "dioxus-devtools", 1831 + "dioxus-history", 1832 + "dioxus-lib", 1833 + "dioxus-mobile", 1834 + "dioxus-web", 1835 + "dioxus_server_macro", 1836 + "futures-channel", 1837 + "futures-util", 1838 + "generational-box", 1839 + "once_cell", 1840 + "serde", 1841 + "server_fn", 1842 + "tracing", 1843 + "web-sys", 1844 + ] 1845 + 1846 + [[package]] 1847 + name = "dioxus-history" 1848 + version = "0.6.2" 1849 + source = "registry+https://github.com/rust-lang/crates.io-index" 1850 + checksum = "5ae4e22616c698f35b60727313134955d885de2d32e83689258e586ebc9b7909" 1851 + dependencies = [ 1852 + "dioxus-core", 1853 + "tracing", 1854 + ] 1855 + 1856 + [[package]] 1857 + name = "dioxus-hooks" 1858 + version = "0.6.2" 1859 + source = "registry+https://github.com/rust-lang/crates.io-index" 1860 + checksum = "948e2b3f20d9d4b2c300aaa60281b1755f3298684448920b27106da5841896d0" 1861 + dependencies = [ 1862 + "dioxus-core", 1863 + "dioxus-signals", 1864 + "futures-channel", 1865 + "futures-util", 1866 + "generational-box", 1867 + "rustversion", 1868 + "slab", 1869 + "tracing", 1870 + "warnings", 1871 + ] 1872 + 1873 + [[package]] 1874 + name = "dioxus-html" 1875 + version = "0.6.3" 1876 + source = "registry+https://github.com/rust-lang/crates.io-index" 1877 + checksum = "59c9a40e6fee20ce7990095492dedb6a753eebe05e67d28271a249de74dc796d" 1878 + dependencies = [ 1879 + "async-trait", 1880 + "dioxus-core", 1881 + "dioxus-core-macro", 1882 + "dioxus-core-types", 1883 + "dioxus-hooks", 1884 + "dioxus-html-internal-macro", 1885 + "enumset", 1886 + "euclid", 1887 + "futures-channel", 1888 + "generational-box", 1889 + "keyboard-types", 1890 + "lazy-js-bundle", 1891 + "rustversion", 1892 + "serde", 1893 + "serde_json", 1894 + "serde_repr", 1895 + "tracing", 1896 + ] 1897 + 1898 + [[package]] 1899 + name = "dioxus-html-internal-macro" 1900 + version = "0.6.2" 1901 + source = "registry+https://github.com/rust-lang/crates.io-index" 1902 + checksum = "43ba87b53688a2c9f619ecdf4b3b955bc1f08bd0570a80a0d626c405f6d14a76" 1903 + dependencies = [ 1904 + "convert_case 0.6.0", 1905 + "proc-macro2", 1906 + "quote", 1907 + "syn 2.0.108", 1908 + ] 1909 + 1910 + [[package]] 1911 + name = "dioxus-interpreter-js" 1912 + version = "0.6.2" 1913 + source = "registry+https://github.com/rust-lang/crates.io-index" 1914 + checksum = "330707b10ca75cb0eb05f9e5f8d80217cd0d7e62116a8277ae363c1a09b57a22" 1915 + dependencies = [ 1916 + "dioxus-core", 1917 + "dioxus-core-types", 1918 + "dioxus-html", 1919 + "js-sys", 1920 + "lazy-js-bundle", 1921 + "rustc-hash 1.1.0", 1922 + "serde", 1923 + "sledgehammer_bindgen", 1924 + "sledgehammer_utils", 1925 + "wasm-bindgen", 1926 + "wasm-bindgen-futures", 1927 + "web-sys", 1928 + ] 1929 + 1930 + [[package]] 1931 + name = "dioxus-lib" 1932 + version = "0.6.2" 1933 + source = "registry+https://github.com/rust-lang/crates.io-index" 1934 + checksum = "5405b71aa9b8b0c3e0d22728f12f34217ca5277792bd315878cc6ecab7301b72" 1935 + dependencies = [ 1936 + "dioxus-config-macro", 1937 + "dioxus-core", 1938 + "dioxus-core-macro", 1939 + "dioxus-document", 1940 + "dioxus-history", 1941 + "dioxus-hooks", 1942 + "dioxus-html", 1943 + "dioxus-rsx", 1944 + "dioxus-signals", 1945 + "warnings", 1946 + ] 1947 + 1948 + [[package]] 1949 + name = "dioxus-logger" 1950 + version = "0.6.2" 1951 + source = "registry+https://github.com/rust-lang/crates.io-index" 1952 + checksum = "545961e752f6c8bf59c274951b3c8b18a106db6ad2f9e2035b29e1f2a3e899b1" 1953 + dependencies = [ 1954 + "console_error_panic_hook", 1955 + "dioxus-cli-config", 1956 + "tracing", 1957 + "tracing-subscriber", 1958 + "tracing-wasm", 1959 + ] 1960 + 1961 + [[package]] 1962 + name = "dioxus-mobile" 1963 + version = "0.6.2" 1964 + source = "registry+https://github.com/rust-lang/crates.io-index" 1965 + checksum = "6d1295388909f427758993f32a571e0f8698d6ce0f125fa0e81b8bfdec3fa952" 1966 + dependencies = [ 1967 + "dioxus-cli-config", 1968 + "dioxus-desktop", 1969 + "dioxus-lib", 1970 + "jni", 1971 + "libc", 1972 + "once_cell", 1973 + ] 1974 + 1975 + [[package]] 1976 + name = "dioxus-router" 1977 + version = "0.6.3" 1978 + source = "registry+https://github.com/rust-lang/crates.io-index" 1979 + checksum = "7266a76fc9e4a91f56499d1d1aecfff7168952b6627a6008b4e9748d6bf863e4" 1980 + dependencies = [ 1981 + "dioxus-cli-config", 1982 + "dioxus-history", 1983 + "dioxus-lib", 1984 + "dioxus-router-macro", 1985 + "rustversion", 1986 + "tracing", 1987 + "url", 1988 + "urlencoding", 1989 + ] 1990 + 1991 + [[package]] 1992 + name = "dioxus-router-macro" 1993 + version = "0.6.3" 1994 + source = "registry+https://github.com/rust-lang/crates.io-index" 1995 + checksum = "2743ffb79e9a7d33d779c87d6deea2a6c047d0736012f95d63b909b83f0a6fd2" 1996 + dependencies = [ 1997 + "proc-macro2", 1998 + "quote", 1999 + "slab", 2000 + "syn 2.0.108", 2001 + ] 2002 + 2003 + [[package]] 2004 + name = "dioxus-rsx" 2005 + version = "0.6.2" 2006 + source = "registry+https://github.com/rust-lang/crates.io-index" 2007 + checksum = "3eb588e05800b5a7eb90b2f40fca5bbd7626e823fb5e1ba21e011de649b45aa1" 2008 + dependencies = [ 2009 + "proc-macro2", 2010 + "proc-macro2-diagnostics", 2011 + "quote", 2012 + "syn 2.0.108", 2013 + ] 2014 + 2015 + [[package]] 2016 + name = "dioxus-signals" 2017 + version = "0.6.3" 2018 + source = "registry+https://github.com/rust-lang/crates.io-index" 2019 + checksum = "10e032dbb3a2c0386ec8b8ee59bc20b5aeb67038147c855801237b45b13d72ac" 2020 + dependencies = [ 2021 + "dioxus-core", 2022 + "futures-channel", 2023 + "futures-util", 2024 + "generational-box", 2025 + "once_cell", 2026 + "parking_lot 0.12.5", 2027 + "rustc-hash 1.1.0", 2028 + "tracing", 2029 + "warnings", 2030 + ] 2031 + 2032 + [[package]] 2033 + name = "dioxus-web" 2034 + version = "0.6.3" 2035 + source = "registry+https://github.com/rust-lang/crates.io-index" 2036 + checksum = "7e7c12475c3d360058b8afe1b68eb6dfc9cbb7dcd760aed37c5f85c561c83ed1" 2037 + dependencies = [ 2038 + "async-trait", 2039 + "ciborium", 2040 + "dioxus-cli-config", 2041 + "dioxus-core", 2042 + "dioxus-core-types", 2043 + "dioxus-devtools", 2044 + "dioxus-document", 2045 + "dioxus-history", 2046 + "dioxus-html", 2047 + "dioxus-interpreter-js", 2048 + "dioxus-signals", 2049 + "futures-channel", 2050 + "futures-util", 2051 + "generational-box", 2052 + "js-sys", 2053 + "lazy-js-bundle", 2054 + "rustc-hash 1.1.0", 2055 + "serde", 2056 + "serde-wasm-bindgen", 2057 + "serde_json", 2058 + "tracing", 2059 + "wasm-bindgen", 2060 + "wasm-bindgen-futures", 2061 + "web-sys", 2062 + ] 2063 + 2064 + [[package]] 2065 + name = "dioxus_server_macro" 2066 + version = "0.6.2" 2067 + source = "registry+https://github.com/rust-lang/crates.io-index" 2068 + checksum = "371a5b21989a06b53c5092e977b3f75d0e60a65a4c15a2aa1d07014c3b2dda97" 2069 + dependencies = [ 2070 + "proc-macro2", 2071 + "quote", 2072 + "server_fn_macro", 2073 + "syn 2.0.108", 2074 + ] 2075 + 2076 + [[package]] 2077 name = "dirs" 2078 version = "6.0.0" 2079 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2095 ] 2096 2097 [[package]] 2098 + name = "dispatch" 2099 + version = "0.2.0" 2100 + source = "registry+https://github.com/rust-lang/crates.io-index" 2101 + checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 2102 + 2103 + [[package]] 2104 + name = "dispatch2" 2105 + version = "0.3.0" 2106 + source = "registry+https://github.com/rust-lang/crates.io-index" 2107 + checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" 2108 + dependencies = [ 2109 + "bitflags 2.10.0", 2110 + "objc2 0.6.3", 2111 + ] 2112 + 2113 + [[package]] 2114 name = "displaydoc" 2115 version = "0.2.5" 2116 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2122 ] 2123 2124 [[package]] 2125 + name = "dlopen2" 2126 + version = "0.7.0" 2127 + source = "registry+https://github.com/rust-lang/crates.io-index" 2128 + checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6" 2129 + dependencies = [ 2130 + "dlopen2_derive", 2131 + "libc", 2132 + "once_cell", 2133 + "winapi", 2134 + ] 2135 + 2136 + [[package]] 2137 + name = "dlopen2_derive" 2138 + version = "0.4.1" 2139 + source = "registry+https://github.com/rust-lang/crates.io-index" 2140 + checksum = "788160fb30de9cdd857af31c6a2675904b16ece8fc2737b2c7127ba368c9d0f4" 2141 + dependencies = [ 2142 + "proc-macro2", 2143 + "quote", 2144 + "syn 2.0.108", 2145 + ] 2146 + 2147 + [[package]] 2148 name = "dotenvy" 2149 version = "0.15.7" 2150 source = "registry+https://github.com/rust-lang/crates.io-index" 2151 checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" 2152 + 2153 + [[package]] 2154 + name = "dpi" 2155 + version = "0.1.2" 2156 + source = "registry+https://github.com/rust-lang/crates.io-index" 2157 + checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" 2158 2159 [[package]] 2160 name = "dsl_auto_type" ··· 2171 ] 2172 2173 [[package]] 2174 + name = "dtoa" 2175 + version = "1.0.10" 2176 + source = "registry+https://github.com/rust-lang/crates.io-index" 2177 + checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" 2178 + 2179 + [[package]] 2180 + name = "dtoa-short" 2181 + version = "0.3.5" 2182 + source = "registry+https://github.com/rust-lang/crates.io-index" 2183 + checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" 2184 + dependencies = [ 2185 + "dtoa", 2186 + ] 2187 + 2188 + [[package]] 2189 + name = "dunce" 2190 + version = "1.0.5" 2191 + source = "registry+https://github.com/rust-lang/crates.io-index" 2192 + checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" 2193 + 2194 + [[package]] 2195 name = "dyn-clone" 2196 version = "1.0.20" 2197 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2300 ] 2301 2302 [[package]] 2303 + name = "endi" 2304 + version = "1.1.0" 2305 + source = "registry+https://github.com/rust-lang/crates.io-index" 2306 + checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" 2307 + 2308 + [[package]] 2309 name = "enum-as-inner" 2310 version = "0.6.1" 2311 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2318 ] 2319 2320 [[package]] 2321 + name = "enumflags2" 2322 + version = "0.7.12" 2323 + source = "registry+https://github.com/rust-lang/crates.io-index" 2324 + checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" 2325 + dependencies = [ 2326 + "enumflags2_derive", 2327 + "serde", 2328 + ] 2329 + 2330 + [[package]] 2331 + name = "enumflags2_derive" 2332 + version = "0.7.12" 2333 + source = "registry+https://github.com/rust-lang/crates.io-index" 2334 + checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" 2335 + dependencies = [ 2336 + "proc-macro2", 2337 + "quote", 2338 + "syn 2.0.108", 2339 + ] 2340 + 2341 + [[package]] 2342 + name = "enumset" 2343 + version = "1.1.10" 2344 + source = "registry+https://github.com/rust-lang/crates.io-index" 2345 + checksum = "25b07a8dfbbbfc0064c0a6bdf9edcf966de6b1c33ce344bdeca3b41615452634" 2346 + dependencies = [ 2347 + "enumset_derive", 2348 + ] 2349 + 2350 + [[package]] 2351 + name = "enumset_derive" 2352 + version = "0.14.0" 2353 + source = "registry+https://github.com/rust-lang/crates.io-index" 2354 + checksum = "f43e744e4ea338060faee68ed933e46e722fb7f3617e722a5772d7e856d8b3ce" 2355 + dependencies = [ 2356 + "darling 0.21.3", 2357 + "proc-macro2", 2358 + "quote", 2359 + "syn 2.0.108", 2360 + ] 2361 + 2362 + [[package]] 2363 name = "equivalent" 2364 version = "1.0.2" 2365 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2373 dependencies = [ 2374 "libc", 2375 "windows-sys 0.61.2", 2376 + ] 2377 + 2378 + [[package]] 2379 + name = "euclid" 2380 + version = "0.22.11" 2381 + source = "registry+https://github.com/rust-lang/crates.io-index" 2382 + checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" 2383 + dependencies = [ 2384 + "num-traits", 2385 + "serde", 2386 ] 2387 2388 [[package]] ··· 2430 checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 2431 2432 [[package]] 2433 + name = "fdeflate" 2434 + version = "0.3.7" 2435 + source = "registry+https://github.com/rust-lang/crates.io-index" 2436 + checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" 2437 + dependencies = [ 2438 + "simd-adler32", 2439 + ] 2440 + 2441 + [[package]] 2442 name = "ff" 2443 version = "0.13.1" 2444 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2453 version = "0.2.9" 2454 source = "registry+https://github.com/rust-lang/crates.io-index" 2455 checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" 2456 + 2457 + [[package]] 2458 + name = "field-offset" 2459 + version = "0.3.6" 2460 + source = "registry+https://github.com/rust-lang/crates.io-index" 2461 + checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" 2462 + dependencies = [ 2463 + "memoffset", 2464 + "rustc_version", 2465 + ] 2466 2467 [[package]] 2468 name = "filetime" ··· 2526 source = "registry+https://github.com/rust-lang/crates.io-index" 2527 checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 2528 dependencies = [ 2529 + "foreign-types-shared 0.1.1", 2530 + ] 2531 + 2532 + [[package]] 2533 + name = "foreign-types" 2534 + version = "0.5.0" 2535 + source = "registry+https://github.com/rust-lang/crates.io-index" 2536 + checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" 2537 + dependencies = [ 2538 + "foreign-types-macros", 2539 + "foreign-types-shared 0.3.1", 2540 + ] 2541 + 2542 + [[package]] 2543 + name = "foreign-types-macros" 2544 + version = "0.2.3" 2545 + source = "registry+https://github.com/rust-lang/crates.io-index" 2546 + checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" 2547 + dependencies = [ 2548 + "proc-macro2", 2549 + "quote", 2550 + "syn 2.0.108", 2551 ] 2552 2553 [[package]] ··· 2557 checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 2558 2559 [[package]] 2560 + name = "foreign-types-shared" 2561 + version = "0.3.1" 2562 + source = "registry+https://github.com/rust-lang/crates.io-index" 2563 + checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" 2564 + 2565 + [[package]] 2566 name = "form_urlencoded" 2567 version = "1.2.2" 2568 source = "registry+https://github.com/rust-lang/crates.io-index" 2569 checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" 2570 dependencies = [ 2571 "percent-encoding", 2572 ] 2573 2574 [[package]] ··· 2697 ] 2698 2699 [[package]] 2700 + name = "fxhash" 2701 + version = "0.2.1" 2702 + source = "registry+https://github.com/rust-lang/crates.io-index" 2703 + checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" 2704 + dependencies = [ 2705 + "byteorder", 2706 + ] 2707 + 2708 + [[package]] 2709 + name = "gdk" 2710 + version = "0.18.2" 2711 + source = "registry+https://github.com/rust-lang/crates.io-index" 2712 + checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" 2713 + dependencies = [ 2714 + "cairo-rs", 2715 + "gdk-pixbuf", 2716 + "gdk-sys", 2717 + "gio", 2718 + "glib", 2719 + "libc", 2720 + "pango", 2721 + ] 2722 + 2723 + [[package]] 2724 + name = "gdk-pixbuf" 2725 + version = "0.18.5" 2726 + source = "registry+https://github.com/rust-lang/crates.io-index" 2727 + checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" 2728 + dependencies = [ 2729 + "gdk-pixbuf-sys", 2730 + "gio", 2731 + "glib", 2732 + "libc", 2733 + "once_cell", 2734 + ] 2735 + 2736 + [[package]] 2737 + name = "gdk-pixbuf-sys" 2738 + version = "0.18.0" 2739 + source = "registry+https://github.com/rust-lang/crates.io-index" 2740 + checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" 2741 + dependencies = [ 2742 + "gio-sys", 2743 + "glib-sys", 2744 + "gobject-sys", 2745 + "libc", 2746 + "system-deps", 2747 + ] 2748 + 2749 + [[package]] 2750 + name = "gdk-sys" 2751 + version = "0.18.2" 2752 + source = "registry+https://github.com/rust-lang/crates.io-index" 2753 + checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" 2754 + dependencies = [ 2755 + "cairo-sys-rs", 2756 + "gdk-pixbuf-sys", 2757 + "gio-sys", 2758 + "glib-sys", 2759 + "gobject-sys", 2760 + "libc", 2761 + "pango-sys", 2762 + "pkg-config", 2763 + "system-deps", 2764 + ] 2765 + 2766 + [[package]] 2767 + name = "gdkwayland-sys" 2768 + version = "0.18.2" 2769 + source = "registry+https://github.com/rust-lang/crates.io-index" 2770 + checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69" 2771 + dependencies = [ 2772 + "gdk-sys", 2773 + "glib-sys", 2774 + "gobject-sys", 2775 + "libc", 2776 + "pkg-config", 2777 + "system-deps", 2778 + ] 2779 + 2780 + [[package]] 2781 + name = "gdkx11" 2782 + version = "0.18.2" 2783 + source = "registry+https://github.com/rust-lang/crates.io-index" 2784 + checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe" 2785 + dependencies = [ 2786 + "gdk", 2787 + "gdkx11-sys", 2788 + "gio", 2789 + "glib", 2790 + "libc", 2791 + "x11", 2792 + ] 2793 + 2794 + [[package]] 2795 + name = "gdkx11-sys" 2796 + version = "0.18.2" 2797 + source = "registry+https://github.com/rust-lang/crates.io-index" 2798 + checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d" 2799 + dependencies = [ 2800 + "gdk-sys", 2801 + "glib-sys", 2802 + "libc", 2803 + "system-deps", 2804 + "x11", 2805 + ] 2806 + 2807 + [[package]] 2808 + name = "generational-box" 2809 + version = "0.6.2" 2810 + source = "registry+https://github.com/rust-lang/crates.io-index" 2811 + checksum = "a673cf4fb0ea6a91aa86c08695756dfe875277a912cdbf33db9a9f62d47ed82b" 2812 + dependencies = [ 2813 + "parking_lot 0.12.5", 2814 + "tracing", 2815 + ] 2816 + 2817 + [[package]] 2818 name = "generator" 2819 version = "0.8.7" 2820 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2825 "libc", 2826 "log", 2827 "rustversion", 2828 + "windows 0.61.3", 2829 ] 2830 2831 [[package]] ··· 2851 2852 [[package]] 2853 name = "getrandom" 2854 + version = "0.1.16" 2855 + source = "registry+https://github.com/rust-lang/crates.io-index" 2856 + checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 2857 + dependencies = [ 2858 + "cfg-if 1.0.4", 2859 + "libc", 2860 + "wasi 0.9.0+wasi-snapshot-preview1", 2861 + ] 2862 + 2863 + [[package]] 2864 + name = "getrandom" 2865 version = "0.2.16" 2866 source = "registry+https://github.com/rust-lang/crates.io-index" 2867 checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" ··· 2869 "cfg-if 1.0.4", 2870 "js-sys", 2871 "libc", 2872 + "wasi 0.11.1+wasi-snapshot-preview1", 2873 "wasm-bindgen", 2874 ] 2875 ··· 2894 checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" 2895 2896 [[package]] 2897 + name = "gio" 2898 + version = "0.18.4" 2899 + source = "registry+https://github.com/rust-lang/crates.io-index" 2900 + checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" 2901 + dependencies = [ 2902 + "futures-channel", 2903 + "futures-core", 2904 + "futures-io", 2905 + "futures-util", 2906 + "gio-sys", 2907 + "glib", 2908 + "libc", 2909 + "once_cell", 2910 + "pin-project-lite", 2911 + "smallvec", 2912 + "thiserror 1.0.69", 2913 + ] 2914 + 2915 + [[package]] 2916 + name = "gio-sys" 2917 + version = "0.18.1" 2918 + source = "registry+https://github.com/rust-lang/crates.io-index" 2919 + checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" 2920 + dependencies = [ 2921 + "glib-sys", 2922 + "gobject-sys", 2923 + "libc", 2924 + "system-deps", 2925 + "winapi", 2926 + ] 2927 + 2928 + [[package]] 2929 + name = "glib" 2930 + version = "0.18.5" 2931 + source = "registry+https://github.com/rust-lang/crates.io-index" 2932 + checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" 2933 + dependencies = [ 2934 + "bitflags 2.10.0", 2935 + "futures-channel", 2936 + "futures-core", 2937 + "futures-executor", 2938 + "futures-task", 2939 + "futures-util", 2940 + "gio-sys", 2941 + "glib-macros", 2942 + "glib-sys", 2943 + "gobject-sys", 2944 + "libc", 2945 + "memchr 2.7.6", 2946 + "once_cell", 2947 + "smallvec", 2948 + "thiserror 1.0.69", 2949 + ] 2950 + 2951 + [[package]] 2952 + name = "glib-macros" 2953 + version = "0.18.5" 2954 + source = "registry+https://github.com/rust-lang/crates.io-index" 2955 + checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" 2956 + dependencies = [ 2957 + "heck 0.4.1", 2958 + "proc-macro-crate 2.0.0", 2959 + "proc-macro-error", 2960 + "proc-macro2", 2961 + "quote", 2962 + "syn 2.0.108", 2963 + ] 2964 + 2965 + [[package]] 2966 + name = "glib-sys" 2967 + version = "0.18.1" 2968 + source = "registry+https://github.com/rust-lang/crates.io-index" 2969 + checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" 2970 + dependencies = [ 2971 + "libc", 2972 + "system-deps", 2973 + ] 2974 + 2975 + [[package]] 2976 + name = "global-hotkey" 2977 + version = "0.5.5" 2978 + source = "registry+https://github.com/rust-lang/crates.io-index" 2979 + checksum = "b436093d1598b05e3b7fddc097b2bad32763f53a1beb25ab6f9718c6a60acd09" 2980 + dependencies = [ 2981 + "bitflags 2.10.0", 2982 + "cocoa 0.25.0", 2983 + "crossbeam-channel", 2984 + "keyboard-types", 2985 + "objc", 2986 + "once_cell", 2987 + "thiserror 1.0.69", 2988 + "windows-sys 0.52.0", 2989 + "x11-dl", 2990 + ] 2991 + 2992 + [[package]] 2993 name = "globset" 2994 version = "0.4.18" 2995 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3003 ] 3004 3005 [[package]] 3006 + name = "gloo-net" 3007 + version = "0.6.0" 3008 + source = "registry+https://github.com/rust-lang/crates.io-index" 3009 + checksum = "c06f627b1a58ca3d42b45d6104bf1e1a03799df472df00988b6ba21accc10580" 3010 + dependencies = [ 3011 + "futures-channel", 3012 + "futures-core", 3013 + "futures-sink", 3014 + "gloo-utils", 3015 + "http", 3016 + "js-sys", 3017 + "pin-project", 3018 + "serde", 3019 + "serde_json", 3020 + "thiserror 1.0.69", 3021 + "wasm-bindgen", 3022 + "wasm-bindgen-futures", 3023 + "web-sys", 3024 + ] 3025 + 3026 + [[package]] 3027 + name = "gloo-utils" 3028 + version = "0.2.0" 3029 + source = "registry+https://github.com/rust-lang/crates.io-index" 3030 + checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa" 3031 + dependencies = [ 3032 + "js-sys", 3033 + "serde", 3034 + "serde_json", 3035 + "wasm-bindgen", 3036 + "web-sys", 3037 + ] 3038 + 3039 + [[package]] 3040 + name = "gobject-sys" 3041 + version = "0.18.0" 3042 + source = "registry+https://github.com/rust-lang/crates.io-index" 3043 + checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" 3044 + dependencies = [ 3045 + "glib-sys", 3046 + "libc", 3047 + "system-deps", 3048 + ] 3049 + 3050 + [[package]] 3051 name = "group" 3052 version = "0.13.0" 3053 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3059 ] 3060 3061 [[package]] 3062 + name = "gtk" 3063 + version = "0.18.2" 3064 + source = "registry+https://github.com/rust-lang/crates.io-index" 3065 + checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" 3066 + dependencies = [ 3067 + "atk", 3068 + "cairo-rs", 3069 + "field-offset", 3070 + "futures-channel", 3071 + "gdk", 3072 + "gdk-pixbuf", 3073 + "gio", 3074 + "glib", 3075 + "gtk-sys", 3076 + "gtk3-macros", 3077 + "libc", 3078 + "pango", 3079 + "pkg-config", 3080 + ] 3081 + 3082 + [[package]] 3083 + name = "gtk-sys" 3084 + version = "0.18.2" 3085 + source = "registry+https://github.com/rust-lang/crates.io-index" 3086 + checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" 3087 + dependencies = [ 3088 + "atk-sys", 3089 + "cairo-sys-rs", 3090 + "gdk-pixbuf-sys", 3091 + "gdk-sys", 3092 + "gio-sys", 3093 + "glib-sys", 3094 + "gobject-sys", 3095 + "libc", 3096 + "pango-sys", 3097 + "system-deps", 3098 + ] 3099 + 3100 + [[package]] 3101 + name = "gtk3-macros" 3102 + version = "0.18.2" 3103 + source = "registry+https://github.com/rust-lang/crates.io-index" 3104 + checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" 3105 + dependencies = [ 3106 + "proc-macro-crate 1.3.1", 3107 + "proc-macro-error", 3108 + "proc-macro2", 3109 + "quote", 3110 + "syn 2.0.108", 3111 + ] 3112 + 3113 + [[package]] 3114 name = "gzip-header" 3115 version = "1.0.0" 3116 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3298 3299 [[package]] 3300 name = "html5ever" 3301 + version = "0.26.0" 3302 + source = "registry+https://github.com/rust-lang/crates.io-index" 3303 + checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" 3304 + dependencies = [ 3305 + "log", 3306 + "mac", 3307 + "markup5ever 0.11.0", 3308 + "proc-macro2", 3309 + "quote", 3310 + "syn 1.0.109", 3311 + ] 3312 + 3313 + [[package]] 3314 + name = "html5ever" 3315 version = "0.27.0" 3316 source = "registry+https://github.com/rust-lang/crates.io-index" 3317 checksum = "c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4" 3318 dependencies = [ 3319 "log", 3320 "mac", 3321 + "markup5ever 0.12.1", 3322 "proc-macro2", 3323 "quote", 3324 "syn 2.0.108", ··· 3332 dependencies = [ 3333 "bytes", 3334 "fnv", 3335 + "itoa 1.0.15", 3336 ] 3337 3338 [[package]] ··· 3391 "http-body", 3392 "httparse", 3393 "httpdate", 3394 + "itoa 1.0.15", 3395 "pin-project-lite", 3396 "pin-utils", 3397 "smallvec", ··· 3639 ] 3640 3641 [[package]] 3642 + name = "infer" 3643 version = "0.11.0" 3644 source = "registry+https://github.com/rust-lang/crates.io-index" 3645 + checksum = "0a6c16b11a665b26aeeb9b1d7f954cdeb034be38dd00adab4f2ae921a8fee804" 3646 dependencies = [ 3647 + "cfb", 3648 ] 3649 3650 [[package]] ··· 3657 "once_cell", 3658 "serde", 3659 "similar", 3660 + ] 3661 + 3662 + [[package]] 3663 + name = "instant" 3664 + version = "0.1.13" 3665 + source = "registry+https://github.com/rust-lang/crates.io-index" 3666 + checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" 3667 + dependencies = [ 3668 + "cfg-if 1.0.4", 3669 ] 3670 3671 [[package]] ··· 3727 version = "1.70.2" 3728 source = "registry+https://github.com/rust-lang/crates.io-index" 3729 checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" 3730 + 3731 + [[package]] 3732 + name = "itoa" 3733 + version = "0.4.8" 3734 + source = "registry+https://github.com/rust-lang/crates.io-index" 3735 + checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" 3736 3737 [[package]] 3738 name = "itoa" ··· 3897 source = "git+https://tangled.org/@nonbinary.computer/jacquard#10d719d2a2c459ab562b2be6fecdfe11f52b521c" 3898 dependencies = [ 3899 "cid", 3900 + "dashmap 6.1.0", 3901 "heck 0.5.0", 3902 "inventory", 3903 "jacquard-common", ··· 3925 "base64 0.22.1", 3926 "bytes", 3927 "chrono", 3928 + "dashmap 6.1.0", 3929 "elliptic-curve", 3930 "http", 3931 "jacquard-common", ··· 3951 ] 3952 3953 [[package]] 3954 + name = "javascriptcore-rs" 3955 + version = "1.1.2" 3956 + source = "registry+https://github.com/rust-lang/crates.io-index" 3957 + checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" 3958 + dependencies = [ 3959 + "bitflags 1.3.2", 3960 + "glib", 3961 + "javascriptcore-rs-sys", 3962 + ] 3963 + 3964 + [[package]] 3965 + name = "javascriptcore-rs-sys" 3966 + version = "1.1.1" 3967 + source = "registry+https://github.com/rust-lang/crates.io-index" 3968 + checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" 3969 + dependencies = [ 3970 + "glib-sys", 3971 + "gobject-sys", 3972 + "libc", 3973 + "system-deps", 3974 + ] 3975 + 3976 + [[package]] 3977 name = "jni" 3978 version = "0.21.1" 3979 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4108 ] 4109 4110 [[package]] 4111 + name = "keyboard-types" 4112 + version = "0.7.0" 4113 source = "registry+https://github.com/rust-lang/crates.io-index" 4114 + checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" 4115 dependencies = [ 4116 + "bitflags 2.10.0", 4117 + "serde", 4118 + "unicode-segmentation", 4119 ] 4120 4121 [[package]] 4122 + name = "kuchikiki" 4123 + version = "0.8.2" 4124 source = "registry+https://github.com/rust-lang/crates.io-index" 4125 + checksum = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8" 4126 dependencies = [ 4127 + "cssparser", 4128 + "html5ever 0.26.0", 4129 + "indexmap 1.9.3", 4130 + "matches", 4131 + "selectors", 4132 ] 4133 4134 [[package]] ··· 4141 "static-regular-grammar", 4142 "thiserror 1.0.69", 4143 ] 4144 + 4145 + [[package]] 4146 + name = "lazy-js-bundle" 4147 + version = "0.6.2" 4148 + source = "registry+https://github.com/rust-lang/crates.io-index" 4149 + checksum = "e49596223b9d9d4947a14a25c142a6e7d8ab3f27eb3ade269d238bb8b5c267e2" 4150 4151 [[package]] 4152 name = "lazy_static" ··· 4158 ] 4159 4160 [[package]] 4161 + name = "libappindicator" 4162 + version = "0.9.0" 4163 + source = "registry+https://github.com/rust-lang/crates.io-index" 4164 + checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" 4165 + dependencies = [ 4166 + "glib", 4167 + "gtk", 4168 + "gtk-sys", 4169 + "libappindicator-sys", 4170 + "log", 4171 + ] 4172 + 4173 + [[package]] 4174 + name = "libappindicator-sys" 4175 + version = "0.9.0" 4176 + source = "registry+https://github.com/rust-lang/crates.io-index" 4177 + checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" 4178 + dependencies = [ 4179 + "gtk-sys", 4180 + "libloading", 4181 + "once_cell", 4182 + ] 4183 + 4184 + [[package]] 4185 name = "libc" 4186 version = "0.2.177" 4187 source = "registry+https://github.com/rust-lang/crates.io-index" 4188 checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" 4189 + 4190 + [[package]] 4191 + name = "libloading" 4192 + version = "0.7.4" 4193 + source = "registry+https://github.com/rust-lang/crates.io-index" 4194 + checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" 4195 + dependencies = [ 4196 + "cfg-if 1.0.4", 4197 + "winapi", 4198 + ] 4199 4200 [[package]] 4201 name = "libm" ··· 4225 ] 4226 4227 [[package]] 4228 + name = "libxdo" 4229 + version = "0.6.0" 4230 + source = "registry+https://github.com/rust-lang/crates.io-index" 4231 + checksum = "00333b8756a3d28e78def82067a377de7fa61b24909000aeaa2b446a948d14db" 4232 + dependencies = [ 4233 + "libxdo-sys", 4234 + ] 4235 + 4236 + [[package]] 4237 + name = "libxdo-sys" 4238 + version = "0.11.0" 4239 + source = "registry+https://github.com/rust-lang/crates.io-index" 4240 + checksum = "db23b9e7e2b7831bbd8aac0bbeeeb7b68cbebc162b227e7052e8e55829a09212" 4241 + dependencies = [ 4242 + "libc", 4243 + "x11", 4244 + ] 4245 + 4246 + [[package]] 4247 name = "linked-hash-map" 4248 version = "0.5.6" 4249 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4286 checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" 4287 4288 [[package]] 4289 + name = "longest-increasing-subsequence" 4290 + version = "0.1.0" 4291 + source = "registry+https://github.com/rust-lang/crates.io-index" 4292 + checksum = "b3bd0dd2cd90571056fdb71f6275fada10131182f84899f4b2a916e565d81d86" 4293 + 4294 + [[package]] 4295 name = "loom" 4296 version = "0.7.2" 4297 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4335 ] 4336 4337 [[package]] 4338 + name = "manganis" 4339 + version = "0.6.2" 4340 + source = "registry+https://github.com/rust-lang/crates.io-index" 4341 + checksum = "317af44b15e7605b85f04525449a3bb631753040156c9b318e6cba8a3ea4ef73" 4342 + dependencies = [ 4343 + "const-serialize", 4344 + "manganis-core", 4345 + "manganis-macro", 4346 + ] 4347 + 4348 + [[package]] 4349 + name = "manganis-core" 4350 + version = "0.6.2" 4351 + source = "registry+https://github.com/rust-lang/crates.io-index" 4352 + checksum = "c38bee65cc725b2bba23b5dbb290f57c8be8fadbe2043fb7e2ce73022ea06519" 4353 + dependencies = [ 4354 + "const-serialize", 4355 + "dioxus-cli-config", 4356 + "dioxus-core-types", 4357 + "serde", 4358 + ] 4359 + 4360 + [[package]] 4361 + name = "manganis-macro" 4362 + version = "0.6.2" 4363 + source = "registry+https://github.com/rust-lang/crates.io-index" 4364 + checksum = "d9f4f71310913c40174d9f0cfcbcb127dad0329ecdb3945678a120db22d3d065" 4365 + dependencies = [ 4366 + "dunce", 4367 + "manganis-core", 4368 + "proc-macro2", 4369 + "quote", 4370 + "syn 2.0.108", 4371 + ] 4372 + 4373 + [[package]] 4374 name = "markdown-weaver" 4375 version = "0.13.0" 4376 source = "git+https://github.com/rsform/markdown-weaver#46f3eee6c93118da84a5de3d25fef642735aedd2" ··· 4390 4391 [[package]] 4392 name = "markup5ever" 4393 + version = "0.11.0" 4394 + source = "registry+https://github.com/rust-lang/crates.io-index" 4395 + checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" 4396 + dependencies = [ 4397 + "log", 4398 + "phf 0.10.1", 4399 + "phf_codegen 0.10.0", 4400 + "string_cache", 4401 + "string_cache_codegen", 4402 + "tendril", 4403 + ] 4404 + 4405 + [[package]] 4406 + name = "markup5ever" 4407 version = "0.12.1" 4408 source = "registry+https://github.com/rust-lang/crates.io-index" 4409 checksum = "16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45" 4410 dependencies = [ 4411 "log", 4412 "phf 0.11.3", 4413 + "phf_codegen 0.11.3", 4414 "string_cache", 4415 "string_cache_codegen", 4416 "tendril", ··· 4422 source = "registry+https://github.com/rust-lang/crates.io-index" 4423 checksum = "edaa21ab3701bfee5099ade5f7e1f84553fd19228cf332f13cd6e964bf59be18" 4424 dependencies = [ 4425 + "html5ever 0.27.0", 4426 + "markup5ever 0.12.1", 4427 "tendril", 4428 "xml5ever", 4429 ] ··· 4449 ] 4450 4451 [[package]] 4452 + name = "matches" 4453 + version = "0.1.10" 4454 + source = "registry+https://github.com/rust-lang/crates.io-index" 4455 + checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" 4456 + 4457 + [[package]] 4458 name = "matchit" 4459 version = "0.8.4" 4460 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4495 checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" 4496 4497 [[package]] 4498 + name = "memoffset" 4499 + version = "0.9.1" 4500 + source = "registry+https://github.com/rust-lang/crates.io-index" 4501 + checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" 4502 + dependencies = [ 4503 + "autocfg", 4504 + ] 4505 + 4506 + [[package]] 4507 name = "miette" 4508 version = "5.10.0" 4509 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4636 checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" 4637 dependencies = [ 4638 "libc", 4639 + "wasi 0.11.1+wasi-snapshot-preview1", 4640 "windows-sys 0.61.2", 4641 ] 4642 ··· 4662 ] 4663 4664 [[package]] 4665 + name = "muda" 4666 + version = "0.11.5" 4667 + source = "registry+https://github.com/rust-lang/crates.io-index" 4668 + checksum = "4c47e7625990fc1af2226ea4f34fb2412b03c12639fcb91868581eb3a6893453" 4669 + dependencies = [ 4670 + "cocoa 0.25.0", 4671 + "crossbeam-channel", 4672 + "gtk", 4673 + "keyboard-types", 4674 + "libxdo", 4675 + "objc", 4676 + "once_cell", 4677 + "png", 4678 + "thiserror 1.0.69", 4679 + "windows-sys 0.52.0", 4680 + ] 4681 + 4682 + [[package]] 4683 + name = "muda" 4684 + version = "0.15.3" 4685 + source = "registry+https://github.com/rust-lang/crates.io-index" 4686 + checksum = "fdae9c00e61cc0579bcac625e8ad22104c60548a025bfc972dc83868a28e1484" 4687 + dependencies = [ 4688 + "crossbeam-channel", 4689 + "dpi", 4690 + "gtk", 4691 + "keyboard-types", 4692 + "libxdo", 4693 + "objc2 0.5.2", 4694 + "objc2-app-kit 0.2.2", 4695 + "objc2-foundation 0.2.2", 4696 + "once_cell", 4697 + "png", 4698 + "thiserror 1.0.69", 4699 + "windows-sys 0.59.0", 4700 + ] 4701 + 4702 + [[package]] 4703 name = "multibase" 4704 version = "0.9.2" 4705 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4747 checksum = "7bb0e5d99e681ab3c938842b96fcb41bf8a7bb4bfdb11ccbd653a7e83e06c794" 4748 dependencies = [ 4749 "cfg_aliases", 4750 + "derive_more 1.0.0", 4751 "futures-buffered", 4752 "futures-lite", 4753 "futures-util", ··· 4779 ] 4780 4781 [[package]] 4782 + name = "ndk" 4783 + version = "0.9.0" 4784 + source = "registry+https://github.com/rust-lang/crates.io-index" 4785 + checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" 4786 + dependencies = [ 4787 + "bitflags 2.10.0", 4788 + "jni-sys", 4789 + "log", 4790 + "ndk-sys", 4791 + "num_enum", 4792 + "raw-window-handle 0.6.2", 4793 + "thiserror 1.0.69", 4794 + ] 4795 + 4796 + [[package]] 4797 name = "ndk-context" 4798 version = "0.1.1" 4799 source = "registry+https://github.com/rust-lang/crates.io-index" 4800 checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" 4801 4802 [[package]] 4803 + name = "ndk-sys" 4804 + version = "0.6.0+11769913" 4805 + source = "registry+https://github.com/rust-lang/crates.io-index" 4806 + checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" 4807 + dependencies = [ 4808 + "jni-sys", 4809 + ] 4810 + 4811 + [[package]] 4812 name = "new_debug_unreachable" 4813 version = "1.0.6" 4814 source = "registry+https://github.com/rust-lang/crates.io-index" 4815 checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" 4816 4817 [[package]] 4818 + name = "nix" 4819 + version = "0.29.0" 4820 + source = "registry+https://github.com/rust-lang/crates.io-index" 4821 + checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" 4822 + dependencies = [ 4823 + "bitflags 2.10.0", 4824 + "cfg-if 1.0.4", 4825 + "cfg_aliases", 4826 + "libc", 4827 + "memoffset", 4828 + ] 4829 + 4830 + [[package]] 4831 + name = "nodrop" 4832 + version = "0.1.14" 4833 + source = "registry+https://github.com/rust-lang/crates.io-index" 4834 + checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" 4835 + 4836 + [[package]] 4837 name = "nom" 4838 version = "3.2.1" 4839 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4851 "memchr 2.7.6", 4852 "minimal-lexical", 4853 ] 4854 4855 [[package]] 4856 name = "nu-ansi-term" ··· 4925 ] 4926 4927 [[package]] 4928 + name = "num_enum" 4929 + version = "0.7.5" 4930 + source = "registry+https://github.com/rust-lang/crates.io-index" 4931 + checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" 4932 + dependencies = [ 4933 + "num_enum_derive", 4934 + "rustversion", 4935 + ] 4936 + 4937 + [[package]] 4938 + name = "num_enum_derive" 4939 + version = "0.7.5" 4940 + source = "registry+https://github.com/rust-lang/crates.io-index" 4941 + checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" 4942 + dependencies = [ 4943 + "proc-macro-crate 3.4.0", 4944 + "proc-macro2", 4945 + "quote", 4946 + "syn 2.0.108", 4947 + ] 4948 + 4949 + [[package]] 4950 name = "num_threads" 4951 version = "0.1.7" 4952 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4962 checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 4963 dependencies = [ 4964 "malloc_buf", 4965 + "objc_exception", 4966 + ] 4967 + 4968 + [[package]] 4969 + name = "objc-foundation" 4970 + version = "0.1.1" 4971 + source = "registry+https://github.com/rust-lang/crates.io-index" 4972 + checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" 4973 + dependencies = [ 4974 + "block", 4975 + "objc", 4976 + "objc_id", 4977 + ] 4978 + 4979 + [[package]] 4980 + name = "objc-sys" 4981 + version = "0.3.5" 4982 + source = "registry+https://github.com/rust-lang/crates.io-index" 4983 + checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" 4984 + 4985 + [[package]] 4986 + name = "objc2" 4987 + version = "0.5.2" 4988 + source = "registry+https://github.com/rust-lang/crates.io-index" 4989 + checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" 4990 + dependencies = [ 4991 + "objc-sys", 4992 + "objc2-encode", 4993 + ] 4994 + 4995 + [[package]] 4996 + name = "objc2" 4997 + version = "0.6.3" 4998 + source = "registry+https://github.com/rust-lang/crates.io-index" 4999 + checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" 5000 + dependencies = [ 5001 + "objc2-encode", 5002 + ] 5003 + 5004 + [[package]] 5005 + name = "objc2-app-kit" 5006 + version = "0.2.2" 5007 + source = "registry+https://github.com/rust-lang/crates.io-index" 5008 + checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" 5009 + dependencies = [ 5010 + "bitflags 2.10.0", 5011 + "block2 0.5.1", 5012 + "libc", 5013 + "objc2 0.5.2", 5014 + "objc2-core-data", 5015 + "objc2-core-image", 5016 + "objc2-foundation 0.2.2", 5017 + "objc2-quartz-core", 5018 + ] 5019 + 5020 + [[package]] 5021 + name = "objc2-app-kit" 5022 + version = "0.3.2" 5023 + source = "registry+https://github.com/rust-lang/crates.io-index" 5024 + checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" 5025 + dependencies = [ 5026 + "bitflags 2.10.0", 5027 + "objc2 0.6.3", 5028 + "objc2-core-foundation", 5029 + "objc2-foundation 0.3.2", 5030 + ] 5031 + 5032 + [[package]] 5033 + name = "objc2-core-data" 5034 + version = "0.2.2" 5035 + source = "registry+https://github.com/rust-lang/crates.io-index" 5036 + checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" 5037 + dependencies = [ 5038 + "bitflags 2.10.0", 5039 + "block2 0.5.1", 5040 + "objc2 0.5.2", 5041 + "objc2-foundation 0.2.2", 5042 + ] 5043 + 5044 + [[package]] 5045 + name = "objc2-core-foundation" 5046 + version = "0.3.2" 5047 + source = "registry+https://github.com/rust-lang/crates.io-index" 5048 + checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" 5049 + dependencies = [ 5050 + "bitflags 2.10.0", 5051 + "dispatch2", 5052 + "objc2 0.6.3", 5053 + ] 5054 + 5055 + [[package]] 5056 + name = "objc2-core-graphics" 5057 + version = "0.3.2" 5058 + source = "registry+https://github.com/rust-lang/crates.io-index" 5059 + checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" 5060 + dependencies = [ 5061 + "bitflags 2.10.0", 5062 + "objc2-core-foundation", 5063 + ] 5064 + 5065 + [[package]] 5066 + name = "objc2-core-image" 5067 + version = "0.2.2" 5068 + source = "registry+https://github.com/rust-lang/crates.io-index" 5069 + checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" 5070 + dependencies = [ 5071 + "block2 0.5.1", 5072 + "objc2 0.5.2", 5073 + "objc2-foundation 0.2.2", 5074 + "objc2-metal", 5075 + ] 5076 + 5077 + [[package]] 5078 + name = "objc2-encode" 5079 + version = "4.1.0" 5080 + source = "registry+https://github.com/rust-lang/crates.io-index" 5081 + checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" 5082 + 5083 + [[package]] 5084 + name = "objc2-foundation" 5085 + version = "0.2.2" 5086 + source = "registry+https://github.com/rust-lang/crates.io-index" 5087 + checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" 5088 + dependencies = [ 5089 + "bitflags 2.10.0", 5090 + "block2 0.5.1", 5091 + "libc", 5092 + "objc2 0.5.2", 5093 + ] 5094 + 5095 + [[package]] 5096 + name = "objc2-foundation" 5097 + version = "0.3.2" 5098 + source = "registry+https://github.com/rust-lang/crates.io-index" 5099 + checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" 5100 + dependencies = [ 5101 + "bitflags 2.10.0", 5102 + "block2 0.6.2", 5103 + "objc2 0.6.3", 5104 + "objc2-core-foundation", 5105 + ] 5106 + 5107 + [[package]] 5108 + name = "objc2-metal" 5109 + version = "0.2.2" 5110 + source = "registry+https://github.com/rust-lang/crates.io-index" 5111 + checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" 5112 + dependencies = [ 5113 + "bitflags 2.10.0", 5114 + "block2 0.5.1", 5115 + "objc2 0.5.2", 5116 + "objc2-foundation 0.2.2", 5117 + ] 5118 + 5119 + [[package]] 5120 + name = "objc2-quartz-core" 5121 + version = "0.2.2" 5122 + source = "registry+https://github.com/rust-lang/crates.io-index" 5123 + checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" 5124 + dependencies = [ 5125 + "bitflags 2.10.0", 5126 + "block2 0.5.1", 5127 + "objc2 0.5.2", 5128 + "objc2-foundation 0.2.2", 5129 + "objc2-metal", 5130 + ] 5131 + 5132 + [[package]] 5133 + name = "objc_exception" 5134 + version = "0.1.2" 5135 + source = "registry+https://github.com/rust-lang/crates.io-index" 5136 + checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" 5137 + dependencies = [ 5138 + "cc", 5139 + ] 5140 + 5141 + [[package]] 5142 + name = "objc_id" 5143 + version = "0.1.1" 5144 + source = "registry+https://github.com/rust-lang/crates.io-index" 5145 + checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" 5146 + dependencies = [ 5147 + "objc", 5148 ] 5149 5150 [[package]] ··· 5198 dependencies = [ 5199 "bitflags 2.10.0", 5200 "cfg-if 1.0.4", 5201 + "foreign-types 0.3.2", 5202 "libc", 5203 "once_cell", 5204 "openssl-macros", ··· 5250 ] 5251 5252 [[package]] 5253 + name = "ordered-stream" 5254 + version = "0.2.0" 5255 + source = "registry+https://github.com/rust-lang/crates.io-index" 5256 + checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" 5257 + dependencies = [ 5258 + "futures-core", 5259 + "pin-project-lite", 5260 + ] 5261 + 5262 + [[package]] 5263 name = "ouroboros" 5264 version = "0.18.5" 5265 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5314 ] 5315 5316 [[package]] 5317 + name = "pango" 5318 + version = "0.18.3" 5319 + source = "registry+https://github.com/rust-lang/crates.io-index" 5320 + checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" 5321 + dependencies = [ 5322 + "gio", 5323 + "glib", 5324 + "libc", 5325 + "once_cell", 5326 + "pango-sys", 5327 + ] 5328 + 5329 + [[package]] 5330 + name = "pango-sys" 5331 + version = "0.18.0" 5332 + source = "registry+https://github.com/rust-lang/crates.io-index" 5333 + checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" 5334 + dependencies = [ 5335 + "glib-sys", 5336 + "gobject-sys", 5337 + "libc", 5338 + "system-deps", 5339 + ] 5340 + 5341 + [[package]] 5342 name = "parking" 5343 version = "2.2.1" 5344 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5424 5425 [[package]] 5426 name = "phf" 5427 + version = "0.8.0" 5428 + source = "registry+https://github.com/rust-lang/crates.io-index" 5429 + checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" 5430 + dependencies = [ 5431 + "phf_macros", 5432 + "phf_shared 0.8.0", 5433 + "proc-macro-hack", 5434 + ] 5435 + 5436 + [[package]] 5437 + name = "phf" 5438 + version = "0.10.1" 5439 + source = "registry+https://github.com/rust-lang/crates.io-index" 5440 + checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" 5441 + dependencies = [ 5442 + "phf_shared 0.10.0", 5443 + ] 5444 + 5445 + [[package]] 5446 + name = "phf" 5447 version = "0.11.3" 5448 source = "registry+https://github.com/rust-lang/crates.io-index" 5449 checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" ··· 5463 5464 [[package]] 5465 name = "phf_codegen" 5466 + version = "0.8.0" 5467 + source = "registry+https://github.com/rust-lang/crates.io-index" 5468 + checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" 5469 + dependencies = [ 5470 + "phf_generator 0.8.0", 5471 + "phf_shared 0.8.0", 5472 + ] 5473 + 5474 + [[package]] 5475 + name = "phf_codegen" 5476 + version = "0.10.0" 5477 + source = "registry+https://github.com/rust-lang/crates.io-index" 5478 + checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" 5479 + dependencies = [ 5480 + "phf_generator 0.10.0", 5481 + "phf_shared 0.10.0", 5482 + ] 5483 + 5484 + [[package]] 5485 + name = "phf_codegen" 5486 version = "0.11.3" 5487 source = "registry+https://github.com/rust-lang/crates.io-index" 5488 checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" 5489 dependencies = [ 5490 + "phf_generator 0.11.3", 5491 "phf_shared 0.11.3", 5492 ] 5493 5494 [[package]] 5495 name = "phf_generator" 5496 + version = "0.8.0" 5497 + source = "registry+https://github.com/rust-lang/crates.io-index" 5498 + checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" 5499 + dependencies = [ 5500 + "phf_shared 0.8.0", 5501 + "rand 0.7.3", 5502 + ] 5503 + 5504 + [[package]] 5505 + name = "phf_generator" 5506 + version = "0.10.0" 5507 + source = "registry+https://github.com/rust-lang/crates.io-index" 5508 + checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" 5509 + dependencies = [ 5510 + "phf_shared 0.10.0", 5511 + "rand 0.8.5", 5512 + ] 5513 + 5514 + [[package]] 5515 + name = "phf_generator" 5516 version = "0.11.3" 5517 source = "registry+https://github.com/rust-lang/crates.io-index" 5518 checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" ··· 5522 ] 5523 5524 [[package]] 5525 + name = "phf_macros" 5526 + version = "0.8.0" 5527 + source = "registry+https://github.com/rust-lang/crates.io-index" 5528 + checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" 5529 + dependencies = [ 5530 + "phf_generator 0.8.0", 5531 + "phf_shared 0.8.0", 5532 + "proc-macro-hack", 5533 + "proc-macro2", 5534 + "quote", 5535 + "syn 1.0.109", 5536 + ] 5537 + 5538 + [[package]] 5539 + name = "phf_shared" 5540 + version = "0.8.0" 5541 + source = "registry+https://github.com/rust-lang/crates.io-index" 5542 + checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" 5543 + dependencies = [ 5544 + "siphasher 0.3.11", 5545 + ] 5546 + 5547 + [[package]] 5548 + name = "phf_shared" 5549 + version = "0.10.0" 5550 + source = "registry+https://github.com/rust-lang/crates.io-index" 5551 + checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" 5552 + dependencies = [ 5553 + "siphasher 0.3.11", 5554 + ] 5555 + 5556 + [[package]] 5557 name = "phf_shared" 5558 version = "0.11.3" 5559 source = "registry+https://github.com/rust-lang/crates.io-index" 5560 checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" 5561 dependencies = [ 5562 + "siphasher 1.0.1", 5563 ] 5564 5565 [[package]] ··· 5568 source = "registry+https://github.com/rust-lang/crates.io-index" 5569 checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" 5570 dependencies = [ 5571 + "siphasher 1.0.1", 5572 ] 5573 5574 [[package]] ··· 5602 version = "0.1.0" 5603 source = "registry+https://github.com/rust-lang/crates.io-index" 5604 checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 5605 + 5606 + [[package]] 5607 + name = "piper" 5608 + version = "0.2.4" 5609 + source = "registry+https://github.com/rust-lang/crates.io-index" 5610 + checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" 5611 + dependencies = [ 5612 + "atomic-waker", 5613 + "fastrand", 5614 + "futures-io", 5615 + ] 5616 5617 [[package]] 5618 name = "pkcs1" ··· 5655 ] 5656 5657 [[package]] 5658 + name = "png" 5659 + version = "0.17.16" 5660 + source = "registry+https://github.com/rust-lang/crates.io-index" 5661 + checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" 5662 + dependencies = [ 5663 + "bitflags 1.3.2", 5664 + "crc32fast", 5665 + "fdeflate", 5666 + "flate2", 5667 + "miniz_oxide", 5668 + ] 5669 + 5670 + [[package]] 5671 + name = "polling" 5672 + version = "3.11.0" 5673 + source = "registry+https://github.com/rust-lang/crates.io-index" 5674 + checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" 5675 + dependencies = [ 5676 + "cfg-if 1.0.4", 5677 + "concurrent-queue", 5678 + "hermit-abi 0.5.2", 5679 + "pin-project-lite", 5680 + "rustix", 5681 + "windows-sys 0.61.2", 5682 + ] 5683 + 5684 + [[package]] 5685 + name = "pollster" 5686 + version = "0.3.0" 5687 + source = "registry+https://github.com/rust-lang/crates.io-index" 5688 + checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2" 5689 + 5690 + [[package]] 5691 name = "portable-atomic" 5692 version = "1.11.1" 5693 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5783 ] 5784 5785 [[package]] 5786 + name = "proc-macro-crate" 5787 + version = "1.3.1" 5788 + source = "registry+https://github.com/rust-lang/crates.io-index" 5789 + checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" 5790 + dependencies = [ 5791 + "once_cell", 5792 + "toml_edit 0.19.15", 5793 + ] 5794 + 5795 + [[package]] 5796 + name = "proc-macro-crate" 5797 + version = "2.0.0" 5798 + source = "registry+https://github.com/rust-lang/crates.io-index" 5799 + checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" 5800 + dependencies = [ 5801 + "toml_edit 0.20.7", 5802 + ] 5803 + 5804 + [[package]] 5805 + name = "proc-macro-crate" 5806 + version = "3.4.0" 5807 + source = "registry+https://github.com/rust-lang/crates.io-index" 5808 + checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" 5809 + dependencies = [ 5810 + "toml_edit 0.23.7", 5811 + ] 5812 + 5813 + [[package]] 5814 name = "proc-macro-error" 5815 version = "1.0.4" 5816 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5835 ] 5836 5837 [[package]] 5838 + name = "proc-macro-hack" 5839 + version = "0.5.20+deprecated" 5840 + source = "registry+https://github.com/rust-lang/crates.io-index" 5841 + checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" 5842 + 5843 + [[package]] 5844 name = "proc-macro2" 5845 version = "1.0.103" 5846 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5888 "pin-project-lite", 5889 "quinn-proto", 5890 "quinn-udp", 5891 + "rustc-hash 2.1.1", 5892 "rustls", 5893 "socket2 0.6.1", 5894 "thiserror 2.0.17", ··· 5908 "lru-slab", 5909 "rand 0.9.2", 5910 "ring", 5911 + "rustc-hash 2.1.1", 5912 "rustls", 5913 "rustls-pki-types", 5914 "slab", ··· 5949 5950 [[package]] 5951 name = "rand" 5952 + version = "0.7.3" 5953 + source = "registry+https://github.com/rust-lang/crates.io-index" 5954 + checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 5955 + dependencies = [ 5956 + "getrandom 0.1.16", 5957 + "libc", 5958 + "rand_chacha 0.2.2", 5959 + "rand_core 0.5.1", 5960 + "rand_hc", 5961 + "rand_pcg", 5962 + ] 5963 + 5964 + [[package]] 5965 + name = "rand" 5966 version = "0.8.5" 5967 source = "registry+https://github.com/rust-lang/crates.io-index" 5968 checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" ··· 5980 dependencies = [ 5981 "rand_chacha 0.9.0", 5982 "rand_core 0.9.3", 5983 + ] 5984 + 5985 + [[package]] 5986 + name = "rand_chacha" 5987 + version = "0.2.2" 5988 + source = "registry+https://github.com/rust-lang/crates.io-index" 5989 + checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 5990 + dependencies = [ 5991 + "ppv-lite86", 5992 + "rand_core 0.5.1", 5993 ] 5994 5995 [[package]] ··· 6014 6015 [[package]] 6016 name = "rand_core" 6017 + version = "0.5.1" 6018 + source = "registry+https://github.com/rust-lang/crates.io-index" 6019 + checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 6020 + dependencies = [ 6021 + "getrandom 0.1.16", 6022 + ] 6023 + 6024 + [[package]] 6025 + name = "rand_core" 6026 version = "0.6.4" 6027 source = "registry+https://github.com/rust-lang/crates.io-index" 6028 checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" ··· 6040 ] 6041 6042 [[package]] 6043 + name = "rand_hc" 6044 + version = "0.2.0" 6045 + source = "registry+https://github.com/rust-lang/crates.io-index" 6046 + checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 6047 + dependencies = [ 6048 + "rand_core 0.5.1", 6049 + ] 6050 + 6051 + [[package]] 6052 + name = "rand_pcg" 6053 + version = "0.2.1" 6054 + source = "registry+https://github.com/rust-lang/crates.io-index" 6055 + checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" 6056 + dependencies = [ 6057 + "rand_core 0.5.1", 6058 + ] 6059 + 6060 + [[package]] 6061 name = "range-traits" 6062 version = "0.3.2" 6063 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6068 version = "0.5.2" 6069 source = "registry+https://github.com/rust-lang/crates.io-index" 6070 checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" 6071 + 6072 + [[package]] 6073 + name = "raw-window-handle" 6074 + version = "0.6.2" 6075 + source = "registry+https://github.com/rust-lang/crates.io-index" 6076 + checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" 6077 6078 [[package]] 6079 name = "redox_syscall" ··· 6173 "js-sys", 6174 "log", 6175 "mime", 6176 + "mime_guess", 6177 "native-tls", 6178 "percent-encoding", 6179 "pin-project-lite", ··· 6216 ] 6217 6218 [[package]] 6219 + name = "rfd" 6220 + version = "0.14.1" 6221 + source = "registry+https://github.com/rust-lang/crates.io-index" 6222 + checksum = "25a73a7337fc24366edfca76ec521f51877b114e42dab584008209cca6719251" 6223 + dependencies = [ 6224 + "ashpd", 6225 + "block", 6226 + "dispatch", 6227 + "js-sys", 6228 + "log", 6229 + "objc", 6230 + "objc-foundation", 6231 + "objc_id", 6232 + "pollster", 6233 + "raw-window-handle 0.6.2", 6234 + "urlencoding", 6235 + "wasm-bindgen", 6236 + "wasm-bindgen-futures", 6237 + "web-sys", 6238 + "windows-sys 0.48.0", 6239 + ] 6240 + 6241 + [[package]] 6242 name = "ring" 6243 version = "0.17.14" 6244 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6301 version = "0.1.26" 6302 source = "registry+https://github.com/rust-lang/crates.io-index" 6303 checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" 6304 + 6305 + [[package]] 6306 + name = "rustc-hash" 6307 + version = "1.1.0" 6308 + source = "registry+https://github.com/rust-lang/crates.io-index" 6309 + checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 6310 6311 [[package]] 6312 name = "rustc-hash" ··· 6532 ] 6533 6534 [[package]] 6535 + name = "selectors" 6536 + version = "0.22.0" 6537 + source = "registry+https://github.com/rust-lang/crates.io-index" 6538 + checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" 6539 + dependencies = [ 6540 + "bitflags 1.3.2", 6541 + "cssparser", 6542 + "derive_more 0.99.20", 6543 + "fxhash", 6544 + "log", 6545 + "matches", 6546 + "phf 0.8.0", 6547 + "phf_codegen 0.8.0", 6548 + "precomputed-hash", 6549 + "servo_arc", 6550 + "smallvec", 6551 + "thin-slice", 6552 + ] 6553 + 6554 + [[package]] 6555 name = "semver" 6556 version = "1.0.27" 6557 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6562 version = "0.6.0" 6563 source = "registry+https://github.com/rust-lang/crates.io-index" 6564 checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" 6565 + dependencies = [ 6566 + "futures-core", 6567 + ] 6568 6569 [[package]] 6570 name = "serde" ··· 6587 ] 6588 6589 [[package]] 6590 + name = "serde-wasm-bindgen" 6591 + version = "0.5.0" 6592 + source = "registry+https://github.com/rust-lang/crates.io-index" 6593 + checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" 6594 + dependencies = [ 6595 + "js-sys", 6596 + "serde", 6597 + "wasm-bindgen", 6598 + ] 6599 + 6600 + [[package]] 6601 name = "serde_bytes" 6602 version = "0.11.19" 6603 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6645 dependencies = [ 6646 "form_urlencoded", 6647 "indexmap 2.12.0", 6648 + "itoa 1.0.15", 6649 "ryu", 6650 "serde_core", 6651 ] ··· 6669 checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" 6670 dependencies = [ 6671 "indexmap 2.12.0", 6672 + "itoa 1.0.15", 6673 "memchr 2.7.6", 6674 "ryu", 6675 "serde", ··· 6682 source = "registry+https://github.com/rust-lang/crates.io-index" 6683 checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" 6684 dependencies = [ 6685 + "itoa 1.0.15", 6686 "serde", 6687 "serde_core", 6688 ] 6689 6690 [[package]] 6691 + name = "serde_qs" 6692 + version = "0.12.0" 6693 + source = "registry+https://github.com/rust-lang/crates.io-index" 6694 + checksum = "0431a35568651e363364210c91983c1da5eb29404d9f0928b67d4ebcfa7d330c" 6695 + dependencies = [ 6696 + "percent-encoding", 6697 + "serde", 6698 + "thiserror 1.0.69", 6699 + ] 6700 + 6701 + [[package]] 6702 name = "serde_repr" 6703 version = "0.1.20" 6704 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6734 checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 6735 dependencies = [ 6736 "form_urlencoded", 6737 + "itoa 1.0.15", 6738 "ryu", 6739 "serde", 6740 ] ··· 6781 ] 6782 6783 [[package]] 6784 + name = "server_fn" 6785 + version = "0.6.15" 6786 + source = "registry+https://github.com/rust-lang/crates.io-index" 6787 + checksum = "4fae7a3038a32e5a34ba32c6c45eb4852f8affaf8b794ebfcd4b1099e2d62ebe" 6788 + dependencies = [ 6789 + "bytes", 6790 + "const_format", 6791 + "dashmap 5.5.3", 6792 + "futures", 6793 + "gloo-net", 6794 + "http", 6795 + "js-sys", 6796 + "once_cell", 6797 + "reqwest", 6798 + "send_wrapper", 6799 + "serde", 6800 + "serde_json", 6801 + "serde_qs", 6802 + "server_fn_macro_default", 6803 + "thiserror 1.0.69", 6804 + "url", 6805 + "wasm-bindgen", 6806 + "wasm-bindgen-futures", 6807 + "wasm-streams", 6808 + "web-sys", 6809 + "xxhash-rust", 6810 + ] 6811 + 6812 + [[package]] 6813 + name = "server_fn_macro" 6814 + version = "0.6.15" 6815 + source = "registry+https://github.com/rust-lang/crates.io-index" 6816 + checksum = "faaaf648c6967aef78177c0610478abb5a3455811f401f3c62d10ae9bd3901a1" 6817 + dependencies = [ 6818 + "const_format", 6819 + "convert_case 0.6.0", 6820 + "proc-macro2", 6821 + "quote", 6822 + "syn 2.0.108", 6823 + "xxhash-rust", 6824 + ] 6825 + 6826 + [[package]] 6827 + name = "server_fn_macro_default" 6828 + version = "0.6.15" 6829 + source = "registry+https://github.com/rust-lang/crates.io-index" 6830 + checksum = "7f2aa8119b558a17992e0ac1fd07f080099564f24532858811ce04f742542440" 6831 + dependencies = [ 6832 + "server_fn_macro", 6833 + "syn 2.0.108", 6834 + ] 6835 + 6836 + [[package]] 6837 + name = "servo_arc" 6838 + version = "0.1.1" 6839 + source = "registry+https://github.com/rust-lang/crates.io-index" 6840 + checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" 6841 + dependencies = [ 6842 + "nodrop", 6843 + "stable_deref_trait", 6844 + ] 6845 + 6846 + [[package]] 6847 name = "sha1" 6848 version = "0.10.6" 6849 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6885 version = "1.3.0" 6886 source = "registry+https://github.com/rust-lang/crates.io-index" 6887 checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 6888 + 6889 + [[package]] 6890 + name = "signal-hook" 6891 + version = "0.3.18" 6892 + source = "registry+https://github.com/rust-lang/crates.io-index" 6893 + checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" 6894 + dependencies = [ 6895 + "libc", 6896 + "signal-hook-registry", 6897 + ] 6898 6899 [[package]] 6900 name = "signal-hook-registry" ··· 6929 6930 [[package]] 6931 name = "siphasher" 6932 + version = "0.3.11" 6933 + source = "registry+https://github.com/rust-lang/crates.io-index" 6934 + checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" 6935 + 6936 + [[package]] 6937 + name = "siphasher" 6938 version = "1.0.1" 6939 source = "registry+https://github.com/rust-lang/crates.io-index" 6940 checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" ··· 6946 checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" 6947 6948 [[package]] 6949 + name = "sledgehammer_bindgen" 6950 + version = "0.6.0" 6951 + source = "registry+https://github.com/rust-lang/crates.io-index" 6952 + checksum = "49e83e178d176459c92bc129cfd0958afac3ced925471b889b3a75546cfc4133" 6953 + dependencies = [ 6954 + "sledgehammer_bindgen_macro", 6955 + "wasm-bindgen", 6956 + ] 6957 + 6958 + [[package]] 6959 + name = "sledgehammer_bindgen_macro" 6960 + version = "0.6.1" 6961 + source = "registry+https://github.com/rust-lang/crates.io-index" 6962 + checksum = "f62f06db0370222f7f498ef478fce9f8df5828848d1d3517e3331936d7074f55" 6963 + dependencies = [ 6964 + "quote", 6965 + "syn 2.0.108", 6966 + ] 6967 + 6968 + [[package]] 6969 + name = "sledgehammer_utils" 6970 + version = "0.3.1" 6971 + source = "registry+https://github.com/rust-lang/crates.io-index" 6972 + checksum = "debdd4b83524961983cea3c55383b3910fd2f24fd13a188f5b091d2d504a61ae" 6973 + dependencies = [ 6974 + "rustc-hash 1.1.0", 6975 + ] 6976 + 6977 + [[package]] 6978 + name = "slotmap" 6979 + version = "1.0.7" 6980 + source = "registry+https://github.com/rust-lang/crates.io-index" 6981 + checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" 6982 + dependencies = [ 6983 + "serde", 6984 + "version_check", 6985 + ] 6986 + 6987 + [[package]] 6988 name = "smallvec" 6989 version = "1.15.1" 6990 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 7021 ] 7022 7023 [[package]] 7024 + name = "soup3" 7025 + version = "0.5.0" 7026 + source = "registry+https://github.com/rust-lang/crates.io-index" 7027 + checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" 7028 + dependencies = [ 7029 + "futures-channel", 7030 + "gio", 7031 + "glib", 7032 + "libc", 7033 + "soup3-sys", 7034 + ] 7035 + 7036 + [[package]] 7037 + name = "soup3-sys" 7038 + version = "0.5.0" 7039 + source = "registry+https://github.com/rust-lang/crates.io-index" 7040 + checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" 7041 + dependencies = [ 7042 + "gio-sys", 7043 + "glib-sys", 7044 + "gobject-sys", 7045 + "libc", 7046 + "system-deps", 7047 + ] 7048 + 7049 + [[package]] 7050 name = "spin" 7051 version = "0.9.8" 7052 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 7119 source = "registry+https://github.com/rust-lang/crates.io-index" 7120 checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" 7121 dependencies = [ 7122 + "phf_generator 0.11.3", 7123 "phf_shared 0.11.3", 7124 "proc-macro2", 7125 "quote", ··· 7261 ] 7262 7263 [[package]] 7264 + name = "system-deps" 7265 + version = "6.2.2" 7266 + source = "registry+https://github.com/rust-lang/crates.io-index" 7267 + checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" 7268 + dependencies = [ 7269 + "cfg-expr", 7270 + "heck 0.5.0", 7271 + "pkg-config", 7272 + "toml 0.8.23", 7273 + "version-compare", 7274 + ] 7275 + 7276 + [[package]] 7277 name = "tabwriter" 7278 version = "1.4.1" 7279 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 7289 checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" 7290 7291 [[package]] 7292 + name = "tao" 7293 + version = "0.30.8" 7294 + source = "registry+https://github.com/rust-lang/crates.io-index" 7295 + checksum = "6682a07cf5bab0b8a2bd20d0a542917ab928b5edb75ebd4eda6b05cbaab872da" 7296 + dependencies = [ 7297 + "bitflags 2.10.0", 7298 + "cocoa 0.26.1", 7299 + "core-foundation 0.10.1", 7300 + "core-graphics 0.24.0", 7301 + "crossbeam-channel", 7302 + "dispatch", 7303 + "dlopen2", 7304 + "dpi", 7305 + "gdkwayland-sys", 7306 + "gdkx11-sys", 7307 + "gtk", 7308 + "instant", 7309 + "jni", 7310 + "lazy_static", 7311 + "libc", 7312 + "log", 7313 + "ndk", 7314 + "ndk-context", 7315 + "ndk-sys", 7316 + "objc", 7317 + "once_cell", 7318 + "parking_lot 0.12.5", 7319 + "raw-window-handle 0.5.2", 7320 + "raw-window-handle 0.6.2", 7321 + "scopeguard", 7322 + "tao-macros", 7323 + "unicode-segmentation", 7324 + "url", 7325 + "windows 0.58.0", 7326 + "windows-core 0.58.0", 7327 + "windows-version", 7328 + "x11-dl", 7329 + ] 7330 + 7331 + [[package]] 7332 + name = "tao-macros" 7333 + version = "0.1.3" 7334 + source = "registry+https://github.com/rust-lang/crates.io-index" 7335 + checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" 7336 + dependencies = [ 7337 + "proc-macro2", 7338 + "quote", 7339 + "syn 2.0.108", 7340 + ] 7341 + 7342 + [[package]] 7343 + name = "target-lexicon" 7344 + version = "0.12.16" 7345 + source = "registry+https://github.com/rust-lang/crates.io-index" 7346 + checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" 7347 + 7348 + [[package]] 7349 name = "tempfile" 7350 version = "3.23.0" 7351 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 7399 ] 7400 7401 [[package]] 7402 + name = "thin-slice" 7403 + version = "0.1.1" 7404 + source = "registry+https://github.com/rust-lang/crates.io-index" 7405 + checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" 7406 + 7407 + [[package]] 7408 name = "thiserror" 7409 version = "1.0.69" 7410 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 7469 checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" 7470 dependencies = [ 7471 "deranged", 7472 + "itoa 1.0.15", 7473 "libc", 7474 "num-conv", 7475 "num_threads", ··· 7546 "signal-hook-registry", 7547 "socket2 0.6.1", 7548 "tokio-macros", 7549 + "tracing", 7550 "windows-sys 0.61.2", 7551 ] 7552 ··· 7620 "rustls-pki-types", 7621 "tokio", 7622 "tokio-rustls", 7623 + "tungstenite 0.24.0", 7624 ] 7625 7626 [[package]] ··· 7666 "serde", 7667 "serde_spanned 0.6.9", 7668 "toml_datetime 0.6.11", 7669 + "toml_edit 0.22.27", 7670 ] 7671 7672 [[package]] ··· 7681 "toml_datetime 0.7.3", 7682 "toml_parser", 7683 "toml_writer", 7684 + "winnow 0.7.13", 7685 ] 7686 7687 [[package]] ··· 7704 7705 [[package]] 7706 name = "toml_edit" 7707 + version = "0.19.15" 7708 + source = "registry+https://github.com/rust-lang/crates.io-index" 7709 + checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" 7710 + dependencies = [ 7711 + "indexmap 2.12.0", 7712 + "toml_datetime 0.6.11", 7713 + "winnow 0.5.40", 7714 + ] 7715 + 7716 + [[package]] 7717 + name = "toml_edit" 7718 + version = "0.20.7" 7719 + source = "registry+https://github.com/rust-lang/crates.io-index" 7720 + checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" 7721 + dependencies = [ 7722 + "indexmap 2.12.0", 7723 + "toml_datetime 0.6.11", 7724 + "winnow 0.5.40", 7725 + ] 7726 + 7727 + [[package]] 7728 + name = "toml_edit" 7729 version = "0.22.27" 7730 source = "registry+https://github.com/rust-lang/crates.io-index" 7731 checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" ··· 7735 "serde_spanned 0.6.9", 7736 "toml_datetime 0.6.11", 7737 "toml_write", 7738 + "winnow 0.7.13", 7739 + ] 7740 + 7741 + [[package]] 7742 + name = "toml_edit" 7743 + version = "0.23.7" 7744 + source = "registry+https://github.com/rust-lang/crates.io-index" 7745 + checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" 7746 + dependencies = [ 7747 + "indexmap 2.12.0", 7748 + "toml_datetime 0.7.3", 7749 + "toml_parser", 7750 + "winnow 0.7.13", 7751 ] 7752 7753 [[package]] ··· 7756 source = "registry+https://github.com/rust-lang/crates.io-index" 7757 checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" 7758 dependencies = [ 7759 + "winnow 0.7.13", 7760 ] 7761 7762 [[package]] ··· 7933 ] 7934 7935 [[package]] 7936 + name = "tracing-wasm" 7937 + version = "0.2.1" 7938 + source = "registry+https://github.com/rust-lang/crates.io-index" 7939 + checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07" 7940 + dependencies = [ 7941 + "tracing", 7942 + "tracing-subscriber", 7943 + "wasm-bindgen", 7944 + ] 7945 + 7946 + [[package]] 7947 name = "trait-variant" 7948 version = "0.1.2" 7949 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 7955 ] 7956 7957 [[package]] 7958 + name = "tray-icon" 7959 + version = "0.19.3" 7960 + source = "registry+https://github.com/rust-lang/crates.io-index" 7961 + checksum = "eadd75f5002e2513eaa19b2365f533090cc3e93abd38788452d9ea85cff7b48a" 7962 + dependencies = [ 7963 + "crossbeam-channel", 7964 + "dirs", 7965 + "libappindicator", 7966 + "muda 0.15.3", 7967 + "objc2 0.6.3", 7968 + "objc2-app-kit 0.3.2", 7969 + "objc2-core-foundation", 7970 + "objc2-core-graphics", 7971 + "objc2-foundation 0.3.2", 7972 + "once_cell", 7973 + "png", 7974 + "thiserror 2.0.17", 7975 + "windows-sys 0.59.0", 7976 + ] 7977 + 7978 + [[package]] 7979 name = "tree_magic" 7980 version = "0.2.3" 7981 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 8001 8002 [[package]] 8003 name = "tungstenite" 8004 + version = "0.23.0" 8005 + source = "registry+https://github.com/rust-lang/crates.io-index" 8006 + checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" 8007 + dependencies = [ 8008 + "byteorder", 8009 + "bytes", 8010 + "data-encoding", 8011 + "http", 8012 + "httparse", 8013 + "log", 8014 + "rand 0.8.5", 8015 + "sha1", 8016 + "thiserror 1.0.69", 8017 + "utf-8", 8018 + ] 8019 + 8020 + [[package]] 8021 + name = "tungstenite" 8022 version = "0.24.0" 8023 source = "registry+https://github.com/rust-lang/crates.io-index" 8024 checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" ··· 8051 version = "1.19.0" 8052 source = "registry+https://github.com/rust-lang/crates.io-index" 8053 checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" 8054 + 8055 + [[package]] 8056 + name = "uds_windows" 8057 + version = "1.1.0" 8058 + source = "registry+https://github.com/rust-lang/crates.io-index" 8059 + checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" 8060 + dependencies = [ 8061 + "memoffset", 8062 + "tempfile", 8063 + "winapi", 8064 + ] 8065 8066 [[package]] 8067 name = "unicase" ··· 8205 checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" 8206 8207 [[package]] 8208 + name = "version-compare" 8209 + version = "0.2.1" 8210 + source = "registry+https://github.com/rust-lang/crates.io-index" 8211 + checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e" 8212 + 8213 + [[package]] 8214 name = "version_check" 8215 version = "0.9.5" 8216 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 8236 ] 8237 8238 [[package]] 8239 + name = "warnings" 8240 + version = "0.2.1" 8241 + source = "registry+https://github.com/rust-lang/crates.io-index" 8242 + checksum = "64f68998838dab65727c9b30465595c6f7c953313559371ca8bf31759b3680ad" 8243 + dependencies = [ 8244 + "pin-project", 8245 + "tracing", 8246 + "warnings-macro", 8247 + ] 8248 + 8249 + [[package]] 8250 + name = "warnings-macro" 8251 + version = "0.2.0" 8252 + source = "registry+https://github.com/rust-lang/crates.io-index" 8253 + checksum = "59195a1db0e95b920366d949ba5e0d3fc0e70b67c09be15ce5abb790106b0571" 8254 + dependencies = [ 8255 + "proc-macro2", 8256 + "quote", 8257 + "syn 2.0.108", 8258 + ] 8259 + 8260 + [[package]] 8261 + name = "wasi" 8262 + version = "0.9.0+wasi-snapshot-preview1" 8263 + source = "registry+https://github.com/rust-lang/crates.io-index" 8264 + checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 8265 + 8266 + [[package]] 8267 name = "wasi" 8268 version = "0.11.1+wasi-snapshot-preview1" 8269 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 8378 "axum", 8379 "chrono", 8380 "clap 4.5.51", 8381 + "dashmap 6.1.0", 8382 "diesel", 8383 "diesel-async", 8384 "diesel_migrations", ··· 8469 "async-trait", 8470 "bitflags 2.10.0", 8471 "compact_string", 8472 + "dashmap 6.1.0", 8473 "dynosaur", 8474 "http", 8475 "ignore", ··· 8499 name = "weaver-server" 8500 version = "0.1.0" 8501 dependencies = [ 8502 + "dioxus", 8503 "jacquard", 8504 "weaver-common", 8505 "weaver-workspace-hack", 8506 ] ··· 8557 "tracing", 8558 "tracing-core", 8559 "uuid", 8560 + "winnow 0.7.13", 8561 "zerocopy", 8562 "zeroize", 8563 ] ··· 8594 "log", 8595 "ndk-context", 8596 "objc", 8597 + "raw-window-handle 0.5.2", 8598 "url", 8599 "web-sys", 8600 ] 8601 8602 [[package]] 8603 + name = "webkit2gtk" 8604 + version = "2.0.1" 8605 + source = "registry+https://github.com/rust-lang/crates.io-index" 8606 + checksum = "76b1bc1e54c581da1e9f179d0b38512ba358fb1af2d634a1affe42e37172361a" 8607 + dependencies = [ 8608 + "bitflags 1.3.2", 8609 + "cairo-rs", 8610 + "gdk", 8611 + "gdk-sys", 8612 + "gio", 8613 + "gio-sys", 8614 + "glib", 8615 + "glib-sys", 8616 + "gobject-sys", 8617 + "gtk", 8618 + "gtk-sys", 8619 + "javascriptcore-rs", 8620 + "libc", 8621 + "once_cell", 8622 + "soup3", 8623 + "webkit2gtk-sys", 8624 + ] 8625 + 8626 + [[package]] 8627 + name = "webkit2gtk-sys" 8628 + version = "2.0.1" 8629 + source = "registry+https://github.com/rust-lang/crates.io-index" 8630 + checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c" 8631 + dependencies = [ 8632 + "bitflags 1.3.2", 8633 + "cairo-sys-rs", 8634 + "gdk-sys", 8635 + "gio-sys", 8636 + "glib-sys", 8637 + "gobject-sys", 8638 + "gtk-sys", 8639 + "javascriptcore-rs-sys", 8640 + "libc", 8641 + "pkg-config", 8642 + "soup3-sys", 8643 + "system-deps", 8644 + ] 8645 + 8646 + [[package]] 8647 name = "webpage" 8648 version = "2.0.1" 8649 source = "registry+https://github.com/rust-lang/crates.io-index" 8650 checksum = "70862efc041d46e6bbaa82bb9c34ae0596d090e86cbd14bd9e93b36ee6802eac" 8651 dependencies = [ 8652 + "html5ever 0.27.0", 8653 "markup5ever_rcdom", 8654 "serde_json", 8655 "url", ··· 8665 ] 8666 8667 [[package]] 8668 + name = "webview2-com" 8669 + version = "0.33.0" 8670 + source = "registry+https://github.com/rust-lang/crates.io-index" 8671 + checksum = "6f61ff3d9d0ee4efcb461b14eb3acfda2702d10dc329f339303fc3e57215ae2c" 8672 + dependencies = [ 8673 + "webview2-com-macros", 8674 + "webview2-com-sys", 8675 + "windows 0.58.0", 8676 + "windows-core 0.58.0", 8677 + "windows-implement 0.58.0", 8678 + "windows-interface 0.58.0", 8679 + ] 8680 + 8681 + [[package]] 8682 + name = "webview2-com-macros" 8683 + version = "0.8.0" 8684 + source = "registry+https://github.com/rust-lang/crates.io-index" 8685 + checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" 8686 + dependencies = [ 8687 + "proc-macro2", 8688 + "quote", 8689 + "syn 2.0.108", 8690 + ] 8691 + 8692 + [[package]] 8693 + name = "webview2-com-sys" 8694 + version = "0.33.0" 8695 + source = "registry+https://github.com/rust-lang/crates.io-index" 8696 + checksum = "a3a3e2eeb58f82361c93f9777014668eb3d07e7d174ee4c819575a9208011886" 8697 + dependencies = [ 8698 + "thiserror 1.0.69", 8699 + "windows 0.58.0", 8700 + "windows-core 0.58.0", 8701 + ] 8702 + 8703 + [[package]] 8704 name = "whoami" 8705 version = "1.6.1" 8706 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 8750 8751 [[package]] 8752 name = "windows" 8753 + version = "0.58.0" 8754 + source = "registry+https://github.com/rust-lang/crates.io-index" 8755 + checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" 8756 + dependencies = [ 8757 + "windows-core 0.58.0", 8758 + "windows-targets 0.52.6", 8759 + ] 8760 + 8761 + [[package]] 8762 + name = "windows" 8763 version = "0.61.3" 8764 source = "registry+https://github.com/rust-lang/crates.io-index" 8765 checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" ··· 8782 8783 [[package]] 8784 name = "windows-core" 8785 + version = "0.58.0" 8786 + source = "registry+https://github.com/rust-lang/crates.io-index" 8787 + checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" 8788 + dependencies = [ 8789 + "windows-implement 0.58.0", 8790 + "windows-interface 0.58.0", 8791 + "windows-result 0.2.0", 8792 + "windows-strings 0.1.0", 8793 + "windows-targets 0.52.6", 8794 + ] 8795 + 8796 + [[package]] 8797 + name = "windows-core" 8798 version = "0.61.2" 8799 source = "registry+https://github.com/rust-lang/crates.io-index" 8800 checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" 8801 dependencies = [ 8802 + "windows-implement 0.60.2", 8803 + "windows-interface 0.59.3", 8804 "windows-link 0.1.3", 8805 "windows-result 0.3.4", 8806 "windows-strings 0.4.2", ··· 8812 source = "registry+https://github.com/rust-lang/crates.io-index" 8813 checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" 8814 dependencies = [ 8815 + "windows-implement 0.60.2", 8816 + "windows-interface 0.59.3", 8817 "windows-link 0.2.1", 8818 "windows-result 0.4.1", 8819 "windows-strings 0.5.1", ··· 8832 8833 [[package]] 8834 name = "windows-implement" 8835 + version = "0.58.0" 8836 + source = "registry+https://github.com/rust-lang/crates.io-index" 8837 + checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" 8838 + dependencies = [ 8839 + "proc-macro2", 8840 + "quote", 8841 + "syn 2.0.108", 8842 + ] 8843 + 8844 + [[package]] 8845 + name = "windows-implement" 8846 version = "0.60.2" 8847 source = "registry+https://github.com/rust-lang/crates.io-index" 8848 checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" ··· 8854 8855 [[package]] 8856 name = "windows-interface" 8857 + version = "0.58.0" 8858 + source = "registry+https://github.com/rust-lang/crates.io-index" 8859 + checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" 8860 + dependencies = [ 8861 + "proc-macro2", 8862 + "quote", 8863 + "syn 2.0.108", 8864 + ] 8865 + 8866 + [[package]] 8867 + name = "windows-interface" 8868 version = "0.59.3" 8869 source = "registry+https://github.com/rust-lang/crates.io-index" 8870 checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" ··· 8909 8910 [[package]] 8911 name = "windows-result" 8912 + version = "0.2.0" 8913 + source = "registry+https://github.com/rust-lang/crates.io-index" 8914 + checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" 8915 + dependencies = [ 8916 + "windows-targets 0.52.6", 8917 + ] 8918 + 8919 + [[package]] 8920 + name = "windows-result" 8921 version = "0.3.4" 8922 source = "registry+https://github.com/rust-lang/crates.io-index" 8923 checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" ··· 8932 checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" 8933 dependencies = [ 8934 "windows-link 0.2.1", 8935 + ] 8936 + 8937 + [[package]] 8938 + name = "windows-strings" 8939 + version = "0.1.0" 8940 + source = "registry+https://github.com/rust-lang/crates.io-index" 8941 + checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" 8942 + dependencies = [ 8943 + "windows-result 0.2.0", 8944 + "windows-targets 0.52.6", 8945 ] 8946 8947 [[package]] ··· 9089 ] 9090 9091 [[package]] 9092 + name = "windows-version" 9093 + version = "0.1.7" 9094 + source = "registry+https://github.com/rust-lang/crates.io-index" 9095 + checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631" 9096 + dependencies = [ 9097 + "windows-link 0.2.1", 9098 + ] 9099 + 9100 + [[package]] 9101 name = "windows_aarch64_gnullvm" 9102 version = "0.42.2" 9103 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 9279 9280 [[package]] 9281 name = "winnow" 9282 + version = "0.5.40" 9283 + source = "registry+https://github.com/rust-lang/crates.io-index" 9284 + checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" 9285 + dependencies = [ 9286 + "memchr 2.7.6", 9287 + ] 9288 + 9289 + [[package]] 9290 + name = "winnow" 9291 version = "0.7.13" 9292 source = "registry+https://github.com/rust-lang/crates.io-index" 9293 checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" ··· 9318 checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" 9319 9320 [[package]] 9321 + name = "wry" 9322 + version = "0.45.0" 9323 + source = "registry+https://github.com/rust-lang/crates.io-index" 9324 + checksum = "ac0099a336829fbf54c26b5f620c68980ebbe37196772aeaf6118df4931b5cb0" 9325 + dependencies = [ 9326 + "base64 0.22.1", 9327 + "block", 9328 + "cocoa 0.26.1", 9329 + "core-graphics 0.24.0", 9330 + "crossbeam-channel", 9331 + "dpi", 9332 + "dunce", 9333 + "gdkx11", 9334 + "gtk", 9335 + "html5ever 0.26.0", 9336 + "http", 9337 + "javascriptcore-rs", 9338 + "jni", 9339 + "kuchikiki", 9340 + "libc", 9341 + "ndk", 9342 + "objc", 9343 + "objc_id", 9344 + "once_cell", 9345 + "percent-encoding", 9346 + "raw-window-handle 0.6.2", 9347 + "sha2", 9348 + "soup3", 9349 + "tao-macros", 9350 + "thiserror 1.0.69", 9351 + "webkit2gtk", 9352 + "webkit2gtk-sys", 9353 + "webview2-com", 9354 + "windows 0.58.0", 9355 + "windows-core 0.58.0", 9356 + "windows-version", 9357 + "x11-dl", 9358 + ] 9359 + 9360 + [[package]] 9361 + name = "x11" 9362 + version = "2.21.0" 9363 + source = "registry+https://github.com/rust-lang/crates.io-index" 9364 + checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" 9365 + dependencies = [ 9366 + "libc", 9367 + "pkg-config", 9368 + ] 9369 + 9370 + [[package]] 9371 + name = "x11-dl" 9372 + version = "2.21.0" 9373 + source = "registry+https://github.com/rust-lang/crates.io-index" 9374 + checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" 9375 + dependencies = [ 9376 + "libc", 9377 + "once_cell", 9378 + "pkg-config", 9379 + ] 9380 + 9381 + [[package]] 9382 + name = "xdg-home" 9383 + version = "1.3.0" 9384 + source = "registry+https://github.com/rust-lang/crates.io-index" 9385 + checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" 9386 + dependencies = [ 9387 + "libc", 9388 + "windows-sys 0.59.0", 9389 + ] 9390 + 9391 + [[package]] 9392 name = "xml5ever" 9393 version = "0.18.1" 9394 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 9396 dependencies = [ 9397 "log", 9398 "mac", 9399 + "markup5ever 0.12.1", 9400 ] 9401 + 9402 + [[package]] 9403 + name = "xxhash-rust" 9404 + version = "0.8.15" 9405 + source = "registry+https://github.com/rust-lang/crates.io-index" 9406 + checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" 9407 9408 [[package]] 9409 name = "yaml-rust" ··· 9455 ] 9456 9457 [[package]] 9458 + name = "zbus" 9459 + version = "4.4.0" 9460 + source = "registry+https://github.com/rust-lang/crates.io-index" 9461 + checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" 9462 + dependencies = [ 9463 + "async-broadcast", 9464 + "async-process", 9465 + "async-recursion", 9466 + "async-trait", 9467 + "enumflags2", 9468 + "event-listener", 9469 + "futures-core", 9470 + "futures-sink", 9471 + "futures-util", 9472 + "hex", 9473 + "nix", 9474 + "ordered-stream", 9475 + "rand 0.8.5", 9476 + "serde", 9477 + "serde_repr", 9478 + "sha1", 9479 + "static_assertions", 9480 + "tokio", 9481 + "tracing", 9482 + "uds_windows", 9483 + "windows-sys 0.52.0", 9484 + "xdg-home", 9485 + "zbus_macros", 9486 + "zbus_names", 9487 + "zvariant", 9488 + ] 9489 + 9490 + [[package]] 9491 + name = "zbus_macros" 9492 + version = "4.4.0" 9493 + source = "registry+https://github.com/rust-lang/crates.io-index" 9494 + checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" 9495 + dependencies = [ 9496 + "proc-macro-crate 3.4.0", 9497 + "proc-macro2", 9498 + "quote", 9499 + "syn 2.0.108", 9500 + "zvariant_utils", 9501 + ] 9502 + 9503 + [[package]] 9504 + name = "zbus_names" 9505 + version = "3.0.0" 9506 + source = "registry+https://github.com/rust-lang/crates.io-index" 9507 + checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" 9508 + dependencies = [ 9509 + "serde", 9510 + "static_assertions", 9511 + "zvariant", 9512 + ] 9513 + 9514 + [[package]] 9515 name = "zerocopy" 9516 version = "0.8.27" 9517 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 9633 "cc", 9634 "pkg-config", 9635 ] 9636 + 9637 + [[package]] 9638 + name = "zvariant" 9639 + version = "4.2.0" 9640 + source = "registry+https://github.com/rust-lang/crates.io-index" 9641 + checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" 9642 + dependencies = [ 9643 + "endi", 9644 + "enumflags2", 9645 + "serde", 9646 + "static_assertions", 9647 + "url", 9648 + "zvariant_derive", 9649 + ] 9650 + 9651 + [[package]] 9652 + name = "zvariant_derive" 9653 + version = "4.2.0" 9654 + source = "registry+https://github.com/rust-lang/crates.io-index" 9655 + checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" 9656 + dependencies = [ 9657 + "proc-macro-crate 3.4.0", 9658 + "proc-macro2", 9659 + "quote", 9660 + "syn 2.0.108", 9661 + "zvariant_utils", 9662 + ] 9663 + 9664 + [[package]] 9665 + name = "zvariant_utils" 9666 + version = "2.1.0" 9667 + source = "registry+https://github.com/rust-lang/crates.io-index" 9668 + checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" 9669 + dependencies = [ 9670 + "proc-macro2", 9671 + "quote", 9672 + "syn 2.0.108", 9673 + ]
+13 -1
Cargo.toml
··· 4 # paths because the flake.nix is written in a way such that top-level members 5 # (`weaver-cli` and `weaver-server`) are built as different derivations which avoid being 6 # rebuilt if the other package's sources change. 7 - members = ["crates/*"] 8 9 #default-members = ["crates/weaver-cli"] 10 ··· 43 jacquard-api = { git = "https://tangled.org/@nonbinary.computer/jacquard" } 44 jacquard-axum = { git = "https://tangled.org/@nonbinary.computer/jacquard" } 45 tree_magic = { version = "0.2.3", features = ["cli"] }
··· 4 # paths because the flake.nix is written in a way such that top-level members 5 # (`weaver-cli` and `weaver-server`) are built as different derivations which avoid being 6 # rebuilt if the other package's sources change. 7 + members = ["crates/*", "crates/weaver-server"] 8 9 #default-members = ["crates/weaver-cli"] 10 ··· 43 jacquard-api = { git = "https://tangled.org/@nonbinary.computer/jacquard" } 44 jacquard-axum = { git = "https://tangled.org/@nonbinary.computer/jacquard" } 45 tree_magic = { version = "0.2.3", features = ["cli"] } 46 + 47 + [profile] 48 + 49 + [profile.wasm-dev] 50 + inherits = "dev" 51 + opt-level = 1 52 + 53 + [profile.server-dev] 54 + inherits = "dev" 55 + 56 + [profile.android-dev] 57 + inherits = "dev"
-158
alloy/css/base.css
··· 1 - /* CSS Reset */ 2 - *, *::before, *::after { 3 - box-sizing: border-box; 4 - margin: 0; 5 - padding: 0; 6 - } 7 - 8 - /* CSS Variables */ 9 - :root { 10 - --color-background: #faf4ed; 11 - --color-foreground: #2b303b; 12 - --color-link: #286983; 13 - --color-link-hover: #56949f; 14 - 15 - --font-body: IBM Plex, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; 16 - --font-heading: IBM Plex Sans, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; 17 - --font-mono: 'IBM Plex Mono', 'Berkeley Mono', 'Cascadia Code', 'Roboto Mono', Consolas, monospace; 18 - 19 - --spacing-base: 16px; 20 - --spacing-line-height: 1.6; 21 - --spacing-scale: 1.25; 22 - } 23 - 24 - /* Base Styles */ 25 - html { 26 - font-size: var(--spacing-base); 27 - line-height: var(--spacing-line-height); 28 - } 29 - 30 - body { 31 - font-family: var(--font-body); 32 - color: var(--color-foreground); 33 - background-color: var(--color-background); 34 - max-width: 65ch; 35 - margin: 0 auto; 36 - padding: 2rem 1rem; 37 - } 38 - 39 - /* Typography */ 40 - h1, h2, h3, h4, h5, h6 { 41 - font-family: var(--font-heading); 42 - margin-top: calc(1rem * var(--spacing-scale)); 43 - margin-bottom: 0.5rem; 44 - line-height: 1.2; 45 - } 46 - 47 - h1 { font-size: 2.5rem; } 48 - h2 { font-size: 2rem; } 49 - h3 { font-size: 1.5rem; } 50 - h4 { font-size: 1.25rem; } 51 - h5 { font-size: 1.125rem; } 52 - h6 { font-size: 1rem; } 53 - 54 - p { 55 - margin-bottom: 1rem; 56 - } 57 - 58 - a { 59 - color: var(--color-link); 60 - text-decoration: none; 61 - } 62 - 63 - a:hover { 64 - color: var(--color-link-hover); 65 - text-decoration: underline; 66 - } 67 - 68 - /* Lists */ 69 - ul, ol { 70 - margin-left: 2rem; 71 - margin-bottom: 1rem; 72 - } 73 - 74 - li { 75 - margin-bottom: 0.25rem; 76 - } 77 - 78 - /* Code */ 79 - code { 80 - font-family: var(--font-mono); 81 - background-color: rgba(0, 0, 0, 0.05); 82 - padding: 0.125rem 0.25rem; 83 - border-radius: 3px; 84 - font-size: 0.9em; 85 - } 86 - 87 - pre { 88 - overflow-x: auto; 89 - margin-bottom: 1rem; 90 - } 91 - 92 - pre code { 93 - display: block; 94 - padding: 1rem; 95 - background-color: rgba(0, 0, 0, 0.03); 96 - border-radius: 5px; 97 - } 98 - 99 - /* Math */ 100 - .math { 101 - font-family: var(--font-mono); 102 - } 103 - 104 - .math-display { 105 - display: block; 106 - margin: 1rem 0; 107 - text-align: center; 108 - } 109 - 110 - /* Blockquotes */ 111 - blockquote { 112 - border-left: 4px solid var(--color-link); 113 - padding-left: 1rem; 114 - margin: 1rem 0; 115 - font-style: italic; 116 - } 117 - 118 - /* Tables */ 119 - table { 120 - border-collapse: collapse; 121 - width: 100%; 122 - margin-bottom: 1rem; 123 - } 124 - 125 - th, td { 126 - border: 1px solid rgba(0, 0, 0, 0.1); 127 - padding: 0.5rem; 128 - text-align: left; 129 - } 130 - 131 - th { 132 - background-color: rgba(0, 0, 0, 0.05); 133 - font-weight: 600; 134 - } 135 - 136 - /* Footnotes */ 137 - .footnote-reference { 138 - font-size: 0.8em; 139 - } 140 - 141 - .footnote-definition { 142 - margin-top: 2rem; 143 - padding-top: 0.5rem; 144 - border-top: 1px solid rgba(0, 0, 0, 0.1); 145 - font-size: 0.9em; 146 - } 147 - 148 - .footnote-definition-label { 149 - font-weight: 600; 150 - margin-right: 0.5rem; 151 - } 152 - 153 - /* Horizontal Rule */ 154 - hr { 155 - border: none; 156 - border-top: 1px solid rgba(0, 0, 0, 0.1); 157 - margin: 2rem 0; 158 - }
···
-88
alloy/css/syntax.css
··· 1 - /* 2 - * theme "Rosé Pine Dawn" generated by syntect 3 - */ 4 - 5 - .wvrcode-code { 6 - color: #575279; 7 - background-color: #faf4ed; 8 - } 9 - 10 - .wvrcode-comment { 11 - color: #797593; 12 - font-style: italic; 13 - } 14 - .wvrcode-string, .wvrcode-punctuation.wvrcode-definition.wvrcode-string { 15 - color: #ea9d34; 16 - } 17 - .wvrcode-constant.wvrcode-numeric { 18 - color: #ea9d34; 19 - } 20 - .wvrcode-constant.wvrcode-language { 21 - color: #ea9d34; 22 - font-weight: bold; 23 - } 24 - .wvrcode-constant.wvrcode-character, .wvrcode-constant.wvrcode-other { 25 - color: #ea9d34; 26 - } 27 - .wvrcode-variable { 28 - color: #575279; 29 - font-style: italic; 30 - } 31 - .wvrcode-keyword { 32 - color: #286983; 33 - } 34 - .wvrcode-storage { 35 - color: #56949f; 36 - } 37 - .wvrcode-storage.wvrcode-type { 38 - color: #56949f; 39 - } 40 - .wvrcode-entity.wvrcode-name.wvrcode-class { 41 - color: #286983; 42 - font-weight: bold; 43 - } 44 - .wvrcode-entity.wvrcode-other.wvrcode-inherited-class { 45 - color: #286983; 46 - font-style: italic; 47 - } 48 - .wvrcode-entity.wvrcode-name.wvrcode-function { 49 - color: #d7827e; 50 - font-style: italic; 51 - } 52 - .wvrcode-variable.wvrcode-parameter { 53 - color: #907aa9; 54 - } 55 - .wvrcode-entity.wvrcode-name.wvrcode-tag { 56 - color: #286983; 57 - font-weight: bold; 58 - } 59 - .wvrcode-entity.wvrcode-other.wvrcode-attribute-name { 60 - color: #907aa9; 61 - } 62 - .wvrcode-support.wvrcode-function { 63 - color: #d7827e; 64 - font-weight: bold; 65 - } 66 - .wvrcode-support.wvrcode-constant { 67 - color: #ea9d34; 68 - font-weight: bold; 69 - } 70 - .wvrcode-support.wvrcode-type, .wvrcode-support.wvrcode-class { 71 - color: #56949f; 72 - font-weight: bold; 73 - } 74 - .wvrcode-support.wvrcode-other.wvrcode-variable { 75 - color: #b4637a; 76 - font-weight: bold; 77 - } 78 - .wvrcode-invalid { 79 - color: #575279; 80 - background-color: #b4637a; 81 - } 82 - .wvrcode-invalid.wvrcode-deprecated { 83 - color: #575279; 84 - background-color: #907aa9; 85 - } 86 - .wvrcode-punctuation, .wvrcode-keyword.wvrcode-operator { 87 - color: #797593; 88 - }
···
-12
alloy/entry/Features/Allocator.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en"> 3 - <head> 4 - <meta charset="utf-8"> 5 - <meta name="viewport" content="width=device-width, initial-scale=1"> 6 - <title>Allocator</title> 7 - <link rel="stylesheet" href="../../css/base.css"> 8 - <link rel="stylesheet" href="../../css/syntax.css"> 9 - </head> 10 - <body> 11 - </body> 12 - </html>
···
-204
alloy/entry/Features/Effects.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en"> 3 - <head> 4 - <meta charset="utf-8"> 5 - <meta name="viewport" content="width=device-width, initial-scale=1"> 6 - <title>Effects</title> 7 - <link rel="stylesheet" href="../../css/base.css"> 8 - <link rel="stylesheet" href="../../css/syntax.css"> 9 - </head> 10 - <body> 11 - <h2>Overview</h2> 12 - <p>Alloy's effect system provides explicit tracking of side effects at the type level. This allows for better reasoning about code behavior and enables powerful optimizations while maintaining clarity about what a function can do.</p> 13 - <h2>Core Concepts</h2> 14 - <h3>Effect Declaration</h3> 15 - <p>Effects are declared using the <code>effect</code> keyword:</p> 16 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust">effect <span class="wvrcode-constant wvrcode-other wvrcode-rust">IO</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 17 - <span class="wvrcode-support wvrcode-function wvrcode-rust">read_line</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String 18 - print<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>String<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> 19 - </span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 20 - 21 - effect State<span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>T<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 22 - <span class="wvrcode-support wvrcode-function wvrcode-rust">get</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> T 23 - set<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>T<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> 24 - </span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 25 - 26 - effect Random <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 27 - <span class="wvrcode-support wvrcode-function wvrcode-rust">next_int</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>min<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">i32</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> max<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">i32</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">i32</span> 28 - </span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 29 - </span></code></pre> 30 - <h3>Using Effects</h3> 31 - <p>Functions must declare which effects they use with the <code>with</code> keyword:</p> 32 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">get_user_name</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String with IO</span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 33 - <span class="wvrcode-support wvrcode-function wvrcode-rust">print</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Enter your name: <span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 34 - <span class="wvrcode-support wvrcode-function wvrcode-rust">read_line</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 35 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 36 - 37 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">generate_id</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">i32</span> with Random</span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 38 - <span class="wvrcode-support wvrcode-function wvrcode-rust">next_int</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">0</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> <span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">1000</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 39 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 40 - </span></code></pre> 41 - <h3>Multiple Effects</h3> 42 - <p>Functions can use multiple effects:</p> 43 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">interactive_random</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">i32</span> with IO</span></span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> Random <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 44 - <span class="wvrcode-support wvrcode-function wvrcode-rust">print</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Generating a random number...<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 45 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> num <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">next_int</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">0</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> <span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">100</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 46 - <span class="wvrcode-support wvrcode-function wvrcode-rust">print</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Generated: {num}<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 47 - num 48 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 49 - </span></code></pre> 50 - <h3>Effect Handlers</h3> 51 - <p>Effects are implemented using handlers:</p> 52 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust">handler ConsoleIO <span class="wvrcode-keyword wvrcode-control wvrcode-rust">for</span> <span class="wvrcode-constant wvrcode-other wvrcode-rust">IO</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 53 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">read_line</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String</span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 54 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Implementation using actual console I/O 55 - </span> </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 56 - 57 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">print</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">message</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> String</span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 58 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Implementation using actual console I/O 59 - </span> </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 60 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 61 - 62 - handler TestIO <span class="wvrcode-keyword wvrcode-control wvrcode-rust">for</span> <span class="wvrcode-constant wvrcode-other wvrcode-rust">IO</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 63 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> <span class="wvrcode-storage wvrcode-modifier wvrcode-rust">mut</span> inputs<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-support wvrcode-type wvrcode-rust">Vec</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span><span class="wvrcode-support wvrcode-type wvrcode-rust">String</span><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> 64 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> <span class="wvrcode-storage wvrcode-modifier wvrcode-rust">mut</span> outputs<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-support wvrcode-type wvrcode-rust">Vec</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span><span class="wvrcode-support wvrcode-type wvrcode-rust">String</span><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> 65 - 66 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">read_line</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String</span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 67 - inputs.<span class="wvrcode-support wvrcode-function wvrcode-rust">pop</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span>.<span class="wvrcode-support wvrcode-function wvrcode-rust">unwrap_or</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Test Input<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 68 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 69 - 70 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">print</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">message</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> String</span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 71 - outputs.<span class="wvrcode-support wvrcode-function wvrcode-rust">push</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>messages</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 72 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 73 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 74 - </span></code></pre> 75 - <h3>Running with Effects</h3> 76 - <p>Use the <code>run</code> keyword to execute code with effect handlers:</p> 77 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">main</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 78 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Using real I/O 79 - </span> run with ConsoleIO <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 80 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> name <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">get_user_name</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 81 - <span class="wvrcode-support wvrcode-function wvrcode-rust">print</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Hello, {name}!<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 82 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 83 - 84 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Using test I/O 85 - </span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> test_io <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> TestIO <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 86 - inputs<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-support wvrcode-macro wvrcode-rust">vec!</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Test User<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> 87 - outputs<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-support wvrcode-macro wvrcode-rust">vec!</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> 88 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 89 - 90 - run with test_io <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 91 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> name <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">get_user_name</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 92 - <span class="wvrcode-support wvrcode-function wvrcode-rust">print</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Hello, {name}!<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 93 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 94 - 95 - <span class="wvrcode-support wvrcode-function wvrcode-rust">assert_eq</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>test_io.outputs<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> <span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Enter your name: <span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> <span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Hello, Test User!<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 96 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 97 - </span></code></pre> 98 - <h2>Effect Composition</h2> 99 - <h3>Combining Effects</h3> 100 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust">effect Logger <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 101 - <span class="wvrcode-support wvrcode-function wvrcode-rust">log</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>message<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-support wvrcode-type wvrcode-rust">String</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 102 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 103 - 104 - effect Database <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 105 - <span class="wvrcode-support wvrcode-function wvrcode-rust">query</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>sql<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-support wvrcode-type wvrcode-rust">String</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> Result</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>Row<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> DbError<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> 106 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 107 - 108 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Combined effect handler 109 - </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">process_user</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> Result</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> Error<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> with Logger<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> Database<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> <span class="wvrcode-constant wvrcode-other wvrcode-rust">IO</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 110 - <span class="wvrcode-support wvrcode-function wvrcode-rust">log</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Starting user processing<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 111 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> user <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-keyword wvrcode-control wvrcode-rust">match</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">query</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>SELECT * FROM users LIMIT 1<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 112 - <span class="wvrcode-support wvrcode-type wvrcode-rust">Ok</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>row</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> row</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> 113 - <span class="wvrcode-support wvrcode-type wvrcode-rust">Err</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>e</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span></span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 114 - <span class="wvrcode-support wvrcode-function wvrcode-rust">log</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Database error: {e}<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 115 - <span class="wvrcode-keyword wvrcode-control wvrcode-rust">return</span> <span class="wvrcode-support wvrcode-type wvrcode-rust">Err</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>e.<span class="wvrcode-support wvrcode-function wvrcode-rust">into</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 116 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 117 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 118 - <span class="wvrcode-support wvrcode-function wvrcode-rust">print</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Found user: {user.name}<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 119 - <span class="wvrcode-support wvrcode-type wvrcode-rust">Ok</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 120 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 121 - </span></code></pre> 122 - <h3>Effect Polymorphism</h3> 123 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Generic over any effect that provides logging 124 - </span> 125 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">audit</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>E<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> Logger<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>action<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-support wvrcode-type wvrcode-rust">String</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> <span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> with E</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 126 - <span class="wvrcode-support wvrcode-function wvrcode-rust">log</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Audit: {action}<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 127 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 128 - </span></code></pre> 129 - <h2>Best Practices</h2> 130 - <ol> 131 - <li><strong>Effect Granularity</strong></li> 132 - </ol> 133 - <ul> 134 - <li>Keep effects focused and single-purpose</li> 135 - <li>Split large effects into smaller, composable ones</li> 136 - </ul> 137 - <ol start="2"> 138 - <li><strong>Effect Isolation</strong></li> 139 - </ol> 140 - <ul> 141 - <li>Contain effects at the edges of your program</li> 142 - <li>Keep core logic pure when possible</li> 143 - </ul> 144 - <ol start="3"> 145 - <li><strong>Testing with Effects</strong></li> 146 - </ol> 147 - <ul> 148 - <li>Create test handlers for effects</li> 149 - <li>Use effect substitution to simulate different scenarios</li> 150 - </ul> 151 - <ol start="4"> 152 - <li><strong>Effect Documentation</strong></li> 153 - </ol> 154 - <ul> 155 - <li>Document effect requirements clearly</li> 156 - <li>Explain effect interactions in complex systems</li> 157 - </ul> 158 - <ol start="5"> 159 - <li><strong>Effect Performance</strong></li> 160 - </ol> 161 - <ul> 162 - <li>Group related effects to reduce handler overhead</li> 163 - <li>Consider effect batching for performance-critical code</li> 164 - </ul> 165 - <h2>Patterns</h2> 166 - <h3>The Reader Effect</h3> 167 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust">effect Reader<span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>C<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 168 - <span class="wvrcode-support wvrcode-function wvrcode-rust">ask</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> C 169 - </span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 170 - 171 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">get_config</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>C<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> C with Reader</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>C<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 172 - <span class="wvrcode-support wvrcode-function wvrcode-rust">ask</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 173 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 174 - 175 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">use_config</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String with Reader</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>Config<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 176 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> config <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">ask</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 177 - config.base_url 178 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 179 - </span></code></pre> 180 - <h3>The Writer Effect</h3> 181 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust">effect Writer<span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>W<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 182 - <span class="wvrcode-support wvrcode-function wvrcode-rust">tell</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>W</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 183 - <span class="wvrcode-support wvrcode-function wvrcode-rust">clear</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 184 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 185 - 186 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">log_action</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">action</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> String</span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> <span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> with Writer</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span><span class="wvrcode-support wvrcode-type wvrcode-rust">String</span><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 187 - <span class="wvrcode-support wvrcode-function wvrcode-rust">tell</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>[{timestamp()}] {action}<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 188 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 189 - </span></code></pre> 190 - <h3>Combining with Pipelines</h3> 191 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust">effect Transform <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 192 - <span class="wvrcode-support wvrcode-function wvrcode-rust">validate</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-support wvrcode-type wvrcode-rust">String</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> Result</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span><span class="wvrcode-support wvrcode-type wvrcode-rust">String</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> Error<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> 193 - <span class="wvrcode-support wvrcode-function wvrcode-rust">normalize</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-support wvrcode-type wvrcode-rust">String</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String 194 - encrypt<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>String<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> </span><span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String 195 - </span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 196 - 197 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">process_input</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">input</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> String</span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> Result</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span><span class="wvrcode-support wvrcode-type wvrcode-rust">String</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> Error<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> with Transform <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 198 - input 199 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">validate</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 200 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">map</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>normalize</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 201 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">map</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>encrypt</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 202 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 203 - </span></code></pre></body> 204 - </html>
···
-211
alloy/entry/Features/Traits.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en"> 3 - <head> 4 - <meta charset="utf-8"> 5 - <meta name="viewport" content="width=device-width, initial-scale=1"> 6 - <title>Traits</title> 7 - <link rel="stylesheet" href="../../css/base.css"> 8 - <link rel="stylesheet" href="../../css/syntax.css"> 9 - </head> 10 - <body> 11 - <h1>Trait System Guide</h1> 12 - <h2>Overview</h2> 13 - <p>Alloy's trait system builds on Rust's traits while adding powerful features like default implementations, template control, and better composition patterns.</p> 14 - <h2>Core Concepts</h2> 15 - <p>The basics follow Rust closely</p> 16 - <h3>Basic Trait Declaration</h3> 17 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-meta wvrcode-trait wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-trait wvrcode-rust">trait</span> <span class="wvrcode-entity wvrcode-name wvrcode-trait wvrcode-rust">Display</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 18 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">display</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String </span><span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Note: no semicolon 19 - </span></span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 20 - </span></code></pre> 21 - <h3>Implementation</h3> 22 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-meta wvrcode-struct wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-struct wvrcode-rust">struct</span> </span><span class="wvrcode-meta wvrcode-struct wvrcode-rust"><span class="wvrcode-entity wvrcode-name wvrcode-struct wvrcode-rust">Point</span> </span><span class="wvrcode-meta wvrcode-struct wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 23 - <span class="wvrcode-variable wvrcode-other wvrcode-member wvrcode-rust">x</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">f64</span> 24 - y<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">f64</span> 25 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 26 - 27 - <span class="wvrcode-meta wvrcode-impl wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-impl wvrcode-rust">impl</span> </span><span class="wvrcode-meta wvrcode-impl wvrcode-rust">Display <span class="wvrcode-keyword wvrcode-other wvrcode-rust">for</span></span><span class="wvrcode-meta wvrcode-impl wvrcode-rust"> <span class="wvrcode-entity wvrcode-name wvrcode-impl wvrcode-rust">Point</span> </span><span class="wvrcode-meta wvrcode-impl wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 28 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">display</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String</span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 29 - <span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>({self.x}, {self.y})<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span> <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Alloy builds formatting into Strings 30 - </span> </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 31 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 32 - </span></code></pre> 33 - <h3>Generic Traits</h3> 34 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-meta wvrcode-trait wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-trait wvrcode-rust">trait</span> <span class="wvrcode-entity wvrcode-name wvrcode-trait wvrcode-rust">Container</span>[T] <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Alloy uses [] rather than &lt; &gt; for type parameters 35 - </span> <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">add</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span>, <span class="wvrcode-variable wvrcode-parameter wvrcode-rust">item</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> T</span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> 36 - </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">remove</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> Option</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>T<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> 37 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">is_empty</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">bool</span> 38 - </span></span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 39 - 40 - <span class="wvrcode-meta wvrcode-impl wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-impl wvrcode-rust">impl</span></span><span class="wvrcode-meta wvrcode-impl wvrcode-rust">[<span class="wvrcode-entity wvrcode-name wvrcode-impl wvrcode-rust">T</span>] <span class="wvrcode-entity wvrcode-name wvrcode-impl wvrcode-rust">Container</span>[<span class="wvrcode-entity wvrcode-name wvrcode-impl wvrcode-rust">T</span>] <span class="wvrcode-entity wvrcode-name wvrcode-impl wvrcode-rust">for</span> <span class="wvrcode-entity wvrcode-name wvrcode-impl wvrcode-rust">Stack</span>[<span class="wvrcode-entity wvrcode-name wvrcode-impl wvrcode-rust">T</span>] </span><span class="wvrcode-meta wvrcode-impl wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 41 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">add</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span>, <span class="wvrcode-variable wvrcode-parameter wvrcode-rust">item</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> T</span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 42 - <span class="wvrcode-variable wvrcode-language wvrcode-rust">self</span>.<span class="wvrcode-support wvrcode-function wvrcode-rust">push</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>item</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 43 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 44 - 45 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">remove</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> Option</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>T<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 46 - <span class="wvrcode-variable wvrcode-language wvrcode-rust">self</span>.<span class="wvrcode-support wvrcode-function wvrcode-rust">pop</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 47 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 48 - 49 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">is_empty</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">bool</span></span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 50 - <span class="wvrcode-variable wvrcode-language wvrcode-rust">self</span>.<span class="wvrcode-support wvrcode-function wvrcode-rust">len</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">0</span> 51 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 52 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 53 - </span></code></pre> 54 - <h2>Features</h2> 55 - <h3>Default Implementations</h3> 56 - <p>Like in Rust, traits in Alloy can contain a mix of methods which include a default implementation and ones which require the implementer to provide an implementation.</p> 57 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-meta wvrcode-trait wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-trait wvrcode-rust">trait</span> <span class="wvrcode-entity wvrcode-name wvrcode-trait wvrcode-rust">Collection</span>[T] <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 58 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">is_empty</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">bool</span></span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 59 - <span class="wvrcode-variable wvrcode-language wvrcode-rust">self</span>.<span class="wvrcode-support wvrcode-function wvrcode-rust">len</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">0</span> 60 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 61 - 62 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">len</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">usize</span> 63 - 64 - fn contains<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>self, item: T<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> </span><span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">bool</span></span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 65 - <span class="wvrcode-variable wvrcode-language wvrcode-rust">self</span>.<span class="wvrcode-support wvrcode-function wvrcode-rust">into_iter</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span>.any <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> x <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">in</span> x <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> item </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 66 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 67 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 68 - </span></code></pre> 69 - <h3>Trait Defaults</h3> 70 - <p>Unlike in Rust, associated types in Alloy can carry a default value. Sensible defaults make writing simple things easy, without losing any flexibility.</p> 71 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Define a trait with a default implementation strategy 72 - </span><span class="wvrcode-meta wvrcode-trait wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-trait wvrcode-rust">trait</span> <span class="wvrcode-entity wvrcode-name wvrcode-trait wvrcode-rust">ToString</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 73 - default <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> JsonString 74 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">to_string</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String 75 - </span></span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 76 - 77 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Implementations can override the default 78 - </span><span class="wvrcode-meta wvrcode-impl wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-impl wvrcode-rust">impl</span> </span><span class="wvrcode-meta wvrcode-impl wvrcode-rust">ToString <span class="wvrcode-keyword wvrcode-other wvrcode-rust">for</span></span><span class="wvrcode-meta wvrcode-impl wvrcode-rust"> <span class="wvrcode-entity wvrcode-name wvrcode-impl wvrcode-rust">CustomType</span> </span><span class="wvrcode-meta wvrcode-impl wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 79 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">to_string</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String</span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 80 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Custom implementation 81 - </span> </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 82 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 83 - 84 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Or use the default 85 - </span><span class="wvrcode-meta wvrcode-impl wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-impl wvrcode-rust">impl</span> </span><span class="wvrcode-meta wvrcode-impl wvrcode-rust">ToString <span class="wvrcode-keyword wvrcode-other wvrcode-rust">for</span></span><span class="wvrcode-meta wvrcode-impl wvrcode-rust"> <span class="wvrcode-entity wvrcode-name wvrcode-impl wvrcode-rust">SimpleType</span> <span class="wvrcode-entity wvrcode-name wvrcode-impl wvrcode-rust">default</span> 86 - </span></span></code></pre> 87 - <h3>Template Control</h3> 88 - <p>Defaults allow more organic composition and make code simpler.</p> 89 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-meta wvrcode-trait wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-trait wvrcode-rust">trait</span> <span class="wvrcode-entity wvrcode-name wvrcode-trait wvrcode-rust">Serialize</span>[Format] <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 90 - default Format <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> Json 91 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">serialize</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String 92 - </span></span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 93 - 94 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Use default format 95 - </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">save</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>T<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> Serialize<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>item<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> T</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 96 - item.<span class="wvrcode-support wvrcode-function wvrcode-rust">serialize</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Uses Json format 97 - </span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 98 - 99 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Override default format 100 - </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">save_xml</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>T<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> Serialize<span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>Xml<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>item<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> T</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 101 - item.<span class="wvrcode-support wvrcode-function wvrcode-rust">serialize</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Uses XML format 102 - </span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 103 - </span></code></pre> 104 - <h3>Conditional Implementation</h3> 105 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-meta wvrcode-impl wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-impl wvrcode-rust">impl</span></span><span class="wvrcode-meta wvrcode-impl wvrcode-rust">[<span class="wvrcode-entity wvrcode-name wvrcode-impl wvrcode-rust">T</span>: <span class="wvrcode-entity wvrcode-name wvrcode-impl wvrcode-rust">Display</span>] <span class="wvrcode-entity wvrcode-name wvrcode-impl wvrcode-rust">Display</span> <span class="wvrcode-entity wvrcode-name wvrcode-impl wvrcode-rust">for</span> <span class="wvrcode-entity wvrcode-name wvrcode-impl wvrcode-rust">Option</span>[<span class="wvrcode-entity wvrcode-name wvrcode-impl wvrcode-rust">T</span>] </span><span class="wvrcode-meta wvrcode-impl wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 106 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">display</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String</span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 107 - <span class="wvrcode-keyword wvrcode-control wvrcode-rust">match</span> <span class="wvrcode-variable wvrcode-language wvrcode-rust">self</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 108 - <span class="wvrcode-support wvrcode-type wvrcode-rust">Some</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>value</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> value</span>.<span class="wvrcode-support wvrcode-function wvrcode-rust">display</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 109 - <span class="wvrcode-support wvrcode-type wvrcode-rust">None</span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> </span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>None<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span> 110 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 111 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 112 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 113 - </span></code></pre> 114 - <p>The above snippet, if not defined in either the same crate as Display or the same crate as Option[T], would require a newtype wrapper in Rust due to the orphan rule, and a bunch of extra boilerplate to make it behave nicely. Alloy either avoids or elides all that for you. Types are types and traits are traits, and you should be able to work with them as you wish. The compiler will attempt to resolve them and handle any possible conflicts as expected, without surprises, but if it cannot, or if you want to choose the implementation, you can specify.</p> 115 - <h3>Trait Composition</h3> 116 - <p>Traits can also be composed quite freely using a few simple operators, to build up more complex types, in a way that is easy to understand.</p> 117 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-meta wvrcode-trait wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-trait wvrcode-rust">trait</span> <span class="wvrcode-entity wvrcode-name wvrcode-trait wvrcode-rust">Identified</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 118 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">id</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">usize</span> 119 - </span></span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 120 - 121 - <span class="wvrcode-meta wvrcode-trait wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-trait wvrcode-rust">trait</span> <span class="wvrcode-entity wvrcode-name wvrcode-trait wvrcode-rust">Named</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 122 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">name</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String 123 - </span></span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 124 - 125 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Compose traits 126 - </span><span class="wvrcode-meta wvrcode-trait wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-trait wvrcode-rust">trait</span> <span class="wvrcode-entity wvrcode-name wvrcode-trait wvrcode-rust">Entity</span> = Identified + Named <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 127 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Additional requirements can be added 128 - </span> <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">describe</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String</span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 129 - <span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>{self.id()}: {self.name()}<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span> 130 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 131 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 132 - 133 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Misha can you check my syntax here? 134 - </span><span class="wvrcode-meta wvrcode-trait wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-trait wvrcode-rust">trait</span> <span class="wvrcode-entity wvrcode-name wvrcode-trait wvrcode-rust">Component</span> = Identified + !Named <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Marker trait 135 - </span> 136 - trait GameObject = Entity | Component <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 137 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">describe</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String</span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 138 - <span class="wvrcode-keyword wvrcode-control wvrcode-rust">match</span> <span class="wvrcode-invalid wvrcode-illegal wvrcode-rust">typeof</span> <span class="wvrcode-variable wvrcode-language wvrcode-rust">self</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 139 - Entity <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> <span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>self as Entity<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span>.<span class="wvrcode-support wvrcode-function wvrcode-rust">describe</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 140 - Component <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> </span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>{(self as Identified).id()}<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span> 141 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 142 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 143 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 144 - </span></code></pre> 145 - <h2>Best Practices</h2> 146 - <ol> 147 - <li><strong>Trait Cohesion</strong></li> 148 - </ol> 149 - <ul> 150 - <li>Keep traits focused on a single responsibility</li> 151 - <li>Use composition for complex behaviors</li> 152 - </ul> 153 - <ol start="2"> 154 - <li><strong>Default Implementations</strong></li> 155 - </ol> 156 - <ul> 157 - <li>Provide sensible defaults when possible</li> 158 - <li>Make defaults efficient and general</li> 159 - </ul> 160 - <ol start="3"> 161 - <li><strong>Template Defaults</strong></li> 162 - </ol> 163 - <ul> 164 - <li>Choose widely applicable defaults</li> 165 - <li>Document default behavior clearly</li> 166 - </ul> 167 - <ol start="4"> 168 - <li><strong>Trait Bounds</strong></li> 169 - </ol> 170 - <ul> 171 - <li>Use minimal trait bounds</li> 172 - <li>Prefer composition over complex bounds</li> 173 - </ul> 174 - <ol start="5"> 175 - <li><strong>Documentation</strong></li> 176 - </ol> 177 - <ul> 178 - <li>Document required behavior clearly</li> 179 - <li>Explain performance characteristics</li> 180 - </ul> 181 - <h2>Patterns</h2> 182 - <h3>Builder Pattern</h3> 183 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-meta wvrcode-trait wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-trait wvrcode-rust">trait</span> <span class="wvrcode-entity wvrcode-name wvrcode-trait wvrcode-rust">Builder</span>[T] <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 184 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">build</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> Result</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>T<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> BuildError<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> 185 - 186 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Optional steps with defaults 187 - </span> <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">with_name</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span>, <span class="wvrcode-variable wvrcode-parameter wvrcode-rust">name</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> String</span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">Self</span></span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 188 - <span class="wvrcode-variable wvrcode-language wvrcode-rust">self</span> 189 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 190 - 191 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">with_id</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span>, <span class="wvrcode-variable wvrcode-parameter wvrcode-rust">id</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">usize</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">Self</span></span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 192 - <span class="wvrcode-variable wvrcode-language wvrcode-rust">self</span> 193 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 194 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 195 - </span></code></pre> 196 - <h3>Type State Pattern</h3> 197 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-meta wvrcode-trait wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-trait wvrcode-rust">trait</span> <span class="wvrcode-entity wvrcode-name wvrcode-trait wvrcode-rust">State</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 198 - <span class="wvrcode-storage wvrcode-type wvrcode-type wvrcode-rust">type</span> <span class="wvrcode-entity wvrcode-name wvrcode-type wvrcode-rust">Next</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> State 199 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">transition</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> Next 200 - </span></span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 201 - 202 - 203 - implement State <span class="wvrcode-keyword wvrcode-control wvrcode-rust">for</span> Draft <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 204 - <span class="wvrcode-storage wvrcode-type wvrcode-type wvrcode-rust">type</span> <span class="wvrcode-entity wvrcode-name wvrcode-type wvrcode-rust">Next</span> <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> Review 205 - 206 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">transition</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> Review</span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 207 - <span class="wvrcode-meta wvrcode-path wvrcode-rust">Review<span class="wvrcode-punctuation wvrcode-accessor wvrcode-rust">::</span></span>new<span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-language wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 208 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 209 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 210 - </span></code></pre></body> 211 - </html>
···
-86
alloy/entry/Language Overview.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en"> 3 - <head> 4 - <meta charset="utf-8"> 5 - <meta name="viewport" content="width=device-width, initial-scale=1"> 6 - <title>Language Overview</title> 7 - <link rel="stylesheet" href="../css/base.css"> 8 - <link rel="stylesheet" href="../css/syntax.css"> 9 - </head> 10 - <body> 11 - <p><code>.ac</code> file extension</p> 12 - <h2>Design Philosophy</h2> 13 - <h3>Safety First</h3> 14 - <ul> 15 - <li>Thread-safe by default through Arc</li> 16 - <li>Immutable by default</li> 17 - <li>Explicit effect tracking</li> 18 - <li>Comprehensive compile-time checks</li> 19 - <li>No unsafe blocks</li> 20 - </ul> 21 - <h3>Performance</h3> 22 - <ul> 23 - <li>Zero-cost abstractions where possible</li> 24 - <li>Predictable performance</li> 25 - <li>Efficient compilation to Rust</li> 26 - <li>Optional no-atomic reference counting for embedded systems</li> 27 - <li>Effect system enables compile-time optimizations</li> 28 - </ul> 29 - <h3>Ergonomics</h3> 30 - <ul> 31 - <li>Clear, readable syntax</li> 32 - <li>Powerful type inference</li> 33 - <li>Pipeline operator for fluid data transformation</li> 34 - <li>Pattern matching with exhaustive checking</li> 35 - <li>Trailing closure syntax</li> 36 - </ul> 37 - <h2>Key Features</h2> 38 - <h3>Type System</h3> 39 - <ul> 40 - <li>Strong static typing with powerful type inference</li> 41 - <li>Union types and type narrowing from TypeScript</li> 42 - <li>Advanced trait system with defaults and template control</li> 43 - <li>Square brackets <code>[]</code> for generics/templates instead of angle brackets</li> 44 - <li>Algebraic data types with pattern matching</li> 45 - <li>Optional chaining and null coalescing operators from Swift</li> 46 - </ul> 47 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Union types and type narrowing 48 - </span><span class="wvrcode-storage wvrcode-type wvrcode-type wvrcode-rust">type</span> <span class="wvrcode-entity wvrcode-name wvrcode-type wvrcode-rust">StringOrNumber</span> <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> string <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span> number 49 - 50 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">process</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">value</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> StringOrNumber</span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 51 - <span class="wvrcode-keyword wvrcode-control wvrcode-rust">match</span> <span class="wvrcode-invalid wvrcode-illegal wvrcode-rust">typeof</span> value <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 52 - <span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>string<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> handle_string<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>value as string<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> 53 - </span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>number<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> handle_number<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>value as number<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> 54 - </span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 55 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 56 - 57 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Optional chaining and null coalescing 58 - </span><span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> value <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> obj<span class="wvrcode-keyword wvrcode-operator wvrcode-rust">?</span>.prop<span class="wvrcode-keyword wvrcode-operator wvrcode-rust">?</span>.<span class="wvrcode-support wvrcode-function wvrcode-rust">method</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">?</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">?</span> default_value 59 - </span></code></pre> 60 - <h3>Memory Management</h3> 61 - <ul> 62 - <li>Implicit Arc (Atomic Reference Counting) by default</li> 63 - <li>Optional non-atomic reference counting for platforms without atomics</li> 64 - <li>Custom allocator support via the effect system</li> 65 - <li>Everything immutable by default</li> 66 - <li>Thread-safe by default through Arc</li> 67 - </ul> 68 - <p>Example:</p> 69 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Standard usage - implicit Arc 70 - </span><span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> shared <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-meta wvrcode-path wvrcode-rust">ComplexType<span class="wvrcode-punctuation wvrcode-accessor wvrcode-rust">::</span></span>new<span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 71 - 72 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> No-atomic reference counting for embedded platforms 73 - </span> 74 - <span class="wvrcode-meta wvrcode-annotation wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-annotation wvrcode-rust">#</span><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span><span class="wvrcode-variable wvrcode-annotation wvrcode-rust">no_atomic</span><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> 75 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> basic <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-meta wvrcode-path wvrcode-rust">ComplexType<span class="wvrcode-punctuation wvrcode-accessor wvrcode-rust">::</span></span>new<span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 76 - 77 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Custom allocation 78 - </span> 79 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> bump_allocator <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-meta wvrcode-path wvrcode-rust">BumpAllocator<span class="wvrcode-punctuation wvrcode-accessor wvrcode-rust">::</span></span>new<span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">1024</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 80 - run with bump_allocator <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">as</span> Alloc <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 81 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> temp <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-meta wvrcode-path wvrcode-rust">ComplexType<span class="wvrcode-punctuation wvrcode-accessor wvrcode-rust">::</span></span>new<span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 82 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 83 - </span></code></pre> 84 - <p>...</p> 85 - </body> 86 - </html>
···
-1
alloy/entry/Logo.svg
··· 1 - <svg fill="0" height="256" width="256" viewBox="0 0 512.08 512.08" xml:space="preserve" stroke="0" stroke-width=".005" xmlns="http://www.w3.org/2000/svg"><path style="color:#000;fill:#000;" d="M203.455 374.098h105.172a10.95 10.95 0 0 1 9.111 4.875l56.885 85.33c4.849 7.277-.367 17.022-9.111 17.023H146.568c-8.744 0-13.96-9.746-9.111-17.023l56.887-85.33a10.95 10.95 0 0 1 9.111-4.875zM186.691 68.86a10.95 10.95 0 0 1 9.147 11.359L181.64 357.813a10.94 10.94 0 0 1-1.825 5.515l-42.662 63.996c-6.236 9.347-20.822 4.36-20.033-6.847l21.582-304.704a10.95 10.95 0 0 1 3.008-6.794l35.277-36.887a10.95 10.95 0 0 1 9.703-3.233zm139.289-.15a10.95 10.95 0 0 1 7.954 3.38l35.279 36.889a10.95 10.95 0 0 1 3.006 6.753l22.742 304.704c.835 11.228-13.783 16.255-20.031 6.888l-42.668-64a10.95 10.95 0 0 1-1.823-5.469L315.086 80.264c-.345-6.26 4.626-11.53 10.894-11.553zM223.66 42.63h64.182a10.95 10.95 0 0 1 10.941 10.538l10.863 288.797c.233 6.204-4.733 11.36-10.94 11.361h-85.331c-6.2 0-11.164-5.143-10.943-11.34L212.717 53.19a10.95 10.95 0 0 1 10.943-10.558z"/><path style="color:#000;fill:#000;" d="M223.66 42.629q-335.49-63.943 0 0Zm0 0a10.953 10.953 0 0 0-10.945 10.56L202.43 341.986c-.22 6.198 4.743 11.342 10.945 11.342h85.33c6.21 0 11.176-5.158 10.943-11.363L298.785 53.168a10.953 10.953 0 0 0-10.943-10.54Zm0 .004h64.182a10.95 10.95 0 0 1 10.94 10.535l10.863 288.797c.232 6.202-4.733 11.358-10.94 11.36h-85.33c-6.199-.001-11.162-5.144-10.941-11.339L212.719 53.19c.21-5.89 5.047-10.556 10.941-10.556zm102.32 26.076c-6.27.023-11.24 5.294-10.896 11.555l15.353 277.591a10.96 10.96 0 0 0 1.823 5.471l42.668 64c3.124 4.685 8.341 5.77 12.674 4.28 4.332-1.49 7.778-5.555 7.36-11.17l-22.741-304.704a10.95 10.95 0 0 0-3.006-6.755l-35.28-36.89a10.95 10.95 0 0 0-7.955-3.378zm0 .004a10.95 10.95 0 0 1 7.952 3.379l35.279 36.888a10.95 10.95 0 0 1 3.006 6.752l22.742 304.704c.417 5.613-3.03 9.676-7.36 11.166-4.33 1.489-9.544.403-12.667-4.28l-42.668-64a10.95 10.95 0 0 1-1.823-5.467L315.088 80.264c-.345-6.258 4.625-11.528 10.892-11.551zm-141.959.031a10.96 10.96 0 0 0-7.035 3.346l-35.277 36.887a10.95 10.95 0 0 0-3.008 6.796L117.12 420.477c-.395 5.605 3.055 9.655 7.383 11.134s9.535.39 12.654-4.285l42.662-63.996a10.96 10.96 0 0 0 1.825-5.518L195.84 80.22a10.953 10.953 0 0 0-11.819-11.475zm0 .006a10.945 10.945 0 0 1 11.815 11.469l-14.197 277.594a10.94 10.94 0 0 1-1.825 5.513l-42.662 63.996c-3.117 4.672-8.322 5.762-12.648 4.283s-7.776-5.525-7.381-11.128l21.582-304.704a10.95 10.95 0 0 1 3.008-6.793l35.277-36.886a10.95 10.95 0 0 1 7.031-3.344zm19.434 305.346a10.95 10.95 0 0 0-9.113 4.875l-56.887 85.33c-4.85 7.278.367 17.026 9.113 17.027h218.944c8.746 0 13.963-9.749 9.113-17.027l-56.885-85.33a10.95 10.95 0 0 0-9.113-4.875zm0 .004h105.172c3.66 0 7.079 1.83 9.11 4.875l56.884 85.33c4.848 7.275-.367 17.018-9.11 17.02H146.569c-8.742-.002-13.957-9.745-9.109-17.02l56.887-85.33a10.95 10.95 0 0 1 9.11-4.875z"/><path style="color:#000;fill:#000;" d="m333.16 96.125 14.33 259.086 28.584 42.875-20.812-278.852z"/></svg>
···
-56
alloy/entry/README.md.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en"> 3 - <head> 4 - <meta charset="utf-8"> 5 - <meta name="viewport" content="width=device-width, initial-scale=1"> 6 - <title>README.md</title> 7 - <link rel="stylesheet" href="../css/base.css"> 8 - <link rel="stylesheet" href="../css/syntax.css"> 9 - </head> 10 - <body> 11 - <p><img src="Logo.svg" alt="Logo.svg" /></p> 12 - <h1>Alloy</h1> 13 - <p>Alloy is a language that fuses Rust's power, safety guarantees, and performance with Swift's ergonomics and TypeScript's type system innovations. It features unique systems like explicit effect tracking and an advanced trait system with defaults. It maintains portability and compatibility by transpiling to Rust code, meaning it runs pretty much anywhere Rust does, and can take advantage of the existing Rust ecosystem.</p> 14 - <h2>Key Features</h2> 15 - <ul> 16 - <li>🚀 <strong>Performance</strong>: (hopefully) Zero-cost abstractions and efficient compilation to Rust</li> 17 - <li>🛡️ <strong>Safety</strong>: Thread-safe by default with implicit Arc</li> 18 - <li>🎯 <strong>Effect Tracking</strong>: Explicit side effect management</li> 19 - <li>🧩 <strong>Advanced Traits</strong>: Flexible trait system with powerful defaults</li> 20 - <li>🔄 <strong>Ergonomic Syntax</strong>: Clean, expressive code</li> 21 - </ul> 22 - <h2>Example</h2> 23 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust">effect <span class="wvrcode-constant wvrcode-other wvrcode-rust">IO</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 24 - <span class="wvrcode-support wvrcode-function wvrcode-rust">read_line</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String 25 - print<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>String<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> 26 - </span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 27 - 28 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">process</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">input</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> String</span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String</span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 29 - input 30 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">trim</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 31 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">to_uppercase</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 32 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">add_exclamation</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 33 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 34 - 35 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">main</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> Result</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> Error<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> with <span class="wvrcode-constant wvrcode-other wvrcode-rust">IO</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 36 - <span class="wvrcode-support wvrcode-function wvrcode-rust">print</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Enter your name: <span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 37 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> name <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">read_line</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 38 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> processed <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">process</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>name</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 39 - <span class="wvrcode-support wvrcode-function wvrcode-rust">print</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Hello, {processed}!<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 40 - <span class="wvrcode-support wvrcode-type wvrcode-rust">Ok</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 41 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 42 - </span></code></pre> 43 - <h2>Documentation</h2> 44 - <ul> 45 - <li><a href="./Language%20Overview.html">Language Overview</a></li> 46 - <li><a href="./Syntax%20Guide.html">Syntax Guide</a></li> 47 - <li><a href="./Traits.html">Traits</a></li> 48 - <li><a href="./Effects.html">Effects</a></li> 49 - </ul> 50 - <h2>Status</h2> 51 - <h2>Contributing</h2> 52 - <h2>License</h2> 53 - <p>Alloy is licensed under the MPL-2.0.</p> 54 - <p><a href="./licenses/MPL-2.html"><img src="https://img.shields.io/badge/License-MPL_2.0-brightgreen.svg" alt="License: MPL 2.0" /></a></p> 55 - </body> 56 - </html>
···
-356
alloy/entry/Syntax Guide.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en"> 3 - <head> 4 - <meta charset="utf-8"> 5 - <meta name="viewport" content="width=device-width, initial-scale=1"> 6 - <title>Syntax Guide</title> 7 - <link rel="stylesheet" href="../css/base.css"> 8 - <link rel="stylesheet" href="../css/syntax.css"> 9 - </head> 10 - <body> 11 - <h2>Core Principles</h2> 12 - <ol> 13 - <li>Clean and consistent syntax that prioritizes readability</li> 14 - <li>Pipeline-oriented flow where appropriate</li> 15 - <li>Explicit over implicit</li> 16 - <li>Thread-local and immutable by default</li> 17 - <li>Square brackets for generics/templates</li> 18 - <li>Minimal noise and ceremony</li> 19 - <li>Predictable formatting rules</li> 20 - </ol> 21 - <h2>Basic Syntax Elements</h2> 22 - <h3>Keywords and Names</h3> 23 - <h4>Functions</h4> 24 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Function declaration 25 - </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">add</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">x</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">i32</span>, <span class="wvrcode-variable wvrcode-parameter wvrcode-rust">y</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">i32</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">i32</span></span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 26 - x <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">+</span> y 27 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 28 - 29 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Async function 30 - </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">fetch_data</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> Result</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>Data<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> Error<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> with Async <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 31 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> ... 32 - </span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 33 - 34 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Generic function 35 - </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">map</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>T<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> U<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>value<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> T<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> f<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>T</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> U</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> U</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 36 - <span class="wvrcode-support wvrcode-function wvrcode-rust">f</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>value</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 37 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 38 - </span></code></pre> 39 - <h4>Variables</h4> 40 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"> 41 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Immutable by default 42 - </span><span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> x <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">5</span> 43 - 44 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Mutable variables must be declared with &#39;let mut&#39; 45 - </span><span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> <span class="wvrcode-storage wvrcode-modifier wvrcode-rust">mut</span> count <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">0</span> 46 - 47 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Explicit type annotation 48 - </span><span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> name<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-support wvrcode-type wvrcode-rust">String</span> <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Alice<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span> 49 - 50 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Pattern binding 51 - </span><span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> Point<span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>x<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> y</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> point 52 - </span></code></pre> 53 - <h4>Types and Traits</h4> 54 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Type declaration 55 - </span><span class="wvrcode-storage wvrcode-type wvrcode-type wvrcode-rust">type</span> <span class="wvrcode-entity wvrcode-name wvrcode-type wvrcode-rust">Point</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 56 - x<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">f64</span> 57 - y<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">f64</span> 58 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 59 - 60 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Enum (sum type) 61 - </span><span class="wvrcode-storage wvrcode-type wvrcode-type wvrcode-rust">type</span> <span class="wvrcode-entity wvrcode-name wvrcode-type wvrcode-rust">Option</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>T<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 62 - <span class="wvrcode-support wvrcode-type wvrcode-rust">Some</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>T</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 63 - <span class="wvrcode-support wvrcode-type wvrcode-rust">None</span> 64 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 65 - 66 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Trait declaration 67 - </span><span class="wvrcode-meta wvrcode-trait wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-trait wvrcode-rust">trait</span> <span class="wvrcode-entity wvrcode-name wvrcode-trait wvrcode-rust">Display</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 68 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">display</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String 69 - </span></span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 70 - 71 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Generic trait with associated type 72 - </span><span class="wvrcode-meta wvrcode-trait wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-trait wvrcode-rust">trait</span> <span class="wvrcode-entity wvrcode-name wvrcode-trait wvrcode-rust">Container</span>[T] <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 73 - <span class="wvrcode-storage wvrcode-type wvrcode-type wvrcode-rust">type</span> <span class="wvrcode-entity wvrcode-name wvrcode-type wvrcode-rust">Item</span> 74 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">get</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> Option</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>T<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> 75 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">insert</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span>, <span class="wvrcode-variable wvrcode-parameter wvrcode-rust">item</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> T</span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> 76 - </span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 77 - </span></code></pre> 78 - <h2>Control Flow</h2> 79 - <h3>Pattern Matching</h3> 80 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Basic match expression using pipeline 81 - </span><span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> description <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> value 82 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-keyword wvrcode-control wvrcode-rust">match</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 83 - <span class="wvrcode-support wvrcode-type wvrcode-rust">Ok</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>n</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-keyword wvrcode-control wvrcode-rust">if</span> n <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">0</span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> </span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Positive<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span> 84 - <span class="wvrcode-support wvrcode-type wvrcode-rust">Ok</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>n</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-keyword wvrcode-control wvrcode-rust">if</span> n <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&lt;</span> <span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">0</span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> </span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Negative<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span> 85 - <span class="wvrcode-support wvrcode-type wvrcode-rust">Ok</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">0</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> </span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Zero<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span> 86 - <span class="wvrcode-support wvrcode-type wvrcode-rust">Err</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>e</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> </span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Error: {e}<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span> 87 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 88 - 89 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Match with complex patterns 90 - </span><span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> command <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> input 91 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-keyword wvrcode-control wvrcode-rust">match</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 92 - Command.Quit <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> exit<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>0<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> 93 - Command</span>.Move<span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>x<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> y</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> move_cursor<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>x, y<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> 94 - Command</span>.Text<span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-storage wvrcode-type wvrcode-rust">str</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> insert_text<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-storage wvrcode-type wvrcode-rust">str</span><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> 95 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">_</span> </span><span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> beep<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> 96 - </span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 97 - </span></code></pre> 98 - <h3>Conditionals</h3> 99 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> If expression 100 - </span><span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> status <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-keyword wvrcode-control wvrcode-rust">if</span> count <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">0</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 101 - <span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Active<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span> 102 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> <span class="wvrcode-keyword wvrcode-control wvrcode-rust">else</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 103 - <span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Inactive<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span> 104 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 105 - 106 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Guard statement for early returns 107 - </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">process</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">data</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> Option[Data]</span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> Result</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>Output<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> Error<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 108 - guard <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> unwrapped <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> data <span class="wvrcode-keyword wvrcode-control wvrcode-rust">else</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 109 - <span class="wvrcode-keyword wvrcode-control wvrcode-rust">return</span> <span class="wvrcode-support wvrcode-type wvrcode-rust">Err</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>Error.InvalidData</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 110 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 111 - <span class="wvrcode-support wvrcode-function wvrcode-rust">process_unwrapped</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>unwrapped</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 112 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 113 - 114 - </span></code></pre> 115 - <h3>Loops</h3> 116 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> For-in loop 117 - </span><span class="wvrcode-keyword wvrcode-control wvrcode-rust">for</span> item <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">in</span> items <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 118 - <span class="wvrcode-support wvrcode-function wvrcode-rust">process</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>item</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 119 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 120 - 121 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> While loop 122 - </span><span class="wvrcode-keyword wvrcode-control wvrcode-rust">while</span> condition <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 123 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> ... 124 - </span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 125 - 126 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Loop with iterator methods 127 - </span>items 128 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">filter</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>pred</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 129 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">map</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>transform</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 130 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">collect</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 131 - </span></code></pre> 132 - <h2>Error Handling</h2> 133 - <h3>Results and Options</h3> 134 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Using Result type 135 - </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">divide</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">x</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">f64</span>, <span class="wvrcode-variable wvrcode-parameter wvrcode-rust">y</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">f64</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> Result</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span><span class="wvrcode-storage wvrcode-type wvrcode-rust">f64</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> DivisionError<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 136 - <span class="wvrcode-keyword wvrcode-control wvrcode-rust">if</span> y <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-constant wvrcode-numeric wvrcode-float wvrcode-rust">0.</span><span class="wvrcode-constant wvrcode-numeric wvrcode-float wvrcode-rust">0</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 137 - <span class="wvrcode-support wvrcode-type wvrcode-rust">Err</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>DivisionError.DivideByZero</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 138 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> <span class="wvrcode-keyword wvrcode-control wvrcode-rust">else</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 139 - <span class="wvrcode-support wvrcode-type wvrcode-rust">Ok</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>x <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">/</span> y</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 140 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 141 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 142 - 143 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Chaining Results 144 - </span><span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> result <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> value 145 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">first_operation</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 146 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">and_then</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>second_operation</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 147 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">map</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>third_operation</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 148 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">map_err</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>CustomError</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 149 - 150 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Pattern matching on Result 151 - </span><span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> output <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> result 152 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-keyword wvrcode-control wvrcode-rust">match</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 153 - <span class="wvrcode-support wvrcode-type wvrcode-rust">Ok</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>value</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> process<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>value<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> 154 - Err<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>e<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> </span><span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> handle_error<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>e<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> 155 - </span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 156 - </span></code></pre> 157 - <h2>Effects and Side Effects</h2> 158 - <h3>Effect Declaration and Usage</h3> 159 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Declaring effects 160 - </span>effect <span class="wvrcode-constant wvrcode-other wvrcode-rust">IO</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 161 - <span class="wvrcode-support wvrcode-function wvrcode-rust">read_line</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String 162 - print<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-storage wvrcode-type wvrcode-rust">str</span>: String<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> 163 - </span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 164 - 165 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Using effects 166 - </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">greet</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String with IO</span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 167 - <span class="wvrcode-support wvrcode-function wvrcode-rust">print</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>What&#39;s your name?<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 168 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> name <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">read_line</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 169 - <span class="wvrcode-support wvrcode-function wvrcode-rust">print</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Hello, {name}!<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 170 - name 171 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 172 - 173 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Handling effects 174 - </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">main</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 175 - run with <span class="wvrcode-constant wvrcode-other wvrcode-rust">IO</span> <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> ConsoleIO <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 176 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> name <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">greet</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 177 - <span class="wvrcode-support wvrcode-function wvrcode-rust">print</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Goodbye, {name}<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 178 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 179 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 180 - </span></code></pre> 181 - <h2>Generics and Traits</h2> 182 - <h3>Generic Types</h3> 183 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Generic type declaration 184 - </span><span class="wvrcode-storage wvrcode-type wvrcode-type wvrcode-rust">type</span> <span class="wvrcode-entity wvrcode-name wvrcode-type wvrcode-rust">List</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>T<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 185 - head<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-support wvrcode-type wvrcode-rust">Option</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>T<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> 186 - tail<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-support wvrcode-type wvrcode-rust">Option</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span><span class="wvrcode-support wvrcode-type wvrcode-rust">Box</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>List<span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>T<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> 187 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 188 - 189 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Generic trait bounds 190 - </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">sort</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>T<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-support wvrcode-type wvrcode-rust">Ord</span><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>list<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&amp;</span><span class="wvrcode-storage wvrcode-modifier wvrcode-rust">mut</span> <span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>T<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 191 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Implementation 192 - </span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 193 - 194 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Multiple bounds 195 - </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">process</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>T<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> Display <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">+</span> <span class="wvrcode-support wvrcode-type wvrcode-rust">Clone</span><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>item<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> T</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 196 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Implementation 197 - </span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 198 - </span></code></pre> 199 - <h3>Trait Implementation</h3> 200 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust">implement Display <span class="wvrcode-keyword wvrcode-control wvrcode-rust">for</span> Point <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 201 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">display</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String</span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 202 - <span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Point({self.x}, {self.y})<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span> 203 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 204 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 205 - 206 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Generic implementation 207 - </span>implement<span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>T<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> Display<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> Display <span class="wvrcode-keyword wvrcode-control wvrcode-rust">for</span> <span class="wvrcode-support wvrcode-type wvrcode-rust">Option</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>T<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 208 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">display</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">self</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> String</span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 209 - <span class="wvrcode-keyword wvrcode-control wvrcode-rust">match</span> <span class="wvrcode-variable wvrcode-language wvrcode-rust">self</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 210 - <span class="wvrcode-support wvrcode-type wvrcode-rust">Some</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>value</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> </span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Some({value})<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span> 211 - <span class="wvrcode-support wvrcode-type wvrcode-rust">None</span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> </span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>None<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span> 212 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 213 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 214 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 215 - 216 - </span></code></pre> 217 - <h2>Concurrency</h2> 218 - <h3>Async/Await</h3> 219 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Async function declaration 220 - </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">fetch_data</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">url</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> String</span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> Result</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">[</span>Data<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> Error<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">]</span></span> with Async <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 221 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> response <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> http.<span class="wvrcode-support wvrcode-function wvrcode-rust">get</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>url</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">?</span>.await 222 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> data <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> response.<span class="wvrcode-support wvrcode-function wvrcode-rust">json</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">?</span>.await 223 - <span class="wvrcode-support wvrcode-type wvrcode-rust">Ok</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>data</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 224 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 225 - 226 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Using async functions 227 - </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">process</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> </span>with Async <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 228 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> data <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">fetch_data</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>example.com<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">?</span> 229 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> await 230 - <span class="wvrcode-support wvrcode-function wvrcode-rust">process_data</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>data</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 231 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> await 232 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 233 - </span></code></pre> 234 - <h3>Thread Safety</h3> 235 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Thread-local by default 236 - </span><span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> counter <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">0</span> 237 - 238 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Explicitly shared state 239 - </span>shared <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> global_counter <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> AtomicInteger<span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">0</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 240 - 241 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Shared function 242 - </span>shared <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">increment</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 243 - global_counter.<span class="wvrcode-support wvrcode-function wvrcode-rust">fetch_add</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">1</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 244 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 245 - </span></code></pre> 246 - <h2>Pipeline Operator</h2> 247 - <h3>Basic Usage</h3> 248 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Pipeline with simple transformations 249 - </span><span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> result <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> value 250 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">transform1</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 251 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">transform2</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 252 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">transform3</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 253 - 254 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Pipeline with closures 255 - </span><span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> processed <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> data 256 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">map</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>x <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> x </span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">*</span> <span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">2</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 257 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">filter</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>x <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> x </span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">0</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 258 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">fold</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">0</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> <span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>acc<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> x</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> acc </span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">+</span> x</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 259 - </span></code></pre> 260 - <h3>Complex Pipelines</h3> 261 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> result <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> initial_value 262 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">validate</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 263 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-keyword wvrcode-control wvrcode-rust">match</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 264 - <span class="wvrcode-support wvrcode-type wvrcode-rust">Ok</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>value</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> process<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>value<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> 265 - Err<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>e<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> </span><span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> handle_error<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>e<span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span> 266 - </span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 267 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">transform</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 268 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">finalize</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 269 - </span></code></pre> 270 - <h2>Standard Library Conventions</h2> 271 - <h3>Iterator Methods</h3> 272 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Method chaining with iterators 273 - </span><span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> sum <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> numbers 274 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">filter</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>n <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> n </span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">0</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 275 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">map</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>n <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> n </span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">*</span> n</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 276 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">sum</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 277 - 278 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Collecting results 279 - </span><span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> vec <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> iter 280 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">filter</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>pred</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 281 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">map</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>transform</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 282 - <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">|</span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&gt;</span> <span class="wvrcode-support wvrcode-function wvrcode-rust">collect</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span></span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 283 - </span></code></pre> 284 - <h3>String Formatting</h3> 285 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> String interpolation 286 - </span><span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> message <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span>Hello, {name}!<span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span> 287 - 288 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Multi-line strings 289 - </span><span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> text <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span> 290 - This is a multi-line 291 - string with proper 292 - indentation handling 293 - <span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span><span class="wvrcode-string wvrcode-quoted wvrcode-double wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-begin wvrcode-rust">&quot;</span><span class="wvrcode-punctuation wvrcode-definition wvrcode-string wvrcode-end wvrcode-rust">&quot;</span></span> 294 - </span></code></pre> 295 - <h2>Module System</h2> 296 - <h3>Module Declaration</h3> 297 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Module declaration 298 - </span>module math <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 299 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-modifier wvrcode-rust">pub</span> <span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">add</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">x</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">i32</span>, <span class="wvrcode-variable wvrcode-parameter wvrcode-rust">y</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">i32</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">i32</span></span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 300 - x <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">+</span> y 301 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 302 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 303 - 304 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Using modules 305 - </span><span class="wvrcode-keyword wvrcode-other wvrcode-rust">use</span> math.<span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span>add<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> subtract</span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 306 - <span class="wvrcode-keyword wvrcode-other wvrcode-rust">use</span> collections.<span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span>HashMap<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> Vector</span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 307 - </span></code></pre> 308 - <h2>Comments and Documentation</h2> 309 - <h3>Documentation Comments</h3> 310 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"><span class="wvrcode-comment wvrcode-line wvrcode-documentation wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">///</span> Function documentation 311 - </span><span class="wvrcode-comment wvrcode-line wvrcode-documentation wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">///</span> 312 - </span><span class="wvrcode-comment wvrcode-line wvrcode-documentation wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">///</span> # Arguments 313 - </span><span class="wvrcode-comment wvrcode-line wvrcode-documentation wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">///</span> * `x` - First number 314 - </span><span class="wvrcode-comment wvrcode-line wvrcode-documentation wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">///</span> * `y` - Second number 315 - </span><span class="wvrcode-comment wvrcode-line wvrcode-documentation wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">///</span> 316 - </span><span class="wvrcode-comment wvrcode-line wvrcode-documentation wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">///</span> # Returns 317 - </span><span class="wvrcode-comment wvrcode-line wvrcode-documentation wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">///</span> Sum of the two numbers 318 - </span> 319 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">add</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">x</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">i32</span>, <span class="wvrcode-variable wvrcode-parameter wvrcode-rust">y</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">i32</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> <span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">i32</span></span> </span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 320 - x <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">+</span> y 321 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 322 - 323 - <span class="wvrcode-comment wvrcode-line wvrcode-double-slash wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">//</span> Regular single-line comment 324 - </span> 325 - <span class="wvrcode-comment wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">/*</span> Block comment 326 - spanning multiple 327 - lines <span class="wvrcode-punctuation wvrcode-definition wvrcode-comment wvrcode-rust">*/</span></span> 328 - 329 - </span></code></pre> 330 - <h2>Formatting Rules</h2> 331 - <ol> 332 - <li>Use 4 spaces for indentation</li> 333 - <li>One statement per line</li> 334 - <li>Blank line between function definitions</li> 335 - <li>No semicolon for expressions that are the last in a block</li> 336 - <li>Space after keywords</li> 337 - <li>No space after function names in calls</li> 338 - <li>Align match arms</li> 339 - <li>Pipeline operators at the start of lines</li> 340 - <li>Break long lines at sensible points (pipelines, binary operators)</li> 341 - </ol> 342 - <h2>Best Practices</h2> 343 - <ol> 344 - <li>Prefer pipeline style for transformations and matches</li> 345 - <li>Use pattern matching over if/else chains</li> 346 - <li>Make effects explicit</li> 347 - <li>Keep functions focused and small</li> 348 - <li>Use meaningful and descriptive names</li> 349 - <li>Document public interfaces</li> 350 - <li>Utilize type inference where it aids readability</li> 351 - <li>Make thread sharing explicit</li> 352 - <li>Handle all error cases explicitly</li> 353 - <li>Use appropriate abstraction levels</li> 354 - </ol> 355 - </body> 356 - </html>
···
-37
alloy/entry/Untitled.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en"> 3 - <head> 4 - <meta charset="utf-8"> 5 - <meta name="viewport" content="width=device-width, initial-scale=1"> 6 - <title>Untitled</title> 7 - <link rel="stylesheet" href="../css/base.css"> 8 - <link rel="stylesheet" href="../css/syntax.css"> 9 - </head> 10 - <body> 11 - <pre><code class="language-Rust"><span class="wvrcode-source wvrcode-rust"> 12 - <span class="wvrcode-meta wvrcode-struct wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-struct wvrcode-rust">struct</span> </span><span class="wvrcode-meta wvrcode-struct wvrcode-rust"><span class="wvrcode-entity wvrcode-name wvrcode-struct wvrcode-rust">Encoder</span> </span><span class="wvrcode-meta wvrcode-struct wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 13 - 14 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 15 - 16 - <span class="wvrcode-meta wvrcode-impl wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-impl wvrcode-rust">impl</span> </span><span class="wvrcode-meta wvrcode-impl wvrcode-rust"><span class="wvrcode-entity wvrcode-name wvrcode-impl wvrcode-rust">Encoder</span> </span><span class="wvrcode-meta wvrcode-impl wvrcode-rust"><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 17 - <span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-storage wvrcode-type wvrcode-function wvrcode-rust">fn</span> </span><span class="wvrcode-entity wvrcode-name wvrcode-function wvrcode-rust">new</span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-begin wvrcode-rust">(</span><span class="wvrcode-variable wvrcode-parameter wvrcode-rust">chars</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">&amp;</span>[<span class="wvrcode-storage wvrcode-type wvrcode-rust">char</span>]</span><span class="wvrcode-meta wvrcode-function wvrcode-rust"><span class="wvrcode-meta wvrcode-function wvrcode-parameters wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-parameters wvrcode-end wvrcode-rust">)</span></span></span></span><span class="wvrcode-meta wvrcode-function wvrcode-rust"> </span><span class="wvrcode-keyword wvrcode-operator wvrcode-rust">-</span><span class="wvrcode-meta wvrcode-function wvrcode-return-type wvrcode-rust"><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">-&gt;</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">Self</span></span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 18 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">Self</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 19 - chars<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> 20 - position<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">0</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> 21 - is_number<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-constant wvrcode-language wvrcode-rust">false</span><span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">,</span> 22 - number_start<span class="wvrcode-punctuation wvrcode-separator wvrcode-rust">:</span> <span class="wvrcode-constant wvrcode-numeric wvrcode-integer wvrcode-decimal wvrcode-rust">0</span> 23 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 24 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 25 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span></span> 26 - 27 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> chars <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span></span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 28 - 29 - <span class="wvrcode-storage wvrcode-type wvrcode-rust">let</span> enc <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">=</span> <span class="wvrcode-meta wvrcode-path wvrcode-rust">Encoder<span class="wvrcode-punctuation wvrcode-accessor wvrcode-rust">::</span></span>new<span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-begin wvrcode-rust">(</span>chars</span><span class="wvrcode-meta wvrcode-group wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-group wvrcode-end wvrcode-rust">)</span></span> 30 - 31 - <span class="wvrcode-keyword wvrcode-control wvrcode-rust">for</span> <span class="wvrcode-storage wvrcode-type wvrcode-rust">char</span> <span class="wvrcode-keyword wvrcode-operator wvrcode-rust">in</span> enc.chars <span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-begin wvrcode-rust">{</span> 32 - 33 - </span><span class="wvrcode-meta wvrcode-block wvrcode-rust"><span class="wvrcode-punctuation wvrcode-section wvrcode-block wvrcode-end wvrcode-rust">}</span></span> 34 - 35 - 36 - </span></code></pre></body> 37 - </html>
···
-26
alloy/entry/todo!.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en"> 3 - <head> 4 - <meta charset="utf-8"> 5 - <meta name="viewport" content="width=device-width, initial-scale=1"> 6 - <title>todo!</title> 7 - <link rel="stylesheet" href="../css/base.css"> 8 - <link rel="stylesheet" href="../css/syntax.css"> 9 - </head> 10 - <body> 11 - <hr /> 12 - <p>kanban-plugin: board</p> 13 - <hr /> 14 - <h2>PLANNED</h2> 15 - <h2>NOT STARTED</h2> 16 - <h2>BLOCKED</h2> 17 - <h2>IN PROGRESS</h2> 18 - <h2>IN TESTING</h2> 19 - <h2>DONE</h2> 20 - <p><strong>Complete</strong></p> 21 - <p>%% kanban:settings</p> 22 - <pre><code>{"kanban-plugin":"board","list-collapse":[true,true,true,true,true,true]} 23 - </code></pre> 24 - <p>%%</p> 25 - </body> 26 - </html>
···
-24
alloy/index.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en"> 3 - <head> 4 - <meta charset="utf-8"> 5 - <meta name="viewport" content="width=device-width, initial-scale=1"> 6 - <title>Language Overview</title> 7 - <link rel="stylesheet" href="./css/base.css"> 8 - <link rel="stylesheet" href="./css/syntax.css"> 9 - </head> 10 - <body> 11 - <h1>Index</h1> 12 - <ul> 13 - <li><a href="./entry/Language Overview.html">Language Overview.md</a></li> 14 - <li><a href="./entry/Untitled.html">Untitled.md</a></li> 15 - <li><a href="./entry/Logo.html">Logo.svg</a></li> 16 - <li><a href="./entry/todo!.html">todo!.md</a></li> 17 - <li><a href="./entry/Features/Effects.html">Features/Effects.md</a></li> 18 - <li><a href="./entry/Features/Allocator.html">Features/Allocator.md</a></li> 19 - <li><a href="./entry/Features/Traits.html">Features/Traits.md</a></li> 20 - <li><a href="./entry/README.md.html">README.md.md</a></li> 21 - <li><a href="./entry/Syntax Guide.html">Syntax Guide.md</a></li> 22 - </ul> 23 - </body> 24 - </html>
···
+7
crates/weaver-server/.gitignore
···
··· 1 + # Generated by Cargo 2 + # will have compiled files and executables 3 + /target 4 + .DS_Store 5 + 6 + # These are backup files generated by rustfmt 7 + **/*.rs.bk
+13 -17
crates/weaver-server/Cargo.toml
··· 1 [package] 2 name = "weaver-server" 3 - version.workspace = true 4 - edition.workspace = true 5 - license.workspace = true 6 - publish = false 7 8 - [[bin]] 9 - name = "weaver-server" 10 - path = "src/main.rs" 11 - 12 - [lib] 13 - name = "weaver_server" 14 - path = "src/lib.rs" 15 16 [dependencies] 17 weaver-common = { path = "../weaver-common" } 18 weaver-workspace-hack = { version = "0.1", path = "../weaver-workspace-hack" } 19 20 jacquard = { workspace = true, features = ["tracing"] } 21 - jacquard-axum = { workspace = true } 22 23 - axum = "0.8" 24 - tokio = { version = "1.44", features = ["full"] } 25 - notify = "8.0" 26 - 27 - clap = { version = "4.5", features = ["derive", "env", "cargo", "unicode"] }
··· 1 [package] 2 name = "weaver-server" 3 + version = "0.1.0" 4 + authors = ["Orual <orual@nonbinary.computer>"] 5 + edition = "2021" 6 7 + # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 8 9 [dependencies] 10 + dioxus = { version = "0.6.0", features = ["router", "fullstack"] } 11 weaver-common = { path = "../weaver-common" } 12 weaver-workspace-hack = { version = "0.1", path = "../weaver-workspace-hack" } 13 14 jacquard = { workspace = true, features = ["tracing"] } 15 16 + [features] 17 + default = ["web"] 18 + # The feature that are only required for the web = ["dioxus/web"] build target should be optional and only enabled in the web = ["dioxus/web"] feature 19 + web = ["dioxus/web"] 20 + # The feature that are only required for the desktop = ["dioxus/desktop"] build target should be optional and only enabled in the desktop = ["dioxus/desktop"] feature 21 + desktop = ["dioxus/desktop"] 22 + # The feature that are only required for the mobile = ["dioxus/mobile"] build target should be optional and only enabled in the mobile = ["dioxus/mobile"] feature 23 + mobile = ["dioxus/mobile"]
+21
crates/weaver-server/Dioxus.toml
···
··· 1 + [application] 2 + 3 + [web.app] 4 + 5 + # HTML title tag content 6 + title = "weaver-server" 7 + 8 + # include `assets` in web platform 9 + [web.resource] 10 + 11 + # Additional CSS style files 12 + style = [] 13 + 14 + # Additional JavaScript files 15 + script = [] 16 + 17 + [web.resource.dev] 18 + 19 + # Javascript code file 20 + # serve: [dev-server] only 21 + script = []
+34
crates/weaver-server/README.md
···
··· 1 + # Development 2 + 3 + Your new jumpstart project includes basic organization with an organized `assets` folder and a `components` folder. 4 + If you chose to develop with the router feature, you will also have a `views` folder. 5 + 6 + ``` 7 + project/ 8 + ├─ assets/ # Any assets that are used by the app should be placed here 9 + ├─ src/ 10 + │ ├─ main.rs # The entrypoint for the app. It also defines the routes for the app. 11 + │ ├─ components/ 12 + │ │ ├─ mod.rs # Defines the components module 13 + │ │ ├─ hero.rs # The Hero component for use in the home page 14 + │ │ ├─ echo.rs # The echo component uses server functions to communicate with the server 15 + │ ├─ views/ # The views each route will render in the app. 16 + │ │ ├─ mod.rs # Defines the module for the views route and re-exports the components for each route 17 + │ │ ├─ blog.rs # The component that will render at the /blog/:id route 18 + │ │ ├─ home.rs # The component that will render at the / route 19 + ├─ Cargo.toml # The Cargo.toml file defines the dependencies and feature flags for your project 20 + ``` 21 + 22 + ### Serving Your App 23 + 24 + Run the following command in the root of your project to start developing with the default platform: 25 + 26 + ```bash 27 + dx serve --platform web 28 + ``` 29 + 30 + To run for a different platform, use the `--platform platform` flag. E.g. 31 + ```bash 32 + dx serve --platform desktop 33 + ``` 34 +
crates/weaver-server/assets/favicon.ico

This is a binary file and will not be displayed.

+20
crates/weaver-server/assets/header.svg
···
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1007 197"><style> 2 + @keyframes a0_t { 0% { transform: translate(225px,339.9px) scale(0,1) translate(-89.5px,-24px); } 35% { transform: translate(225px,339.9px) scale(0,1) translate(-89.5px,-24px); animation-timing-function: cubic-bezier(.6,0,.4,1); } 45% { transform: translate(225px,339.9px) scale(1,1) translate(-89.5px,-24px); } 50% { transform: translate(225px,339.9px) scale(1,1) translate(-89.5px,-24px); animation-timing-function: cubic-bezier(.6,0,.4,1); } 60% { transform: translate(225px,339.9px) scale(0,1) translate(-89.5px,-24px); } 100% { transform: translate(225px,339.9px) scale(0,1) translate(-89.5px,-24px); } } 3 + @keyframes a1_t { 0% { transform: translate(225px,348.9px) scale(0,1) translate(-41.5px,-11px); } 20% { transform: translate(225px,348.9px) scale(0,1) translate(-41.5px,-11px); animation-timing-function: cubic-bezier(.6,0,.4,1); } 30% { transform: translate(225px,348.9px) scale(1,1) translate(-41.5px,-11px); } 35% { transform: translate(225px,348.9px) scale(1,1) translate(-41.5px,-11px); } 45% { transform: translate(225px,348.9px) scale(0,1) translate(-41.5px,-11px); } 100% { transform: translate(225px,348.9px) scale(0,1) translate(-41.5px,-11px); } } 4 + @keyframes a3_t { 0% { transform: translate(225px,198.9px) rotate(-90deg); } 10% { transform: translate(225px,198.9px) rotate(-90deg); } 20% { transform: translate(225px,198.9px) rotate(-90deg); animation-timing-function: cubic-bezier(.6,0,.4,1); } 30% { transform: translate(225px,198.9px) rotate(0deg); } 35% { transform: translate(225px,198.9px) rotate(0deg); } 45% { transform: translate(225px,198.9px) rotate(0deg); } 50% { transform: translate(225px,198.9px) rotate(0deg); animation-timing-function: cubic-bezier(.6,0,.4,1); } 60% { transform: translate(225px,198.9px) rotate(-90deg); } 65% { transform: translate(225px,198.9px) rotate(-90deg); } 75% { transform: translate(225px,198.9px) rotate(-90deg); } 100% { transform: translate(225px,198.9px) rotate(-90deg); } } 5 + @keyframes a2_t { 0% { transform: translate(-200px,-167px); animation-timing-function: cubic-bezier(.6,0,.4,1); } 10% { transform: translate(-150px,-80px); } 20% { transform: translate(-150px,-80px); animation-timing-function: cubic-bezier(.6,0,.4,1); } 30% { transform: translate(-200px,-123px); } 35% { transform: translate(-200px,-123px); animation-timing-function: cubic-bezier(.6,0,.4,1); } 45% { transform: translate(-150px,-100px); } 50% { transform: translate(-150px,-100px); animation-timing-function: cubic-bezier(.6,0,.4,1); } 60% { transform: translate(-150px,-80px); } 65% { transform: translate(-150px,-80px); animation-timing-function: cubic-bezier(.6,0,.4,1); } 75% { transform: translate(-217px,-200px); } 100% { transform: translate(-217px,-200px); } } 6 + @keyframes a2_o { 0% { opacity: 0; animation-timing-function: cubic-bezier(.6,0,.4,1); } 10% { opacity: 1; } 65% { opacity: 1; animation-timing-function: cubic-bezier(.6,0,.4,1); } 75% { opacity: 0; } 100% { opacity: 0; } } 7 + @keyframes a2_sw { 0% { stroke-width: 30px; animation-timing-function: cubic-bezier(.6,0,.4,1); } 10% { stroke-width: 8px; } 65% { stroke-width: 8px; animation-timing-function: cubic-bezier(.6,0,.4,1); } 75% { stroke-width: 30px; } 100% { stroke-width: 30px; } } 8 + @keyframes a2_w { 0% { width: 400px; animation-timing-function: cubic-bezier(.6,0,.4,1); } 10% { width: 300px; } 20% { width: 300px; animation-timing-function: cubic-bezier(.6,0,.4,1); } 30% { width: 400px; } 35% { width: 400px; animation-timing-function: cubic-bezier(.6,0,.4,1); } 45% { width: 300px; } 50% { width: 300px; } 60% { width: 300px; } 65% { width: 300px; animation-timing-function: cubic-bezier(.6,0,.4,1); } 75% { width: 434px; } 100% { width: 434px; } } 9 + @keyframes a2_h { 0% { height: 334px; animation-timing-function: cubic-bezier(.6,0,.4,1); } 10% { height: 160px; } 20% { height: 160px; animation-timing-function: cubic-bezier(.6,0,.4,1); } 30% { height: 246px; } 35% { height: 246px; animation-timing-function: cubic-bezier(.6,0,.4,1); } 45% { height: 200px; } 50% { height: 200px; animation-timing-function: cubic-bezier(.6,0,.4,1); } 60% { height: 160px; } 65% { height: 160px; animation-timing-function: cubic-bezier(.6,0,.4,1); } 75% { height: 400px; } 100% { height: 400px; } } 10 + @keyframes a4_t { 0% { transform: translate(143.5px,48.9px); } 10% { transform: translate(180.5px,98.9px); } 100% { transform: translate(180.5px,98.9px); } } 11 + @keyframes a4_w { 0% { width: 168.5px; } 10% { width: 94.5px; } 100% { width: 94.5px; } } 12 + @keyframes a4_h { 0% { height: 302px; } 10% { height: 202px; } 100% { height: 202px; } } 13 + @keyframes a5_t { 0% { transform: translate(217px,324.9px); animation-timing-function: cubic-bezier(.6,0,.4,1); } 10% { transform: translate(190px,324.9px); } 20% { transform: translate(190px,324.9px); } 30% { transform: translate(190px,324.9px); } 100% { transform: translate(190px,324.9px); } } 14 + @keyframes a5_o { 0% { opacity: 0; animation-timing-function: cubic-bezier(.6,0,.4,1); } 10% { opacity: 1; } 20% { opacity: 1; } 30% { opacity: 0; } 100% { opacity: 0; } } 15 + @keyframes a5_w { 0% { width: 16px; animation-timing-function: cubic-bezier(.6,0,.4,1); } 10% { width: 70px; } 20% { width: 70px; } 30% { width: 70px; } 100% { width: 70px; } } 16 + @keyframes a6_t { 0% { transform: translate(217px,324.9px); } 50% { transform: translate(217px,324.9px); animation-timing-function: cubic-bezier(.6,0,.4,1); } 60% { transform: translate(190px,324.9px); } 65% { transform: translate(190px,324.9px); } 75% { transform: translate(190px,324.9px); } 100% { transform: translate(190px,324.9px); } } 17 + @keyframes a6_o { 0% { opacity: 0; } 50% { opacity: 0; animation-timing-function: cubic-bezier(.6,0,.4,1); } 60% { opacity: 1; } 65% { opacity: 1; animation-timing-function: cubic-bezier(.6,0,.4,1); } 75% { opacity: 0; } 100% { opacity: 0; } } 18 + @keyframes a6_w { 0% { width: 16px; } 50% { width: 16px; animation-timing-function: cubic-bezier(.6,0,.4,1); } 60% { width: 70px; } 65% { width: 70px; } 75% { width: 70px; } 100% { width: 70px; } } 19 + @keyframes a7_t { 0% { transform: translate(225px,198.9px) scale(1.5,1.5) translate(-42.3px,-93px); animation-timing-function: cubic-bezier(.6,0,.4,1); } 10% { transform: translate(225px,198.9px) scale(1,1) translate(-42.3px,-93px); } 20% { transform: translate(225px,198.9px) scale(1,1) translate(-42.3px,-93px); animation-timing-function: cubic-bezier(.6,0,.4,1); } 25% { transform: translate(225px,198.9px) scale(.8,.8) translate(-42.3px,-93px); animation-timing-function: cubic-bezier(.6,0,.4,1); } 30% { transform: translate(225px,198.9px) scale(1,1) translate(-42.3px,-93px); } 35% { transform: translate(225px,198.9px) scale(1,1) translate(-42.3px,-93px); animation-timing-function: cubic-bezier(.4,0,.6,1); } 45% { transform: translate(225px,198.9px) scale(.8,.8) translate(-42.3px,-93px); } 50% { transform: translate(225px,198.9px) scale(.8,.8) translate(-42.3px,-93px); animation-timing-function: cubic-bezier(.4,0,.6,1); } 55% { transform: translate(225px,198.9px) scale(.7,.7) translate(-42.3px,-93px); animation-timing-function: cubic-bezier(.4,0,.6,1); } 60% { transform: translate(225px,198.9px) scale(1,1) translate(-42.3px,-93px); } 65% { transform: translate(225px,198.9px) scale(1,1) translate(-42.3px,-93px); animation-timing-function: cubic-bezier(.4,0,.6,1); } 75% { transform: translate(225px,198.9px) scale(1.5,1.5) translate(-42.3px,-93px); } 100% { transform: translate(225px,198.9px) scale(1.5,1.5) translate(-42.3px,-93px); } } 20 + </style><defs><symbol id="Symbol-2" preserveAspectRatio="none" width="111.5" height="186" viewBox="0 0 111.5 186" overflow="visible"><g transform="translate(8.5,4.5)"><rect x="4" width="85" height="8" fill="#d9d9d9"/><rect x="4" y="26" width="85" height="8" fill="#d9d9d9"/><rect x="25" y="56" width="43" height="8" fill="#d9d9d9"/><rect width="85" height="8" fill="#d9d9d9" transform="translate(46.5,175) rotate(180) scale(-1,1) translate(-42.5,-4)"/><rect width="85" height="8" fill="#d9d9d9" transform="translate(46.5,149) rotate(180) scale(-1,1) translate(-42.5,-4)"/><rect width="43" height="8" fill="#d9d9d9" transform="translate(46.5,119) rotate(180) scale(-1,1) translate(-21.5,-4)"/><path d="M0 4c0 53 94.5 115 94.5 169" stroke="#3cc4dc" stroke-width="17" stroke-linecap="square" fill="none"/><path d="M94.5 4c0 53-94.5 115-94.5 169" stroke="#fb422d" stroke-width="17" stroke-linecap="square" fill="none"/></g></symbol><symbol id="Symbol-5" preserveAspectRatio="none" width="84.5" height="186" viewBox="0 0 84.5 186" overflow="visible"><g transform="translate(42.3,93) scale(5.352,6.9) translate(-16,60)"><g transform="translate(-34.9,-125.8)"><g transform="translate(24,5)"><path d="M33 46.5c0 3.1-0.8 5.5-2.2 7.4c-1.4 1.9-3.3 3.6-5.4 5.4c-2.2 1.7-4.5 3.6-6.3 6.2c-1.8 2.5-3.1 5.5-3.1 9.5h4.7c0-3.1 .9-5.4 2.2-7.3c1.4-1.9 3.3-3.5 5.5-5.3c2.1-1.8 4.4-3.7 6.2-6.2c1.8-2.6 3.1-5.6 3.1-9.7Z" fill="#e96020"/><path d="M20.4 70.7c-0.6 0-1 .5-1 1.1c0 .7 .4 1.2 1 1.2h12.9c.7 0 1.2-0.5 1.2-1.2c0-0.6-0.5-1.1-1.2-1.1Z" fill="#2d323b"/><path d="M21.8 66.6c-0.7 0-1 .6-1 1.2c0 .6 .3 1 .9 1h10.3c.6 0 1.1-0.5 1.1-1.1c0-0.6-0.5-1.1-1.1-1.1Z" fill="#2d323b"/><path d="M21.8 53c-0.7 0-1.2 .5-1.1 1.1c0 .6 .4 1.1 1.1 1.1h10.2c.6 0 .9-0.6 .9-1.2c0-0.6-0.3-1-0.9-1Z" fill="#2d323b"/><path d="M20.4 48.8c-0.6 0-1.2 .5-1.2 1.1c0 .7 .6 1.2 1.2 1.2h12.9c.7 0 1-0.5 1-1.1c0-0.7-0.3-1.2-1-1.2Z" fill="#2d323b"/><path d="M16 46.5c0 4.1 1.3 7.1 3.1 9.7c1.8 2.5 4.1 4.4 6.3 6.2c2.1 1.8 4 3.6 5.4 5.5c1.4 1.9 2.2 4 2.2 7.1h4.7c0-4-1.3-7.1-3.1-9.6c-1.8-2.5-4.1-4.4-6.2-6.2c-2.2-1.8-4.1-3.4-5.5-5.3c-1.3-1.9-2.2-4.3-2.2-7.4Z" fill="#00a8d6"/></g></g></g></symbol></defs><rect width="1007" height="197" stroke="#0f1116" fill="#0f1116" stroke-width="0"/><path fill="#fff" d="M83.3 106.1v-65.7h17c4.2 0 7.9 .8 11 2.4c3.1 1.6 5.5 3.9 7.2 6.9c1.7 2.9 2.6 6.4 2.6 10.4v26.2c0 4-0.9 7.5-2.6 10.5c-1.7 3-4.1 5.3-7.2 6.9c-3.1 1.6-6.8 2.4-11 2.4Zm8.1-7.2h8.9c4 0 7.1-1.1 9.3-3.3c2.3-2.3 3.4-5.3 3.4-9.3v-26.2c0-3.9-1.1-7-3.4-9.2c-2.2-2.2-5.3-3.3-9.3-3.3h-8.9Zm45.3 7.2v-7.4h17.5v-34.7h-15.7v-7.4h23.8v42.1h16.7v7.4Zm20.7-58.4c-2 0-3.6-0.5-4.7-1.5c-1.2-1.1-1.7-2.4-1.7-4.2c0-1.8 .5-3.2 1.7-4.3c1.1-1 2.7-1.5 4.7-1.5c1.9 0 3.5 .5 4.6 1.5c1.2 1.1 1.7 2.5 1.7 4.3c0 1.8-0.5 3.1-1.7 4.2c-1.1 1-2.7 1.5-4.6 1.5Zm52.6 59.1c-6 0-10.7-1.7-14.2-5.1c-3.4-3.4-5.1-8-5.1-13.8v-13.1c0-5.9 1.7-10.5 5.1-13.9c3.5-3.3 8.2-5 14.2-5c6 0 10.7 1.7 14.2 5c3.4 3.4 5.2 8 5.2 13.8v13.2c0 5.8-1.8 10.4-5.2 13.8c-3.5 3.4-8.2 5.1-14.2 5.1Zm0-7.2c3.5 0 6.3-1 8.3-3c2-1.9 3-4.8 3-8.7v-13.1c0-3.9-1-6.8-3-8.8c-2-1.9-4.8-2.9-8.3-2.9c-3.5 0-6.2 1-8.2 2.9c-2 2-3 4.9-3 8.8v13.1c0 3.9 1 6.8 3 8.7c2 2 4.7 3 8.2 3Zm31.5 6.5l17.6-25.5l-16.5-24h9.5l9.8 15.3c.5 .7 .9 1.4 1.2 2.2c.4 .7 .8 1.4 1 1.8c.2-0.4 .5-1.1 .8-1.8c.4-0.8 .8-1.5 1.3-2.2l9.9-15.3h9.4l-16.5 24.1l17.5 25.4h-9.5l-10.7-16.2c-0.4-0.7-0.8-1.4-1.2-2.3c-0.4-0.9-0.7-1.6-1-2.1c-0.2 .5-0.6 1.2-1 2.1c-0.5 .9-1 1.6-1.4 2.3l-10.7 16.2Zm76.4 .9c-5.7 0-10.2-1.7-13.7-5.1c-3.4-3.4-5.1-8-5.1-13.8v-31.5h8.1v31.5c0 3.7 1 6.6 2.9 8.7c1.9 2.1 4.5 3.1 7.8 3.1c3.4 0 6-1 8-3.1c1.9-2.1 2.9-5 2.9-8.7v-31.5h8.1v31.5c0 5.8-1.7 10.4-5.2 13.8c-3.5 3.4-8.1 5.1-13.8 5.1Zm52.6-0.2c-5.1 0-9.3-1.2-12.5-3.5c-3.3-2.3-4.9-5.5-4.9-9.6h8.3c0 1.8 .9 3.3 2.6 4.3c1.8 1.1 4 1.6 6.6 1.6h3.8c3.2 0 5.6-0.6 7.1-1.9c1.6-1.3 2.4-3 2.4-5.2c0-2.1-0.8-3.8-2.2-5c-1.5-1.2-3.6-2-6.4-2.5l-6.6-1c-5-0.9-8.6-2.4-10.9-4.7c-2.4-2.3-3.5-5.5-3.5-9.5c0-4.5 1.4-7.9 4.3-10.3c2.9-2.4 7.1-3.6 12.6-3.6h3.4c5 0 9.1 1.1 12.1 3.4c3 2.2 4.6 5.2 4.6 8.9h-8.3c0-1.6-0.8-2.8-2.3-3.7c-1.5-1-3.6-1.4-6.3-1.4h-3.4c-2.8 0-5 .6-6.5 1.7c-1.5 1.2-2.3 2.9-2.3 5c0 3.6 2.5 5.8 7.6 6.7l6.7 1.1c5.3 .8 9.2 2.4 11.7 4.6c2.4 2.3 3.6 5.6 3.6 9.9c0 4.6-1.5 8.2-4.4 10.8c-2.9 2.6-7.3 3.9-13.2 3.9Z"/><path fill="#fff" d="M91 164c-2 0-3.6-0.6-4.7-1.7c-1.1-1.1-1.6-2.7-1.6-4.6v-15.9h2.7v15.9c0 1.2 .3 2.2 .9 2.8c.6 .7 1.5 1.1 2.7 1.1c1.2 0 2.1-0.4 2.7-1.1c.6-0.7 .9-1.6 .9-2.8v-15.9h2.7v15.9c0 2-0.5 3.5-1.6 4.6c-1.1 1.1-2.6 1.7-4.7 1.7Zm17.5-0.1c-1.7 0-3.1-0.3-4.2-1.1c-1.1-0.8-1.6-1.9-1.6-3.2h2.8c0 .6 .3 1.1 .8 1.4c.6 .4 1.4 .5 2.2 .5h1.3c1.1 0 1.9-0.2 2.4-0.6c.5-0.4 .8-1 .8-1.7c0-0.7-0.3-1.3-0.8-1.7c-0.5-0.4-1.2-0.7-2.1-0.8l-2.2-0.4c-1.7-0.3-2.9-0.8-3.6-1.5c-0.8-0.8-1.2-1.9-1.2-3.2c0-1.5 .5-2.6 1.4-3.4c1-0.8 2.4-1.2 4.2-1.2h1.2c1.6 0 3 .3 4 1.1c1 .7 1.5 1.7 1.5 3h-2.7c0-0.6-0.3-1-0.8-1.3c-0.5-0.3-1.2-0.4-2.1-0.4h-1.1c-1 0-1.7 .2-2.2 .5c-0.5 .4-0.8 1-0.8 1.7c0 1.2 .9 1.9 2.6 2.2l2.2 .4c1.8 .3 3.1 .8 3.9 1.5c.8 .8 1.2 1.9 1.2 3.3c0 1.6-0.5 2.8-1.5 3.6c-0.9 .9-2.4 1.3-4.4 1.3Zm18.5 .1c-1.3 0-2.4-0.3-3.4-0.8c-1-0.5-1.7-1.2-2.3-2.2c-0.5-0.9-0.8-2-0.8-3.3v-4.5c0-1.3 .3-2.4 .8-3.3c.6-1 1.3-1.7 2.3-2.2c1-0.5 2.1-0.8 3.4-0.8c1.3 0 2.4 .3 3.4 .8c1 .5 1.7 1.2 2.3 2.2c.5 .9 .8 2 .8 3.3l-0.1 2.9h-10.2v1.6c0 1.3 .3 2.3 1 3c.6 .7 1.6 1 2.8 1c1 0 1.9-0.2 2.5-0.5c.7-0.4 1-1 1.2-1.7h2.7c-0.2 1.4-0.9 2.5-2 3.3c-1.2 .8-2.7 1.2-4.4 1.2Zm-3.8-9.9h7.6v-0.9c0-1.3-0.3-2.3-1-3c-0.6-0.7-1.6-1-2.8-1c-1.2 0-2.2 .3-2.8 1c-0.7 .7-1 1.7-1 3Zm16.1 9.6v-16.5h2.7v3.2c.1-1.1 .6-2 1.4-2.6c.7-0.6 1.7-0.9 3-0.9c1.7 0 3.1 .5 4.1 1.6c1 1.1 1.5 2.6 1.5 4.5v1.1h-2.7v-0.9c0-1.3-0.3-2.2-0.9-2.9c-0.7-0.7-1.6-1.1-2.8-1.1c-2.4 0-3.6 1.4-3.6 4v10.5Zm35.8 0v-2.5h4.5v-16.9h-4.5v-2.5h11.8l-0.1 2.5h-4.4v16.9h4.4v2.5Zm17.7 0v-16.5h2.7v3.2c.1-1.1 .6-2 1.3-2.6c.8-0.6 1.8-0.9 3.1-0.9c1.6 0 3 .5 3.9 1.5c1 1.1 1.5 2.4 1.5 4.2v11.1h-2.7v-10.8c0-1.2-0.3-2.1-0.9-2.7c-0.7-0.6-1.5-1-2.6-1c-1.1 0-2 .4-2.7 1.1c-0.6 .6-0.9 1.6-0.9 2.9v10.5Zm26 0c-1.4 0-2.4-0.4-3.3-1.2c-0.8-0.8-1.2-1.8-1.2-3.1v-9.7h-4.7v-2.5h4.7v-4.7h2.7v4.7h6.6v2.5h-6.6v9.7c0 .5 .2 1 .5 1.3c.3 .4 .8 .5 1.3 .5h4.5v2.5Zm16.2 .3c-1.3 0-2.4-0.3-3.4-0.8c-1-0.5-1.7-1.2-2.3-2.2c-0.5-0.9-0.7-2-0.7-3.3v-4.5c0-1.3 .2-2.4 .7-3.3c.6-1 1.3-1.7 2.3-2.2c1-0.5 2.1-0.8 3.4-0.8c1.3 0 2.4 .3 3.4 .8c1 .5 1.7 1.2 2.3 2.2c.5 .9 .8 2 .8 3.3l-0.1 2.9h-10.2v1.6c0 1.3 .3 2.3 1 3c.6 .7 1.6 1 2.8 1c1 0 1.9-0.2 2.5-0.5c.7-0.4 1-1 1.2-1.7h2.7c-0.2 1.4-0.9 2.5-2 3.3c-1.2 .8-2.7 1.2-4.4 1.2Zm-3.8-9.9h7.6v-0.9c0-1.3-0.3-2.3-1-3c-0.6-0.7-1.6-1-2.8-1c-1.2 0-2.2 .3-2.8 1c-0.7 .7-1 1.7-1 3Zm16.1 9.6v-16.5h2.7v3.2c.1-1.1 .6-2 1.4-2.6c.7-0.6 1.7-0.9 3-0.9c1.7 0 3.1 .5 4.1 1.6c1 1.1 1.5 2.6 1.5 4.5v1.1h-2.7v-0.9c0-1.3-0.3-2.2-0.9-2.9c-0.7-0.7-1.6-1.1-2.8-1.1c-2.4 0-3.6 1.4-3.6 4v10.5Zm21.3 0v-12.4h-4.8v-2.4h4.8v-2.9c0-1.3 .4-2.3 1.2-3.1c.9-0.7 2-1.1 3.4-1.1h4.9v2.5h-4.9c-1.3 0-1.9 .5-1.9 1.7v2.9h6.8v2.4h-6.8v12.4Zm19 .3c-1.8 0-3.1-0.4-4.1-1.3c-1-0.9-1.5-2.1-1.5-3.6c0-1.6 .5-2.8 1.5-3.7c1-0.9 2.3-1.3 4-1.3h5.1v-1.6c0-1-0.3-1.8-0.9-2.4c-0.6-0.5-1.5-0.8-2.5-0.8c-1 0-1.8 .2-2.5 .6c-0.6 .4-1 1-1.2 1.7h-2.7c.1-1 .4-1.8 1-2.5c.6-0.7 1.3-1.2 2.2-1.6c1-0.4 2-0.6 3.2-0.6c1.9 0 3.4 .5 4.5 1.5c1.1 1 1.6 2.3 1.6 4v11.3h-2.6v-3.1h-0.1c-0.1 1-0.6 1.9-1.5 2.5c-0.9 .6-2.1 .9-3.5 .9Zm.6-2.1c1.3 0 2.4-0.3 3.2-1c.8-0.6 1.2-1.4 1.2-2.4v-2.4h-5c-0.9 0-1.6 .3-2.2 .8c-0.5 .5-0.7 1.1-0.7 2c0 .9 .3 1.6 .9 2.2c.6 .5 1.5 .8 2.6 .8Zm18.9 2.1c-2 0-3.6-0.6-4.8-1.7c-1.2-1.1-1.7-2.6-1.7-4.6v-4.5c0-2 .5-3.5 1.7-4.6c1.2-1.1 2.8-1.7 4.8-1.7c1.9 0 3.5 .5 4.6 1.5c1.2 1 1.8 2.4 1.8 4.2h-2.7c0-1.1-0.4-1.9-1-2.4c-0.7-0.6-1.6-0.9-2.7-0.9c-1.2 0-2.1 .3-2.8 1c-0.7 .7-1.1 1.6-1.1 2.9l.1 4.5c-0.1 1.2 .3 2.2 1 2.9c.7 .7 1.6 1 2.8 1c1.1 0 2-0.3 2.7-0.9c.6-0.6 1-1.4 1-2.4h2.7c0 1.8-0.6 3.2-1.8 4.2c-1.1 1-2.7 1.5-4.6 1.5Zm17.9 0c-1.3 0-2.4-0.3-3.4-0.8c-1-0.5-1.7-1.2-2.3-2.2c-0.5-0.9-0.7-2-0.7-3.3v-4.5c0-1.3 .2-2.4 .7-3.3c.6-1 1.3-1.7 2.3-2.2c1-0.5 2.1-0.8 3.4-0.8c1.3 0 2.4 .3 3.4 .8c1 .5 1.7 1.2 2.3 2.2c.5 .9 .8 2 .8 3.3v2.9h-10.3v1.6c0 1.3 .3 2.3 1 3c.6 .7 1.6 1 2.8 1c1 0 1.9-0.2 2.5-0.5c.7-0.4 1.1-1 1.2-1.7h2.7c-0.2 1.4-0.9 2.5-2 3.3c-1.2 .8-2.7 1.2-4.4 1.2Zm-3.8-9.9h7.6v-0.9c0-1.3-0.3-2.3-1-3c-0.6-0.7-1.6-1-2.8-1c-1.2 0-2.2 .3-2.8 1c-0.7 .7-1 1.7-1 3Zm21.3 9.8c-1.7 0-3.1-0.3-4.2-1.1c-1.1-0.8-1.6-1.9-1.6-3.2h2.8c0 .6 .3 1.1 .8 1.4c.6 .4 1.4 .5 2.3 .5h1.2c1.1 0 1.9-0.2 2.4-0.6c.5-0.4 .8-1 .8-1.7c0-0.7-0.3-1.3-0.8-1.7c-0.5-0.4-1.2-0.7-2.1-0.8l-2.2-0.4c-1.6-0.3-2.9-0.8-3.6-1.5c-0.8-0.8-1.2-1.9-1.2-3.2c0-1.5 .5-2.6 1.4-3.4c1-0.8 2.4-1.2 4.2-1.2h1.2c1.7 0 3 .3 4 1.1c1 .7 1.5 1.7 1.5 3h-2.7c0-0.6-0.3-1-0.8-1.3c-0.5-0.3-1.2-0.4-2.1-0.4h-1.1c-1 0-1.7 .2-2.2 .5c-0.5 .4-0.8 1-0.8 1.7c0 1.2 .9 1.9 2.6 2.2l2.2 .4c1.8 .3 3.1 .8 3.9 1.5c.8 .8 1.2 1.9 1.2 3.3c0 1.6-0.5 2.8-1.5 3.6c-0.9 .9-2.4 1.3-4.3 1.3Zm38.3-0.2c-1.4 0-2.4-0.4-3.3-1.2c-0.8-0.8-1.2-1.8-1.2-3.2v-9.6h-4.6v-2.5h4.6v-4.7h2.7v4.7h6.6v2.5h-6.6v9.6c0 .6 .2 1.1 .5 1.4c.3 .4 .8 .5 1.3 .5h4.5v2.5Zm10 0v-21.9h2.7v8.6c.1-1.2 .6-2 1.3-2.6c.8-0.6 1.8-0.9 3.1-0.9c1.6 0 3 .5 3.9 1.5c1 1.1 1.5 2.4 1.5 4.2v11.1h-2.7v-10.8c0-1.2-0.3-2.1-0.9-2.7c-0.7-0.7-1.5-1-2.6-1c-1.1 0-2 .3-2.7 1c-0.6 .7-0.9 1.7-0.9 3v10.5Zm22.8 .3c-1.8 0-3.1-0.4-4.1-1.3c-1-0.9-1.5-2.1-1.5-3.7c0-1.5 .5-2.7 1.5-3.6c1-0.9 2.3-1.3 4-1.3h5.1v-1.7c0-1-0.3-1.7-0.9-2.3c-0.6-0.6-1.5-0.8-2.5-0.8c-1 0-1.8 .2-2.5 .6c-0.6 .4-1 1-1.2 1.7h-2.7c.1-1 .4-1.8 1-2.5c.6-0.7 1.3-1.2 2.2-1.6c1-0.4 2-0.6 3.2-0.6c1.9 0 3.4 .5 4.5 1.5c1.1 1 1.6 2.3 1.6 4v11.3h-2.6v-3.2h-0.1c-0.1 1.1-0.6 1.9-1.5 2.6c-0.9 .6-2.1 .9-3.5 .9Zm.6-2.1c1.3 0 2.4-0.4 3.2-1c.8-0.6 1.2-1.5 1.2-2.5v-2.3h-5c-0.9 0-1.6 .3-2.2 .8c-0.5 .5-0.7 1.1-0.7 2c0 .9 .3 1.6 .9 2.2c.6 .5 1.5 .8 2.6 .8Zm20.6 1.8c-1.4 0-2.4-0.4-3.3-1.2c-0.8-0.8-1.2-1.8-1.2-3.2v-9.6h-4.6v-2.5h4.6v-4.7h2.7v4.7h6.6v2.5h-6.6v9.6c0 .6 .2 1.1 .5 1.4c.3 .4 .8 .5 1.3 .5h4.5v2.5Zm28.5 0v-16.5h2.7v3.1c.1-1.1 .6-1.9 1.4-2.5c.7-0.6 1.7-0.9 3-0.9c1.7 0 3.1 .5 4.1 1.6c1 1.1 1.5 2.6 1.5 4.5v1.1h-2.7v-0.9c0-1.3-0.3-2.2-0.9-2.9c-0.7-0.7-1.6-1.1-2.8-1.1c-2.4 0-3.6 1.4-3.6 4v10.5Zm23.7 .3c-1.9 0-3.4-0.6-4.6-1.7c-1.1-1.1-1.7-2.7-1.7-4.6v-10.5h2.7v10.5c0 1.2 .3 2.2 1 2.9c.6 .7 1.5 1 2.6 1c1.1 0 2-0.3 2.6-1c.7-0.7 1-1.7 1-2.9v-10.5h2.7v10.5c0 1.9-0.6 3.5-1.7 4.6c-1.2 1.1-2.7 1.7-4.6 1.7Zm11.8-0.3v-16.5h2.7v3.1c.1-1.1 .6-1.9 1.3-2.5c.8-0.6 1.8-0.9 3.1-0.9c1.6 0 2.9 .5 3.9 1.5c1 1 1.5 2.4 1.5 4.2v11.1h-2.7v-10.8c0-1.2-0.3-2.1-0.9-2.7c-0.7-0.6-1.5-1-2.6-1c-1.1 0-2 .4-2.7 1.1c-0.6 .6-0.9 1.6-0.9 2.9v10.5Zm40.8 .3c-1.8 0-3.2-0.4-4.2-1.3c-1-0.9-1.5-2.1-1.5-3.7c0-1.5 .5-2.7 1.5-3.6c1-0.9 2.4-1.3 4.1-1.3h5.1v-1.7c0-1-0.3-1.7-0.9-2.3c-0.6-0.6-1.5-0.8-2.6-0.8c-0.9 0-1.7 .2-2.4 .6c-0.6 .4-1.1 1-1.2 1.6h-2.7c.1-0.9 .4-1.7 1-2.4c.6-0.7 1.3-1.2 2.2-1.6c1-0.4 2-0.6 3.1-0.6c1.9 0 3.4 .5 4.5 1.5c1.1 .9 1.7 2.3 1.7 4v11.3h-2.6v-3.2h-0.1c-0.1 1.1-0.6 1.9-1.5 2.6c-0.9 .6-2.1 .9-3.5 .9Zm.6-2.1c1.3 0 2.3-0.4 3.2-1c.8-0.6 1.2-1.5 1.2-2.5v-2.3h-5c-0.9 0-1.7 .3-2.2 .8c-0.5 .5-0.8 1.1-0.8 2c0 .9 .4 1.6 1 2.2c.6 .5 1.5 .8 2.6 .8Zm12.6 1.8v-16.5h2.7v3.1c.1-1.1 .6-1.9 1.3-2.5c.8-0.6 1.8-0.9 3.1-0.9c1.6 0 2.9 .5 3.9 1.5c1 1 1.5 2.4 1.5 4.2v11.1h-2.7v-10.8c0-1.2-0.3-2.1-0.9-2.7c-0.7-0.6-1.5-1-2.6-1c-1.1 0-2 .4-2.7 1.1c-0.6 .6-0.9 1.6-0.9 2.9v10.5Zm20.6 5.4l2.4-6.4l-6.3-15.5h2.9l4.1 10.2c.1 .3 .2 .7 .4 1.2c.1 .5 .2 .9 .3 1.2c.1-0.3 .2-0.7 .3-1.2c.1-0.5 .3-0.9 .4-1.2l3.8-10.2h2.8l-8.3 21.9Zm16.3-5.4l-2.7-16.5h2.4l1.6 11.7c.1 .4 .2 .9 .2 1.4c.1 .5 .1 1 .1 1.3h.2c0-0.3 0-0.8 .1-1.3c.1-0.5 .1-1 .2-1.4l1.8-11.7h2.7l1.9 11.7c.1 .4 .1 .9 .2 1.4c.1 .5 .1 1 .1 1.3h.2c0-0.3 .1-0.8 .1-1.3c.1-0.5 .2-1 .2-1.4l1.7-11.7h2.2l-2.7 16.5h-3l-1.8-11.4c0-0.6-0.1-1.1-0.2-1.7c-0.1-0.5-0.1-1-0.2-1.3h-0.1c0 .3-0.1 .8-0.1 1.3c-0.1 .6-0.2 1.1-0.3 1.7l-1.8 11.4Zm17.1 0v-21.9h2.7v8.5c.1-1.1 .6-1.9 1.3-2.5c.8-0.6 1.8-0.9 3.1-0.9c1.6 0 2.9 .5 3.9 1.5c1 1 1.5 2.4 1.5 4.2v11.1h-2.7v-10.8c0-1.2-0.3-2.1-0.9-2.7c-0.7-0.7-1.5-1-2.6-1c-1.1 0-2 .3-2.7 1c-0.6 .7-0.9 1.7-0.9 3v10.5Zm24.2 .3c-1.3 0-2.4-0.3-3.4-0.8c-1-0.5-1.7-1.2-2.3-2.2c-0.5-0.9-0.8-2-0.8-3.3v-4.5c0-1.3 .3-2.4 .8-3.3c.6-1 1.3-1.7 2.3-2.2c1-0.5 2.1-0.8 3.4-0.8c1.3 0 2.4 .3 3.4 .8c1 .5 1.7 1.2 2.3 2.2c.5 .9 .7 2 .7 3.3v2.9h-10.2v1.6c0 1.3 .3 2.3 1 3c.6 .7 1.6 1 2.8 1c1 0 1.9-0.2 2.5-0.5c.7-0.4 1-1 1.2-1.7h2.7c-0.2 1.4-0.9 2.5-2 3.3c-1.2 .8-2.7 1.2-4.4 1.2Zm-3.8-9.9h7.6v-0.9c0-1.3-0.3-2.3-1-3c-0.6-0.7-1.6-1.1-2.8-1.1c-1.2 0-2.2 .4-2.8 1.1c-0.7 .7-1 1.7-1 3Zm16.1 9.6v-16.5h2.7v3.1c.1-1.1 .6-1.9 1.3-2.5c.8-0.6 1.8-0.9 3.1-0.9c1.7 0 3.1 .5 4.1 1.6c1 1.1 1.5 2.6 1.5 4.5v1.1h-2.7v-0.9c0-1.3-0.3-2.2-0.9-2.9c-0.7-0.7-1.6-1.1-2.8-1.1c-2.4 0-3.6 1.4-3.6 4v10.5Zm23.7 .3c-1.3 0-2.4-0.3-3.4-0.8c-1-0.5-1.7-1.2-2.3-2.2c-0.5-0.9-0.8-2-0.8-3.3v-4.5c0-1.3 .3-2.4 .8-3.3c.6-1 1.3-1.7 2.3-2.2c1-0.5 2.1-0.8 3.4-0.8c1.3 0 2.4 .3 3.4 .8c1 .5 1.7 1.2 2.3 2.2c.5 .9 .7 2 .7 3.3v2.9h-10.2v1.6c0 1.3 .3 2.3 1 3c.6 .7 1.6 1 2.8 1c1 0 1.9-0.2 2.5-0.5c.7-0.4 1-1 1.2-1.7h2.7c-0.2 1.4-0.9 2.5-2 3.3c-1.2 .8-2.7 1.2-4.4 1.2Zm-3.8-9.9h7.6v-0.9c0-1.3-0.3-2.3-1-3c-0.6-0.7-1.6-1.1-2.8-1.1c-1.2 0-2.2 .4-2.8 1.1c-0.7 .7-1 1.7-1 3Z"/><g transform="translate(764,-14.5) scale(.431111,.440249) translate(-13.9,56.6)"><path fill="#e0e0e0" stroke="#e0e0e0" stroke-linejoin="round" d="M-50.7 4h278.2c10 0 9 0 9 0l41 40c0 0 1 0-9 0h-358c-9.9 0-9 0-9 0l38.8-40c0 0-0.9 0 9 0Z" stroke-width="10" transform="translate(225,339.9) scale(0,1) translate(-89.5,-24)" style="animation: 10s linear infinite both a0_t;"/><rect width="83" height="22" stroke="#fb422d" fill="#e0e0e0" rx="2" stroke-width="0" transform="translate(225,348.9) scale(0,1) translate(-41.5,-11)" style="animation: 10s linear infinite both a1_t;"/><g style="animation: 10s linear infinite both a3_t;"><rect width="400" height="334" stroke="#e0e0e0" fill="none" stroke-width="30" stroke-miterlimit="1" rx="10" opacity="0" transform="translate(225,198.9) rotate(-90) translate(-200,-167)" style="animation: 10s linear infinite both a2_t, 10s linear infinite both a2_o, 10s linear infinite both a2_sw, 10s linear infinite both a2_w, 10s linear infinite both a2_h;"/></g><use width="168.5" height="302" xlink:href="#Symbol-2" opacity="0" transform="translate(227.8,199.9) translate(-84.2,-151)" style="animation: 10s linear infinite both a4_t, 10s linear infinite both a4_w, 10s linear infinite both a4_h;"/><rect width="16" height="8" stroke="#fb422d" fill="#e0e0e0" stroke-width="0" rx="2" opacity="0" transform="translate(225,328.9) translate(-8,-4)" style="animation: 10s linear infinite both a5_t, 10s linear infinite both a5_o, 10s linear infinite both a5_w;"/><rect width="16" height="8" stroke="#fb422d" fill="#e0e0e0" stroke-width="0" rx="2" opacity="0" transform="translate(225,328.9) translate(-8,-4)" style="animation: 10s linear infinite both a6_t, 10s linear infinite both a6_o, 10s linear infinite both a6_w;"/><g transform="translate(225,198.9) scale(1.5,1.5) translate(-42.3,-93)" style="animation: 10s linear infinite both a7_t;"><g transform="translate(42.3,93) scale(5.352,6.9) translate(-16,60)"><g transform="translate(-34.9,-125.8)"><g transform="translate(24,5)"><path d="M33 46.5c0 3.1-0.8 5.5-2.2 7.4c-1.4 1.9-3.3 3.6-5.4 5.4c-2.2 1.7-4.5 3.6-6.3 6.2c-1.8 2.5-3.1 5.5-3.1 9.5h4.7c0-3.1 .9-5.4 2.2-7.3c1.4-1.9 3.3-3.5 5.5-5.3c2.1-1.8 4.4-3.7 6.2-6.2c1.8-2.6 3.1-5.6 3.1-9.7Z" fill="#e96020"/><path d="M20.4 70.7c-0.6 0-1 .5-1 1.1c0 .7 .4 1.2 1 1.2h12.9c.7 0 1.2-0.5 1.2-1.2c0-0.6-0.5-1.1-1.2-1.1Z" fill="#2d323b"/><path d="M21.8 66.6c-0.7 0-1 .6-1 1.2c0 .6 .3 1 .9 1h10.3c.6 0 1.1-0.5 1.1-1.1c0-0.6-0.5-1.1-1.1-1.1Z" fill="#2d323b"/><path d="M21.8 53c-0.7 0-1.2 .5-1.1 1.1c0 .6 .4 1.1 1.1 1.1h10.2c.6 0 .9-0.6 .9-1.2c0-0.6-0.3-1-0.9-1Z" fill="#2d323b"/><path d="M20.4 48.8c-0.6 0-1.2 .5-1.2 1.1c0 .7 .6 1.2 1.2 1.2h12.9c.7 0 1-0.5 1-1.1c0-0.7-0.3-1.2-1-1.2Z" fill="#2d323b"/><path d="M16 46.5c0 4.1 1.3 7.1 3.1 9.7c1.8 2.5 4.1 4.4 6.3 6.2c2.1 1.8 4 3.6 5.4 5.5c1.4 1.9 2.2 4 2.2 7.1h4.7c0-4-1.3-7.1-3.1-9.6c-1.8-2.5-4.1-4.4-6.2-6.2c-2.2-1.8-4.1-3.4-5.5-5.3c-1.3-1.9-2.2-4.3-2.2-7.4Z" fill="#00a8d6"/></g></g></g></g></g></svg>
+8
crates/weaver-server/assets/styling/blog.css
···
··· 1 + #blog { 2 + margin-top: 50px; 3 + } 4 + 5 + #blog a { 6 + color: #ffffff; 7 + margin-top: 50px; 8 + }
+34
crates/weaver-server/assets/styling/echo.css
···
··· 1 + #echo { 2 + width: 360px; 3 + margin-left: auto; 4 + margin-right: auto; 5 + margin-top: 50px; 6 + background-color: #1e222d; 7 + padding: 20px; 8 + border-radius: 10px; 9 + } 10 + 11 + #echo>h4 { 12 + margin: 0px 0px 15px 0px; 13 + } 14 + 15 + 16 + #echo>input { 17 + border: none; 18 + border-bottom: 1px white solid; 19 + background-color: transparent; 20 + color: #ffffff; 21 + transition: border-bottom-color 0.2s ease; 22 + outline: none; 23 + display: block; 24 + padding: 0px 0px 5px 0px; 25 + width: 100%; 26 + } 27 + 28 + #echo>input:focus { 29 + border-bottom-color: #6d85c6; 30 + } 31 + 32 + #echo>p { 33 + margin: 20px 0px 0px auto; 34 + }
+42
crates/weaver-server/assets/styling/main.css
···
··· 1 + body { 2 + background-color: #0f1116; 3 + color: #ffffff; 4 + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; 5 + margin: 20px; 6 + } 7 + 8 + #hero { 9 + margin: 0; 10 + display: flex; 11 + flex-direction: column; 12 + justify-content: center; 13 + align-items: center; 14 + } 15 + 16 + #links { 17 + width: 400px; 18 + text-align: left; 19 + font-size: x-large; 20 + color: white; 21 + display: flex; 22 + flex-direction: column; 23 + } 24 + 25 + #links a { 26 + color: white; 27 + text-decoration: none; 28 + margin-top: 20px; 29 + margin: 10px 0px; 30 + border: white 1px solid; 31 + border-radius: 5px; 32 + padding: 10px; 33 + } 34 + 35 + #links a:hover { 36 + background-color: #1f1f1f; 37 + cursor: pointer; 38 + } 39 + 40 + #header { 41 + max-width: 1200px; 42 + }
+16
crates/weaver-server/assets/styling/navbar.css
···
··· 1 + #navbar { 2 + display: flex; 3 + flex-direction: row; 4 + } 5 + 6 + #navbar a { 7 + color: #ffffff; 8 + margin-right: 20px; 9 + text-decoration: none; 10 + transition: color 0.2s ease; 11 + } 12 + 13 + #navbar a:hover { 14 + cursor: pointer; 15 + color: #91a4d2; 16 + }
+8
crates/weaver-server/clippy.toml
···
··· 1 + await-holding-invalid-types = [ 2 + "generational_box::GenerationalRef", 3 + { path = "generational_box::GenerationalRef", reason = "Reads should not be held over an await point. This will cause any writes to fail while the await is pending since the read borrow is still active." }, 4 + "generational_box::GenerationalRefMut", 5 + { path = "generational_box::GenerationalRefMut", reason = "Write should not be held over an await point. This will cause any reads or writes to fail while the await is pending since the write borrow is still active." }, 6 + "dioxus_signals::Write", 7 + { path = "dioxus_signals::Write", reason = "Write should not be held over an await point. This will cause any reads or writes to fail while the await is pending since the write borrow is still active." }, 8 + ]
+61
crates/weaver-server/src/components/echo.rs
···
··· 1 + use dioxus::prelude::*; 2 + 3 + const ECHO_CSS: Asset = asset!("/assets/styling/echo.css"); 4 + 5 + /// Echo component that demonstrates fullstack server functions. 6 + #[component] 7 + pub fn Echo() -> Element { 8 + // use_signal is a hook. Hooks in dioxus must be run in a consistent order every time the component is rendered. 9 + // That means they can't be run inside other hooks, async blocks, if statements, or loops. 10 + // 11 + // use_signal is a hook that creates a state for the component. It takes a closure that returns the initial value of the state. 12 + // The state is automatically tracked and will rerun any other hooks or components that read it whenever it changes. 13 + let mut response = use_signal(|| String::new()); 14 + 15 + rsx! { 16 + document::Link { rel: "stylesheet", href: ECHO_CSS } 17 + 18 + div { 19 + id: "echo", 20 + h4 { "ServerFn Echo" } 21 + input { 22 + placeholder: "Type here to echo...", 23 + // `oninput` is an event handler that will run when the input changes. It can return either nothing or a future 24 + // that will be run when the event runs. 25 + oninput: move |event| async move { 26 + // When we call the echo_server function from the client, it will fire a request to the server and return 27 + // the response. It handles serialization and deserialization of the request and response for us. 28 + let data = echo_server(event.value()).await.unwrap(); 29 + 30 + // After we have the data from the server, we can set the state of the signal to the new value. 31 + // Since we read the `response` signal later in this component, the component will rerun. 32 + response.set(data); 33 + }, 34 + } 35 + 36 + // Signals can be called like a function to clone the current value of the signal 37 + if !response().is_empty() { 38 + p { 39 + "Server echoed: " 40 + // Since we read the signal inside this component, the component "subscribes" to the signal. Whenever 41 + // the signal changes, the component will rerun. 42 + i { "{response}" } 43 + } 44 + } 45 + } 46 + } 47 + } 48 + 49 + // Server functions let us define public APIs on the server that can be called like a normal async function from the client. 50 + // Each server function needs to be annotated with the `#[server]` attribute, accept and return serializable types, and return 51 + // a `Result` with the error type [`ServerFnError`]. 52 + // 53 + // When the server function is called from the client, it will just serialize the arguments, call the API, and deserialize the 54 + // response. 55 + #[server] 56 + async fn echo_server(input: String) -> Result<String, ServerFnError> { 57 + // The body of server function like this comment are only included on the server. If you have any server-only logic like 58 + // database queries, you can put it here. Any imports for the server function should either be imported inside the function 59 + // or imported under a `#[cfg(feature = "server")]` block. 60 + Ok(input) 61 + }
+25
crates/weaver-server/src/components/hero.rs
···
··· 1 + use dioxus::prelude::*; 2 + 3 + const HEADER_SVG: Asset = asset!("/assets/header.svg"); 4 + 5 + #[component] 6 + pub fn Hero() -> Element { 7 + rsx! { 8 + // We can create elements inside the rsx macro with the element name followed by a block of attributes and children. 9 + div { 10 + // Attributes should be defined in the element before any children 11 + id: "hero", 12 + // After all attributes are defined, we can define child elements and components 13 + img { src: HEADER_SVG, id: "header" } 14 + div { id: "links", 15 + // The RSX macro also supports text nodes surrounded by quotes 16 + a { href: "https://dioxuslabs.com/learn/0.6/", "📚 Learn Dioxus" } 17 + a { href: "https://dioxuslabs.com/awesome", "🚀 Awesome Dioxus" } 18 + a { href: "https://github.com/dioxus-community/", "📡 Community Libraries" } 19 + a { href: "https://github.com/DioxusLabs/sdk", "⚙️ Dioxus Development Kit" } 20 + a { href: "https://marketplace.visualstudio.com/items?itemName=DioxusLabs.dioxus", "💫 VSCode Extension" } 21 + a { href: "https://discord.gg/XgGxMSkvUM", "👋 Community Discord" } 22 + } 23 + } 24 + } 25 + }
+9
crates/weaver-server/src/components/mod.rs
···
··· 1 + //! The components module contains all shared components for our app. Components are the building blocks of dioxus apps. 2 + //! They can be used to defined common UI elements like buttons, forms, and modals. In this template, we define a Hero 3 + //! component and an Echo component for fullstack apps to be used in our app. 4 + 5 + mod hero; 6 + pub use hero::Hero; 7 + 8 + mod echo; 9 + pub use echo::Echo;
-1
crates/weaver-server/src/lib.rs
··· 1 -
···
+60 -10
crates/weaver-server/src/main.rs
··· 1 - //! Weaver server 2 - //! 3 - //! This crate is a lightweight HTTP server which can serve a notebook. 4 - //! It will auto-reload 5 6 - use axum::{Router, response::Html, routing::get}; 7 8 - use tokio::net::TcpListener; 9 10 - #[tokio::main] 11 - async fn main() {} 12 13 - async fn handler() -> Html<&'static str> { 14 - Html("<h1>Hello, World!</h1>") 15 }
··· 1 + // The dioxus prelude contains a ton of common items used in dioxus apps. It's a good idea to import wherever you 2 + // need dioxus 3 + use dioxus::prelude::*; 4 5 + use views::{Blog, Home, Navbar}; 6 7 + /// Define a components module that contains all shared components for our app. 8 + mod components; 9 + /// Define a views module that contains the UI for all Layouts and Routes for our app. 10 + mod views; 11 12 + /// The Route enum is used to define the structure of internal routes in our app. All route enums need to derive 13 + /// the [`Routable`] trait, which provides the necessary methods for the router to work. 14 + /// 15 + /// Each variant represents a different URL pattern that can be matched by the router. If that pattern is matched, 16 + /// the components for that route will be rendered. 17 + #[derive(Debug, Clone, Routable, PartialEq)] 18 + #[rustfmt::skip] 19 + enum Route { 20 + // The layout attribute defines a wrapper for all routes under the layout. Layouts are great for wrapping 21 + // many routes with a common UI like a navbar. 22 + #[layout(Navbar)] 23 + // The route attribute defines the URL pattern that a specific route matches. If that pattern matches the URL, 24 + // the component for that route will be rendered. The component name that is rendered defaults to the variant name. 25 + #[route("/")] 26 + Home {}, 27 + // The route attribute can include dynamic parameters that implement [`std::str::FromStr`] and [`std::fmt::Display`] with the `:` syntax. 28 + // In this case, id will match any integer like `/blog/123` or `/blog/-456`. 29 + #[route("/blog/:id")] 30 + // Fields of the route variant will be passed to the component as props. In this case, the blog component must accept 31 + // an `id` prop of type `i32`. 32 + Blog { id: i32 }, 33 + } 34 35 + // We can import assets in dioxus with the `asset!` macro. This macro takes a path to an asset relative to the crate root. 36 + // The macro returns an `Asset` type that will display as the path to the asset in the browser or a local path in desktop bundles. 37 + const FAVICON: Asset = asset!("/assets/favicon.ico"); 38 + // The asset macro also minifies some assets like CSS and JS to make bundled smaller 39 + const MAIN_CSS: Asset = asset!("/assets/styling/main.css"); 40 + 41 + fn main() { 42 + // The `launch` function is the main entry point for a dioxus app. It takes a component and renders it with the platform feature 43 + // you have enabled 44 + dioxus::launch(App); 45 + } 46 + 47 + /// App is the main component of our app. Components are the building blocks of dioxus apps. Each component is a function 48 + /// that takes some props and returns an Element. In this case, App takes no props because it is the root of our app. 49 + /// 50 + /// Components should be annotated with `#[component]` to support props, better error messages, and autocomplete 51 + #[component] 52 + fn App() -> Element { 53 + // The `rsx!` macro lets us define HTML inside of rust. It expands to an Element with all of our HTML inside. 54 + rsx! { 55 + // In addition to element and text (which we will see later), rsx can contain other components. In this case, 56 + // we are using the `document::Link` component to add a link to our favicon and main CSS file into the head of our app. 57 + document::Link { rel: "icon", href: FAVICON } 58 + document::Link { rel: "stylesheet", href: MAIN_CSS } 59 + 60 + 61 + // The router component renders the route enum we defined above. It will handle synchronization of the URL and render 62 + // the layouts and components for the active route. 63 + Router::<Route> {} 64 + } 65 }
+39
crates/weaver-server/src/views/blog.rs
···
··· 1 + use crate::Route; 2 + use dioxus::prelude::*; 3 + 4 + const BLOG_CSS: Asset = asset!("/assets/styling/blog.css"); 5 + 6 + /// The Blog page component that will be rendered when the current route is `[Route::Blog]` 7 + /// 8 + /// The component takes a `id` prop of type `i32` from the route enum. Whenever the id changes, the component function will be 9 + /// re-run and the rendered HTML will be updated. 10 + #[component] 11 + pub fn Blog(id: i32) -> Element { 12 + rsx! { 13 + document::Link { rel: "stylesheet", href: BLOG_CSS } 14 + 15 + div { 16 + id: "blog", 17 + 18 + // Content 19 + h1 { "This is blog #{id}!" } 20 + p { "In blog #{id}, we show how the Dioxus router works and how URL parameters can be passed as props to our route components." } 21 + 22 + // Navigation links 23 + // The `Link` component lets us link to other routes inside our app. It takes a `to` prop of type `Route` and 24 + // any number of child nodes. 25 + Link { 26 + // The `to` prop is the route that the link should navigate to. We can use the `Route` enum to link to the 27 + // blog page with the id of -1. Since we are using an enum instead of a string, all of the routes will be checked 28 + // at compile time to make sure they are valid. 29 + to: Route::Blog { id: id - 1 }, 30 + "Previous" 31 + } 32 + span { " <---> " } 33 + Link { 34 + to: Route::Blog { id: id + 1 }, 35 + "Next" 36 + } 37 + } 38 + } 39 + }
+11
crates/weaver-server/src/views/home.rs
···
··· 1 + use crate::components::{Echo, Hero}; 2 + use dioxus::prelude::*; 3 + 4 + /// The Home page component that will be rendered when the current route is `[Route::Home]` 5 + #[component] 6 + pub fn Home() -> Element { 7 + rsx! { 8 + Hero {} 9 + Echo {} 10 + } 11 + }
+18
crates/weaver-server/src/views/mod.rs
···
··· 1 + //! The views module contains the components for all Layouts and Routes for our app. Each layout and route in our [`Route`] 2 + //! enum will render one of these components. 3 + //! 4 + //! 5 + //! The [`Home`] and [`Blog`] components will be rendered when the current route is [`Route::Home`] or [`Route::Blog`] respectively. 6 + //! 7 + //! 8 + //! The [`Navbar`] component will be rendered on all pages of our app since every page is under the layout. The layout defines 9 + //! a common wrapper around all child routes. 10 + 11 + mod home; 12 + pub use home::Home; 13 + 14 + mod blog; 15 + pub use blog::Blog; 16 + 17 + mod navbar; 18 + pub use navbar::Navbar;
+32
crates/weaver-server/src/views/navbar.rs
···
··· 1 + use crate::Route; 2 + use dioxus::prelude::*; 3 + 4 + const NAVBAR_CSS: Asset = asset!("/assets/styling/navbar.css"); 5 + 6 + /// The Navbar component that will be rendered on all pages of our app since every page is under the layout. 7 + /// 8 + /// 9 + /// This layout component wraps the UI of [Route::Home] and [Route::Blog] in a common navbar. The contents of the Home and Blog 10 + /// routes will be rendered under the outlet inside this component 11 + #[component] 12 + pub fn Navbar() -> Element { 13 + rsx! { 14 + document::Link { rel: "stylesheet", href: NAVBAR_CSS } 15 + 16 + div { 17 + id: "navbar", 18 + Link { 19 + to: Route::Home {}, 20 + "Home" 21 + } 22 + Link { 23 + to: Route::Blog { id: 1 }, 24 + "Blog" 25 + } 26 + } 27 + 28 + // The `Outlet` component is used to render the next component inside the layout. In this case, it will render either 29 + // the [`Home`] or [`Blog`] component depending on the current route. 30 + Outlet::<Route> {} 31 + } 32 + }
+10 -10
flake.nix
··· 37 toolchain.default.override { 38 # Set the build targets supported by the toolchain, 39 # wasm32-unknown-unknown is required for trunk. 40 - targets = ["wasm32-unknown-unknown" "wasm32-wasip1" "wasm32-wasip2"]; 41 extensions = [ 42 "rust-src" 43 "rust-analyzer" ··· 218 }; 219 220 devShells.default = let 221 - # dioxus-cli = pkgs.dioxus-cli.overrideAttrs (_: { 222 - # postPatch = '' 223 - # rm Cargo.lock 224 - # cp ${./Dioxus.lock} Cargo.lock 225 - # ''; 226 - # cargoDeps = pkgs.rustPlatform.importCargoLock { 227 - # lockFile = ./Dioxus.lock; 228 - # }; 229 - # }); 230 cargoLock = builtins.fromTOML (builtins.readFile ./Cargo.lock); 231 232 wasmBindgen =
··· 37 toolchain.default.override { 38 # Set the build targets supported by the toolchain, 39 # wasm32-unknown-unknown is required for trunk. 40 + targets = ["wasm32-unknown-unknown"]; 41 extensions = [ 42 "rust-src" 43 "rust-analyzer" ··· 218 }; 219 220 devShells.default = let 221 + dioxus-cli = pkgs.dioxus-cli.overrideAttrs (_: { 222 + postPatch = '' 223 + rm Cargo.lock 224 + cp ${./crates/weaver-server/Dioxus.lock} Cargo.lock 225 + ''; 226 + cargoDeps = pkgs.rustPlatform.importCargoLock { 227 + lockFile = ./crates/weaver-server/Dioxus.lock; 228 + }; 229 + }); 230 cargoLock = builtins.fromTOML (builtins.readFile ./Cargo.lock); 231 232 wasmBindgen =