dioxus server

Orual d85fcef4 41e905e3

+3409 -1403
+2928 -105
Cargo.lock
··· 159 159 checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16" 160 160 161 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]] 162 203 name = "async-compression" 163 204 version = "0.4.32" 164 205 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 172 213 ] 173 214 174 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]] 175 234 name = "async-lock" 176 235 version = "3.4.1" 177 236 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 183 242 ] 184 243 185 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]] 186 298 name = "async-trait" 187 299 version = "0.1.89" 188 300 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 194 306 ] 195 307 196 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]] 197 332 name = "atomic-waker" 198 333 version = "1.1.2" 199 334 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 231 366 "http-body-util", 232 367 "hyper", 233 368 "hyper-util", 234 - "itoa", 369 + "itoa 1.0.15", 235 370 "matchit", 236 371 "memchr 2.7.6", 237 372 "mime", ··· 367 502 version = "2.10.0" 368 503 source = "registry+https://github.com/rust-lang/crates.io-index" 369 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" 370 514 371 515 [[package]] 372 516 name = "block-buffer" ··· 375 519 checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 376 520 dependencies = [ 377 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", 378 553 ] 379 554 380 555 [[package]] ··· 504 679 ] 505 680 506 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]] 507 707 name = "cbor4ii" 508 708 version = "0.2.14" 509 709 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 538 738 version = "1.1.0" 539 739 source = "registry+https://github.com/rust-lang/crates.io-index" 540 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 + ] 541 762 542 763 [[package]] 543 764 name = "cfg-if" ··· 685 906 ] 686 907 687 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]] 688 968 name = "colorchoice" 689 969 version = "1.0.4" 690 970 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 749 1029 ] 750 1030 751 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]] 752 1042 name = "const-oid" 753 1043 version = "0.9.6" 754 1044 source = "registry+https://github.com/rust-lang/crates.io-index" 755 1045 checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" 756 1046 757 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]] 758 1069 name = "const-str" 759 1070 version = "0.4.3" 760 1071 source = "registry+https://github.com/rust-lang/crates.io-index" 761 1072 checksum = "2f421161cb492475f1661ddc9815a745a1c894592070661180fdec3d4872e9c3" 762 1073 763 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]] 764 1110 name = "cookie" 765 1111 version = "0.18.1" 766 1112 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 808 1154 checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 809 1155 810 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]] 811 1205 name = "core2" 812 1206 version = "0.4.0" 813 1207 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 897 1291 ] 898 1292 899 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]] 900 1321 name = "curve25519-dalek" 901 1322 version = "4.1.3" 902 1323 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 995 1416 996 1417 [[package]] 997 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" 998 1432 version = "6.1.0" 999 1433 source = "registry+https://github.com/rust-lang/crates.io-index" 1000 1434 checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" ··· 1084 1518 1085 1519 [[package]] 1086 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" 1087 1534 version = "1.0.0" 1088 1535 source = "registry+https://github.com/rust-lang/crates.io-index" 1089 1536 checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" ··· 1119 1566 "byteorder", 1120 1567 "chrono", 1121 1568 "diesel_derives", 1122 - "itoa", 1569 + "itoa 1.0.15", 1123 1570 "libsqlite3-sys", 1124 1571 "pq-sys", 1125 1572 "serde_json", ··· 1187 1634 ] 1188 1635 1189 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]] 1190 2077 name = "dirs" 1191 2078 version = "6.0.0" 1192 2079 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1208 2095 ] 1209 2096 1210 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]] 1211 2114 name = "displaydoc" 1212 2115 version = "0.2.5" 1213 2116 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1219 2122 ] 1220 2123 1221 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]] 1222 2148 name = "dotenvy" 1223 2149 version = "0.15.7" 1224 2150 source = "registry+https://github.com/rust-lang/crates.io-index" 1225 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" 1226 2158 1227 2159 [[package]] 1228 2160 name = "dsl_auto_type" ··· 1239 2171 ] 1240 2172 1241 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]] 1242 2195 name = "dyn-clone" 1243 2196 version = "1.0.20" 1244 2197 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1347 2300 ] 1348 2301 1349 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]] 1350 2309 name = "enum-as-inner" 1351 2310 version = "0.6.1" 1352 2311 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1359 2318 ] 1360 2319 1361 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]] 1362 2363 name = "equivalent" 1363 2364 version = "1.0.2" 1364 2365 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1372 2373 dependencies = [ 1373 2374 "libc", 1374 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", 1375 2386 ] 1376 2387 1377 2388 [[package]] ··· 1419 2430 checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 1420 2431 1421 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]] 1422 2442 name = "ff" 1423 2443 version = "0.13.1" 1424 2444 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1433 2453 version = "0.2.9" 1434 2454 source = "registry+https://github.com/rust-lang/crates.io-index" 1435 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 + ] 1436 2466 1437 2467 [[package]] 1438 2468 name = "filetime" ··· 1496 2526 source = "registry+https://github.com/rust-lang/crates.io-index" 1497 2527 checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 1498 2528 dependencies = [ 1499 - "foreign-types-shared", 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", 1500 2551 ] 1501 2552 1502 2553 [[package]] ··· 1506 2557 checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 1507 2558 1508 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]] 1509 2566 name = "form_urlencoded" 1510 2567 version = "1.2.2" 1511 2568 source = "registry+https://github.com/rust-lang/crates.io-index" 1512 2569 checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" 1513 2570 dependencies = [ 1514 2571 "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 2572 ] 1525 2573 1526 2574 [[package]] ··· 1649 2697 ] 1650 2698 1651 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]] 1652 2818 name = "generator" 1653 2819 version = "0.8.7" 1654 2820 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1659 2825 "libc", 1660 2826 "log", 1661 2827 "rustversion", 1662 - "windows", 2828 + "windows 0.61.3", 1663 2829 ] 1664 2830 1665 2831 [[package]] ··· 1685 2851 1686 2852 [[package]] 1687 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" 1688 2865 version = "0.2.16" 1689 2866 source = "registry+https://github.com/rust-lang/crates.io-index" 1690 2867 checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" ··· 1692 2869 "cfg-if 1.0.4", 1693 2870 "js-sys", 1694 2871 "libc", 1695 - "wasi", 2872 + "wasi 0.11.1+wasi-snapshot-preview1", 1696 2873 "wasm-bindgen", 1697 2874 ] 1698 2875 ··· 1717 2894 checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" 1718 2895 1719 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]] 1720 2993 name = "globset" 1721 2994 version = "0.4.18" 1722 2995 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1730 3003 ] 1731 3004 1732 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]] 1733 3051 name = "group" 1734 3052 version = "0.13.0" 1735 3053 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1741 3059 ] 1742 3060 1743 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]] 1744 3114 name = "gzip-header" 1745 3115 version = "1.0.0" 1746 3116 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1928 3298 1929 3299 [[package]] 1930 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" 1931 3315 version = "0.27.0" 1932 3316 source = "registry+https://github.com/rust-lang/crates.io-index" 1933 3317 checksum = "c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4" 1934 3318 dependencies = [ 1935 3319 "log", 1936 3320 "mac", 1937 - "markup5ever", 3321 + "markup5ever 0.12.1", 1938 3322 "proc-macro2", 1939 3323 "quote", 1940 3324 "syn 2.0.108", ··· 1948 3332 dependencies = [ 1949 3333 "bytes", 1950 3334 "fnv", 1951 - "itoa", 3335 + "itoa 1.0.15", 1952 3336 ] 1953 3337 1954 3338 [[package]] ··· 2007 3391 "http-body", 2008 3392 "httparse", 2009 3393 "httpdate", 2010 - "itoa", 3394 + "itoa 1.0.15", 2011 3395 "pin-project-lite", 2012 3396 "pin-utils", 2013 3397 "smallvec", ··· 2255 3639 ] 2256 3640 2257 3641 [[package]] 2258 - name = "inotify" 3642 + name = "infer" 2259 3643 version = "0.11.0" 2260 3644 source = "registry+https://github.com/rust-lang/crates.io-index" 2261 - checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" 3645 + checksum = "0a6c16b11a665b26aeeb9b1d7f954cdeb034be38dd00adab4f2ae921a8fee804" 2262 3646 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", 3647 + "cfb", 2275 3648 ] 2276 3649 2277 3650 [[package]] ··· 2284 3657 "once_cell", 2285 3658 "serde", 2286 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", 2287 3669 ] 2288 3670 2289 3671 [[package]] ··· 2345 3727 version = "1.70.2" 2346 3728 source = "registry+https://github.com/rust-lang/crates.io-index" 2347 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" 2348 3736 2349 3737 [[package]] 2350 3738 name = "itoa" ··· 2509 3897 source = "git+https://tangled.org/@nonbinary.computer/jacquard#10d719d2a2c459ab562b2be6fecdfe11f52b521c" 2510 3898 dependencies = [ 2511 3899 "cid", 2512 - "dashmap", 3900 + "dashmap 6.1.0", 2513 3901 "heck 0.5.0", 2514 3902 "inventory", 2515 3903 "jacquard-common", ··· 2537 3925 "base64 0.22.1", 2538 3926 "bytes", 2539 3927 "chrono", 2540 - "dashmap", 3928 + "dashmap 6.1.0", 2541 3929 "elliptic-curve", 2542 3930 "http", 2543 3931 "jacquard-common", ··· 2563 3951 ] 2564 3952 2565 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]] 2566 3977 name = "jni" 2567 3978 version = "0.21.1" 2568 3979 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2697 4108 ] 2698 4109 2699 4110 [[package]] 2700 - name = "kqueue" 2701 - version = "1.1.1" 4111 + name = "keyboard-types" 4112 + version = "0.7.0" 2702 4113 source = "registry+https://github.com/rust-lang/crates.io-index" 2703 - checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" 4114 + checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" 2704 4115 dependencies = [ 2705 - "kqueue-sys", 2706 - "libc", 4116 + "bitflags 2.10.0", 4117 + "serde", 4118 + "unicode-segmentation", 2707 4119 ] 2708 4120 2709 4121 [[package]] 2710 - name = "kqueue-sys" 2711 - version = "1.0.4" 4122 + name = "kuchikiki" 4123 + version = "0.8.2" 2712 4124 source = "registry+https://github.com/rust-lang/crates.io-index" 2713 - checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" 4125 + checksum = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8" 2714 4126 dependencies = [ 2715 - "bitflags 1.3.2", 2716 - "libc", 4127 + "cssparser", 4128 + "html5ever 0.26.0", 4129 + "indexmap 1.9.3", 4130 + "matches", 4131 + "selectors", 2717 4132 ] 2718 4133 2719 4134 [[package]] ··· 2726 4141 "static-regular-grammar", 2727 4142 "thiserror 1.0.69", 2728 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" 2729 4150 2730 4151 [[package]] 2731 4152 name = "lazy_static" ··· 2737 4158 ] 2738 4159 2739 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]] 2740 4185 name = "libc" 2741 4186 version = "0.2.177" 2742 4187 source = "registry+https://github.com/rust-lang/crates.io-index" 2743 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 + ] 2744 4199 2745 4200 [[package]] 2746 4201 name = "libm" ··· 2770 4225 ] 2771 4226 2772 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]] 2773 4247 name = "linked-hash-map" 2774 4248 version = "0.5.6" 2775 4249 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2812 4286 checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" 2813 4287 2814 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]] 2815 4295 name = "loom" 2816 4296 version = "0.7.2" 2817 4297 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2855 4335 ] 2856 4336 2857 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]] 2858 4374 name = "markdown-weaver" 2859 4375 version = "0.13.0" 2860 4376 source = "git+https://github.com/rsform/markdown-weaver#46f3eee6c93118da84a5de3d25fef642735aedd2" ··· 2874 4390 2875 4391 [[package]] 2876 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" 2877 4407 version = "0.12.1" 2878 4408 source = "registry+https://github.com/rust-lang/crates.io-index" 2879 4409 checksum = "16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45" 2880 4410 dependencies = [ 2881 4411 "log", 2882 4412 "phf 0.11.3", 2883 - "phf_codegen", 4413 + "phf_codegen 0.11.3", 2884 4414 "string_cache", 2885 4415 "string_cache_codegen", 2886 4416 "tendril", ··· 2892 4422 source = "registry+https://github.com/rust-lang/crates.io-index" 2893 4423 checksum = "edaa21ab3701bfee5099ade5f7e1f84553fd19228cf332f13cd6e964bf59be18" 2894 4424 dependencies = [ 2895 - "html5ever", 2896 - "markup5ever", 4425 + "html5ever 0.27.0", 4426 + "markup5ever 0.12.1", 2897 4427 "tendril", 2898 4428 "xml5ever", 2899 4429 ] ··· 2919 4449 ] 2920 4450 2921 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]] 2922 4458 name = "matchit" 2923 4459 version = "0.8.4" 2924 4460 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2959 4495 checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" 2960 4496 2961 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]] 2962 4507 name = "miette" 2963 4508 version = "5.10.0" 2964 4509 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3091 4636 checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" 3092 4637 dependencies = [ 3093 4638 "libc", 3094 - "log", 3095 - "wasi", 4639 + "wasi 0.11.1+wasi-snapshot-preview1", 3096 4640 "windows-sys 0.61.2", 3097 4641 ] 3098 4642 ··· 3118 4662 ] 3119 4663 3120 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]] 3121 4703 name = "multibase" 3122 4704 version = "0.9.2" 3123 4705 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3165 4747 checksum = "7bb0e5d99e681ab3c938842b96fcb41bf8a7bb4bfdb11ccbd653a7e83e06c794" 3166 4748 dependencies = [ 3167 4749 "cfg_aliases", 3168 - "derive_more", 4750 + "derive_more 1.0.0", 3169 4751 "futures-buffered", 3170 4752 "futures-lite", 3171 4753 "futures-util", ··· 3197 4779 ] 3198 4780 3199 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]] 3200 4797 name = "ndk-context" 3201 4798 version = "0.1.1" 3202 4799 source = "registry+https://github.com/rust-lang/crates.io-index" 3203 4800 checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" 3204 4801 3205 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]] 3206 4812 name = "new_debug_unreachable" 3207 4813 version = "1.0.6" 3208 4814 source = "registry+https://github.com/rust-lang/crates.io-index" 3209 4815 checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" 3210 4816 3211 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]] 3212 4837 name = "nom" 3213 4838 version = "3.2.1" 3214 4839 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3226 4851 "memchr 2.7.6", 3227 4852 "minimal-lexical", 3228 4853 ] 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 4854 3254 4855 [[package]] 3255 4856 name = "nu-ansi-term" ··· 3324 4925 ] 3325 4926 3326 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]] 3327 4950 name = "num_threads" 3328 4951 version = "0.1.7" 3329 4952 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3339 4962 checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 3340 4963 dependencies = [ 3341 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", 3342 5148 ] 3343 5149 3344 5150 [[package]] ··· 3392 5198 dependencies = [ 3393 5199 "bitflags 2.10.0", 3394 5200 "cfg-if 1.0.4", 3395 - "foreign-types", 5201 + "foreign-types 0.3.2", 3396 5202 "libc", 3397 5203 "once_cell", 3398 5204 "openssl-macros", ··· 3444 5250 ] 3445 5251 3446 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]] 3447 5263 name = "ouroboros" 3448 5264 version = "0.18.5" 3449 5265 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3498 5314 ] 3499 5315 3500 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]] 3501 5342 name = "parking" 3502 5343 version = "2.2.1" 3503 5344 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3583 5424 3584 5425 [[package]] 3585 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" 3586 5447 version = "0.11.3" 3587 5448 source = "registry+https://github.com/rust-lang/crates.io-index" 3588 5449 checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" ··· 3602 5463 3603 5464 [[package]] 3604 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" 3605 5486 version = "0.11.3" 3606 5487 source = "registry+https://github.com/rust-lang/crates.io-index" 3607 5488 checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" 3608 5489 dependencies = [ 3609 - "phf_generator", 5490 + "phf_generator 0.11.3", 3610 5491 "phf_shared 0.11.3", 3611 5492 ] 3612 5493 3613 5494 [[package]] 3614 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" 3615 5516 version = "0.11.3" 3616 5517 source = "registry+https://github.com/rust-lang/crates.io-index" 3617 5518 checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" ··· 3621 5522 ] 3622 5523 3623 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]] 3624 5557 name = "phf_shared" 3625 5558 version = "0.11.3" 3626 5559 source = "registry+https://github.com/rust-lang/crates.io-index" 3627 5560 checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" 3628 5561 dependencies = [ 3629 - "siphasher", 5562 + "siphasher 1.0.1", 3630 5563 ] 3631 5564 3632 5565 [[package]] ··· 3635 5568 source = "registry+https://github.com/rust-lang/crates.io-index" 3636 5569 checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" 3637 5570 dependencies = [ 3638 - "siphasher", 5571 + "siphasher 1.0.1", 3639 5572 ] 3640 5573 3641 5574 [[package]] ··· 3669 5602 version = "0.1.0" 3670 5603 source = "registry+https://github.com/rust-lang/crates.io-index" 3671 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 + ] 3672 5616 3673 5617 [[package]] 3674 5618 name = "pkcs1" ··· 3711 5655 ] 3712 5656 3713 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]] 3714 5691 name = "portable-atomic" 3715 5692 version = "1.11.1" 3716 5693 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3806 5783 ] 3807 5784 3808 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]] 3809 5814 name = "proc-macro-error" 3810 5815 version = "1.0.4" 3811 5816 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3830 5835 ] 3831 5836 3832 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]] 3833 5844 name = "proc-macro2" 3834 5845 version = "1.0.103" 3835 5846 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3877 5888 "pin-project-lite", 3878 5889 "quinn-proto", 3879 5890 "quinn-udp", 3880 - "rustc-hash", 5891 + "rustc-hash 2.1.1", 3881 5892 "rustls", 3882 5893 "socket2 0.6.1", 3883 5894 "thiserror 2.0.17", ··· 3897 5908 "lru-slab", 3898 5909 "rand 0.9.2", 3899 5910 "ring", 3900 - "rustc-hash", 5911 + "rustc-hash 2.1.1", 3901 5912 "rustls", 3902 5913 "rustls-pki-types", 3903 5914 "slab", ··· 3938 5949 3939 5950 [[package]] 3940 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" 3941 5966 version = "0.8.5" 3942 5967 source = "registry+https://github.com/rust-lang/crates.io-index" 3943 5968 checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" ··· 3955 5980 dependencies = [ 3956 5981 "rand_chacha 0.9.0", 3957 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", 3958 5993 ] 3959 5994 3960 5995 [[package]] ··· 3979 6014 3980 6015 [[package]] 3981 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" 3982 6026 version = "0.6.4" 3983 6027 source = "registry+https://github.com/rust-lang/crates.io-index" 3984 6028 checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" ··· 3996 6040 ] 3997 6041 3998 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]] 3999 6061 name = "range-traits" 4000 6062 version = "0.3.2" 4001 6063 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4006 6068 version = "0.5.2" 4007 6069 source = "registry+https://github.com/rust-lang/crates.io-index" 4008 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" 4009 6077 4010 6078 [[package]] 4011 6079 name = "redox_syscall" ··· 4105 6173 "js-sys", 4106 6174 "log", 4107 6175 "mime", 6176 + "mime_guess", 4108 6177 "native-tls", 4109 6178 "percent-encoding", 4110 6179 "pin-project-lite", ··· 4147 6216 ] 4148 6217 4149 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]] 4150 6242 name = "ring" 4151 6243 version = "0.17.14" 4152 6244 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4209 6301 version = "0.1.26" 4210 6302 source = "registry+https://github.com/rust-lang/crates.io-index" 4211 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" 4212 6310 4213 6311 [[package]] 4214 6312 name = "rustc-hash" ··· 4434 6532 ] 4435 6533 4436 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]] 4437 6555 name = "semver" 4438 6556 version = "1.0.27" 4439 6557 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4444 6562 version = "0.6.0" 4445 6563 source = "registry+https://github.com/rust-lang/crates.io-index" 4446 6564 checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" 6565 + dependencies = [ 6566 + "futures-core", 6567 + ] 4447 6568 4448 6569 [[package]] 4449 6570 name = "serde" ··· 4466 6587 ] 4467 6588 4468 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]] 4469 6601 name = "serde_bytes" 4470 6602 version = "0.11.19" 4471 6603 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4513 6645 dependencies = [ 4514 6646 "form_urlencoded", 4515 6647 "indexmap 2.12.0", 4516 - "itoa", 6648 + "itoa 1.0.15", 4517 6649 "ryu", 4518 6650 "serde_core", 4519 6651 ] ··· 4537 6669 checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" 4538 6670 dependencies = [ 4539 6671 "indexmap 2.12.0", 4540 - "itoa", 6672 + "itoa 1.0.15", 4541 6673 "memchr 2.7.6", 4542 6674 "ryu", 4543 6675 "serde", ··· 4550 6682 source = "registry+https://github.com/rust-lang/crates.io-index" 4551 6683 checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" 4552 6684 dependencies = [ 4553 - "itoa", 6685 + "itoa 1.0.15", 4554 6686 "serde", 4555 6687 "serde_core", 4556 6688 ] 4557 6689 4558 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]] 4559 6702 name = "serde_repr" 4560 6703 version = "0.1.20" 4561 6704 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4591 6734 checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 4592 6735 dependencies = [ 4593 6736 "form_urlencoded", 4594 - "itoa", 6737 + "itoa 1.0.15", 4595 6738 "ryu", 4596 6739 "serde", 4597 6740 ] ··· 4638 6781 ] 4639 6782 4640 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]] 4641 6847 name = "sha1" 4642 6848 version = "0.10.6" 4643 6849 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4679 6885 version = "1.3.0" 4680 6886 source = "registry+https://github.com/rust-lang/crates.io-index" 4681 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 + ] 4682 6898 4683 6899 [[package]] 4684 6900 name = "signal-hook-registry" ··· 4713 6929 4714 6930 [[package]] 4715 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" 4716 6938 version = "1.0.1" 4717 6939 source = "registry+https://github.com/rust-lang/crates.io-index" 4718 6940 checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" ··· 4724 6946 checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" 4725 6947 4726 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]] 4727 6988 name = "smallvec" 4728 6989 version = "1.15.1" 4729 6990 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4760 7021 ] 4761 7022 4762 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]] 4763 7050 name = "spin" 4764 7051 version = "0.9.8" 4765 7052 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4832 7119 source = "registry+https://github.com/rust-lang/crates.io-index" 4833 7120 checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" 4834 7121 dependencies = [ 4835 - "phf_generator", 7122 + "phf_generator 0.11.3", 4836 7123 "phf_shared 0.11.3", 4837 7124 "proc-macro2", 4838 7125 "quote", ··· 4974 7261 ] 4975 7262 4976 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]] 4977 7277 name = "tabwriter" 4978 7278 version = "1.4.1" 4979 7279 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4989 7289 checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" 4990 7290 4991 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]] 4992 7349 name = "tempfile" 4993 7350 version = "3.23.0" 4994 7351 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5042 7399 ] 5043 7400 5044 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]] 5045 7408 name = "thiserror" 5046 7409 version = "1.0.69" 5047 7410 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5106 7469 checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" 5107 7470 dependencies = [ 5108 7471 "deranged", 5109 - "itoa", 7472 + "itoa 1.0.15", 5110 7473 "libc", 5111 7474 "num-conv", 5112 7475 "num_threads", ··· 5183 7546 "signal-hook-registry", 5184 7547 "socket2 0.6.1", 5185 7548 "tokio-macros", 7549 + "tracing", 5186 7550 "windows-sys 0.61.2", 5187 7551 ] 5188 7552 ··· 5256 7620 "rustls-pki-types", 5257 7621 "tokio", 5258 7622 "tokio-rustls", 5259 - "tungstenite", 7623 + "tungstenite 0.24.0", 5260 7624 ] 5261 7625 5262 7626 [[package]] ··· 5302 7666 "serde", 5303 7667 "serde_spanned 0.6.9", 5304 7668 "toml_datetime 0.6.11", 5305 - "toml_edit", 7669 + "toml_edit 0.22.27", 5306 7670 ] 5307 7671 5308 7672 [[package]] ··· 5317 7681 "toml_datetime 0.7.3", 5318 7682 "toml_parser", 5319 7683 "toml_writer", 5320 - "winnow", 7684 + "winnow 0.7.13", 5321 7685 ] 5322 7686 5323 7687 [[package]] ··· 5340 7704 5341 7705 [[package]] 5342 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" 5343 7729 version = "0.22.27" 5344 7730 source = "registry+https://github.com/rust-lang/crates.io-index" 5345 7731 checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" ··· 5349 7735 "serde_spanned 0.6.9", 5350 7736 "toml_datetime 0.6.11", 5351 7737 "toml_write", 5352 - "winnow", 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", 5353 7751 ] 5354 7752 5355 7753 [[package]] ··· 5358 7756 source = "registry+https://github.com/rust-lang/crates.io-index" 5359 7757 checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" 5360 7758 dependencies = [ 5361 - "winnow", 7759 + "winnow 0.7.13", 5362 7760 ] 5363 7761 5364 7762 [[package]] ··· 5535 7933 ] 5536 7934 5537 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]] 5538 7947 name = "trait-variant" 5539 7948 version = "0.1.2" 5540 7949 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5546 7955 ] 5547 7956 5548 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]] 5549 7979 name = "tree_magic" 5550 7980 version = "0.2.3" 5551 7981 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5571 8001 5572 8002 [[package]] 5573 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" 5574 8022 version = "0.24.0" 5575 8023 source = "registry+https://github.com/rust-lang/crates.io-index" 5576 8024 checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" ··· 5603 8051 version = "1.19.0" 5604 8052 source = "registry+https://github.com/rust-lang/crates.io-index" 5605 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 + ] 5606 8065 5607 8066 [[package]] 5608 8067 name = "unicase" ··· 5746 8205 checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" 5747 8206 5748 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]] 5749 8214 name = "version_check" 5750 8215 version = "0.9.5" 5751 8216 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5771 8236 ] 5772 8237 5773 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]] 5774 8267 name = "wasi" 5775 8268 version = "0.11.1+wasi-snapshot-preview1" 5776 8269 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5885 8378 "axum", 5886 8379 "chrono", 5887 8380 "clap 4.5.51", 5888 - "dashmap", 8381 + "dashmap 6.1.0", 5889 8382 "diesel", 5890 8383 "diesel-async", 5891 8384 "diesel_migrations", ··· 5976 8469 "async-trait", 5977 8470 "bitflags 2.10.0", 5978 8471 "compact_string", 5979 - "dashmap", 8472 + "dashmap 6.1.0", 5980 8473 "dynosaur", 5981 8474 "http", 5982 8475 "ignore", ··· 6006 8499 name = "weaver-server" 6007 8500 version = "0.1.0" 6008 8501 dependencies = [ 6009 - "axum", 6010 - "clap 4.5.51", 8502 + "dioxus", 6011 8503 "jacquard", 6012 - "jacquard-axum", 6013 - "notify", 6014 - "tokio", 6015 8504 "weaver-common", 6016 8505 "weaver-workspace-hack", 6017 8506 ] ··· 6068 8557 "tracing", 6069 8558 "tracing-core", 6070 8559 "uuid", 6071 - "winnow", 8560 + "winnow 0.7.13", 6072 8561 "zerocopy", 6073 8562 "zeroize", 6074 8563 ] ··· 6105 8594 "log", 6106 8595 "ndk-context", 6107 8596 "objc", 6108 - "raw-window-handle", 8597 + "raw-window-handle 0.5.2", 6109 8598 "url", 6110 8599 "web-sys", 6111 8600 ] 6112 8601 6113 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]] 6114 8647 name = "webpage" 6115 8648 version = "2.0.1" 6116 8649 source = "registry+https://github.com/rust-lang/crates.io-index" 6117 8650 checksum = "70862efc041d46e6bbaa82bb9c34ae0596d090e86cbd14bd9e93b36ee6802eac" 6118 8651 dependencies = [ 6119 - "html5ever", 8652 + "html5ever 0.27.0", 6120 8653 "markup5ever_rcdom", 6121 8654 "serde_json", 6122 8655 "url", ··· 6132 8665 ] 6133 8666 6134 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]] 6135 8704 name = "whoami" 6136 8705 version = "1.6.1" 6137 8706 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6181 8750 6182 8751 [[package]] 6183 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" 6184 8763 version = "0.61.3" 6185 8764 source = "registry+https://github.com/rust-lang/crates.io-index" 6186 8765 checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" ··· 6203 8782 6204 8783 [[package]] 6205 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" 6206 8798 version = "0.61.2" 6207 8799 source = "registry+https://github.com/rust-lang/crates.io-index" 6208 8800 checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" 6209 8801 dependencies = [ 6210 - "windows-implement", 6211 - "windows-interface", 8802 + "windows-implement 0.60.2", 8803 + "windows-interface 0.59.3", 6212 8804 "windows-link 0.1.3", 6213 8805 "windows-result 0.3.4", 6214 8806 "windows-strings 0.4.2", ··· 6220 8812 source = "registry+https://github.com/rust-lang/crates.io-index" 6221 8813 checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" 6222 8814 dependencies = [ 6223 - "windows-implement", 6224 - "windows-interface", 8815 + "windows-implement 0.60.2", 8816 + "windows-interface 0.59.3", 6225 8817 "windows-link 0.2.1", 6226 8818 "windows-result 0.4.1", 6227 8819 "windows-strings 0.5.1", ··· 6240 8832 6241 8833 [[package]] 6242 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" 6243 8846 version = "0.60.2" 6244 8847 source = "registry+https://github.com/rust-lang/crates.io-index" 6245 8848 checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" ··· 6251 8854 6252 8855 [[package]] 6253 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" 6254 8868 version = "0.59.3" 6255 8869 source = "registry+https://github.com/rust-lang/crates.io-index" 6256 8870 checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" ··· 6295 8909 6296 8910 [[package]] 6297 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" 6298 8921 version = "0.3.4" 6299 8922 source = "registry+https://github.com/rust-lang/crates.io-index" 6300 8923 checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" ··· 6309 8932 checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" 6310 8933 dependencies = [ 6311 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", 6312 8945 ] 6313 8946 6314 8947 [[package]] ··· 6456 9089 ] 6457 9090 6458 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]] 6459 9101 name = "windows_aarch64_gnullvm" 6460 9102 version = "0.42.2" 6461 9103 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6637 9279 6638 9280 [[package]] 6639 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" 6640 9291 version = "0.7.13" 6641 9292 source = "registry+https://github.com/rust-lang/crates.io-index" 6642 9293 checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" ··· 6667 9318 checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" 6668 9319 6669 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]] 6670 9392 name = "xml5ever" 6671 9393 version = "0.18.1" 6672 9394 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6674 9396 dependencies = [ 6675 9397 "log", 6676 9398 "mac", 6677 - "markup5ever", 9399 + "markup5ever 0.12.1", 6678 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" 6679 9407 6680 9408 [[package]] 6681 9409 name = "yaml-rust" ··· 6727 9455 ] 6728 9456 6729 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]] 6730 9515 name = "zerocopy" 6731 9516 version = "0.8.27" 6732 9517 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6848 9633 "cc", 6849 9634 "pkg-config", 6850 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 4 # paths because the flake.nix is written in a way such that top-level members 5 5 # (`weaver-cli` and `weaver-server`) are built as different derivations which avoid being 6 6 # rebuilt if the other package's sources change. 7 - members = ["crates/*"] 7 + members = ["crates/*", "crates/weaver-server"] 8 8 9 9 #default-members = ["crates/weaver-cli"] 10 10 ··· 43 43 jacquard-api = { git = "https://tangled.org/@nonbinary.computer/jacquard" } 44 44 jacquard-axum = { git = "https://tangled.org/@nonbinary.computer/jacquard" } 45 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 1 [package] 2 2 name = "weaver-server" 3 - version.workspace = true 4 - edition.workspace = true 5 - license.workspace = true 6 - publish = false 3 + version = "0.1.0" 4 + authors = ["Orual <orual@nonbinary.computer>"] 5 + edition = "2021" 7 6 8 - [[bin]] 9 - name = "weaver-server" 10 - path = "src/main.rs" 11 - 12 - [lib] 13 - name = "weaver_server" 14 - path = "src/lib.rs" 7 + # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 15 8 16 9 [dependencies] 10 + dioxus = { version = "0.6.0", features = ["router", "fullstack"] } 17 11 weaver-common = { path = "../weaver-common" } 18 12 weaver-workspace-hack = { version = "0.1", path = "../weaver-workspace-hack" } 19 13 20 14 jacquard = { workspace = true, features = ["tracing"] } 21 - jacquard-axum = { workspace = true } 22 15 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"] } 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 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::*; 5 4 6 - use axum::{Router, response::Html, routing::get}; 5 + use views::{Blog, Home, Navbar}; 7 6 8 - use tokio::net::TcpListener; 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; 9 11 10 - #[tokio::main] 11 - async fn main() {} 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 + } 12 34 13 - async fn handler() -> Html<&'static str> { 14 - Html("<h1>Hello, World!</h1>") 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 + } 15 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 37 toolchain.default.override { 38 38 # Set the build targets supported by the toolchain, 39 39 # wasm32-unknown-unknown is required for trunk. 40 - targets = ["wasm32-unknown-unknown" "wasm32-wasip1" "wasm32-wasip2"]; 40 + targets = ["wasm32-unknown-unknown"]; 41 41 extensions = [ 42 42 "rust-src" 43 43 "rust-analyzer" ··· 218 218 }; 219 219 220 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 - # }); 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 230 cargoLock = builtins.fromTOML (builtins.readFile ./Cargo.lock); 231 231 232 232 wasmBindgen =