[[package]]
name = "autocfg"
-version = "0.1.7"
+version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2"
+checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78"
+dependencies = [
+ "autocfg 1.1.0",
+]
[[package]]
name = "autocfg"
-version = "1.0.1"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "az"
-version = "1.1.2"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d6dff4a1892b54d70af377bf7a17064192e822865791d812957f21e3108c325"
+checksum = "f771a5d1f5503f7f4279a30f3643d3421ba149848b89ecaaec0ea2acf04a5ac4"
[[package]]
name = "base64"
[[package]]
name = "bitflags"
-version = "1.2.1"
+version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "blake2"
[[package]]
name = "bumpalo"
-version = "3.8.0"
+version = "3.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6c"
+checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899"
[[package]]
name = "byte-tools"
[[package]]
name = "cc"
-version = "1.0.72"
+version = "1.0.73"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee"
+checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
[[package]]
name = "cfg-if"
[[package]]
name = "clipboard-win"
-version = "4.2.2"
+version = "4.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3db8340083d28acb43451166543b98c838299b7e0863621be53a338adceea0ed"
+checksum = "2f3e1238132dc01f081e1cbb9dace14e5ef4c3a51ee244bd982275fb514605db"
dependencies = [
"error-code",
"str-buf",
[[package]]
name = "core-foundation"
-version = "0.9.2"
+version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6888e10551bb93e424d8df1d07f1a8b4fceb0001a3a4b048bfc47554946f47b3"
+checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
dependencies = [
"core-foundation-sys",
"libc",
"lazy_static",
"libc",
"mio",
- "parking_lot",
+ "parking_lot 0.10.2",
"signal-hook",
"winapi 0.3.9",
]
[[package]]
name = "ed25519"
-version = "1.2.0"
+version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4620d40f6d2601794401d6dd95a5cf69b6c157852539470eeda433a99b3c0efc"
+checksum = "eed12bbf7b5312f8da1c2722bc06d8c6b12c2d86a7fb35a194c7f3e6fc2bbe39"
dependencies = [
"signature",
]
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"
+[[package]]
+name = "errno"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"
+dependencies = [
+ "errno-dragonfly",
+ "libc",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "errno-dragonfly"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+dependencies = [
+ "cc",
+ "libc",
+]
+
[[package]]
name = "error-code"
-version = "2.3.0"
+version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5115567ac25674e0043e472be13d14e537f37ea8aa4bdc4aef0c89add1db1ff"
+checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21"
dependencies = [
"libc",
"str-buf",
]
+[[package]]
+name = "fastrand"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf"
+dependencies = [
+ "instant",
+]
+
[[package]]
name = "fd-lock"
-version = "3.0.1"
+version = "3.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cfc110fe50727d46a428eed832df40affe9bf74d077cac1bf3f2718e823f14c5"
+checksum = "02ecad9808e0596f8956d14f7fa868f996290bd01c8d7329d6e5bc2bb76adf8f"
dependencies = [
"cfg-if 1.0.0",
- "libc",
+ "rustix",
"windows-sys",
]
[[package]]
name = "futf"
-version = "0.1.4"
+version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c9c1ce3fa9336301af935ab852c437817d14cd33690446569392e65170aac3b"
+checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843"
dependencies = [
"mac",
"new_debug_unreachable",
[[package]]
name = "getrandom"
-version = "0.2.3"
+version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753"
+checksum = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77"
dependencies = [
"cfg-if 1.0.0",
"libc",
checksum = "fe69f1cbdb6e28af2bac214e943b99ce8a0a06b447d15d3e61161b0423139f3f"
dependencies = [
"proc-macro-hack",
- "proc-macro2 1.0.32",
- "quote 1.0.10",
- "syn 1.0.81",
+ "proc-macro2 1.0.36",
+ "quote 1.0.15",
+ "syn 1.0.88",
]
[[package]]
[[package]]
name = "indexmap"
-version = "1.7.0"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5"
+checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223"
dependencies = [
- "autocfg 1.0.1",
+ "autocfg 1.1.0",
"hashbrown",
]
[[package]]
-name = "instructions-template"
-version = "0.1.0"
+name = "instant"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
dependencies = [
- "indexmap",
- "proc-macro2 1.0.32",
- "quote 1.0.10",
- "strum",
- "strum_macros",
- "syn 1.0.81",
- "to-syn-value",
- "to-syn-value_derive",
+ "cfg-if 1.0.0",
]
+[[package]]
+name = "io-lifetimes"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec58677acfea8a15352d42fc87d11d63596ade9239e0a7c9352914417515dbe6"
+
[[package]]
name = "iovec"
version = "0.1.4"
[[package]]
name = "itertools"
-version = "0.10.1"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf"
+checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"
dependencies = [
"either",
]
[[package]]
name = "itoa"
-version = "0.4.8"
+version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
+checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
[[package]]
name = "js-sys"
-version = "0.3.55"
+version = "0.3.56"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84"
+checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04"
dependencies = [
"wasm-bindgen",
]
[[package]]
name = "libc"
-version = "0.2.107"
+version = "0.2.120"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbe5e23404da5b4f555ef85ebed98fb4083e55a00c317800bc2a50ede9f3d219"
+checksum = "ad5c14e80759d0939d013e6ca49930e59fc53dd8e5009132f76240c179380c09"
[[package]]
name = "libsodium-sys"
"walkdir",
]
+[[package]]
+name = "linux-raw-sys"
+version = "0.0.42"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5284f00d480e1c39af34e72f8ad60b94f47007e3481cd3b731c1d67190ddc7b7"
+
[[package]]
name = "lock_api"
version = "0.3.4"
"scopeguard",
]
+[[package]]
+name = "lock_api"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b"
+dependencies = [
+ "scopeguard",
+]
+
[[package]]
name = "log"
version = "0.4.14"
[[package]]
name = "memoffset"
-version = "0.6.4"
+version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9"
+checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
dependencies = [
- "autocfg 1.0.1",
+ "autocfg 1.1.0",
]
[[package]]
version = "0.11.2"
source = "git+https://github.com/mthom/modular-bitfield#213535c684af277563678179d8496f11b84a283f"
dependencies = [
- "proc-macro2 1.0.32",
- "quote 1.0.10",
- "syn 1.0.81",
+ "proc-macro2 1.0.36",
+ "quote 1.0.15",
+ "syn 1.0.88",
]
[[package]]
[[package]]
name = "nix"
-version = "0.22.2"
+version = "0.23.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3bb9a13fa32bc5aeb64150cd3f32d6cf4c748f8f8a417cce5d2eb976a8370ba"
+checksum = "9f866317acbd3a240710c63f065ffb1e4fd466259045ccb504130b7f668f35c6"
dependencies = [
"bitflags",
"cc",
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304"
dependencies = [
- "autocfg 1.0.1",
+ "autocfg 1.1.0",
"num-integer",
"num-traits",
]
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db"
dependencies = [
- "autocfg 1.0.1",
+ "autocfg 1.1.0",
"num-traits",
]
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef"
dependencies = [
- "autocfg 1.0.1",
+ "autocfg 1.1.0",
"num-bigint",
"num-integer",
"num-traits",
[[package]]
name = "num-rug-adapter"
-version = "0.1.5"
+version = "0.1.6"
+source = "git+https://github.com/mthom/num-rug-adapter#58ec611ca8ac4d6ebf41e41f588f472e51a23e60"
dependencies = [
"libc",
"num-bigint",
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
dependencies = [
- "autocfg 1.0.1",
+ "autocfg 1.1.0",
]
[[package]]
name = "once_cell"
-version = "1.8.0"
+version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56"
+checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9"
[[package]]
name = "opaque-debug"
[[package]]
name = "openssl-probe"
-version = "0.1.4"
+version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a"
+checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]]
name = "openssl-src"
-version = "300.0.2+3.0.0"
+version = "111.17.0+1.1.1m"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14a760a11390b1a5daf72074d4f6ff1a6e772534ae191f999f57e9ee8146d1fb"
+checksum = "05d6a336abd10814198f66e2a91ccd7336611f30334119ca8ce300536666fcf4"
dependencies = [
"cc",
]
[[package]]
name = "openssl-sys"
-version = "0.9.70"
+version = "0.9.72"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6517987b3f8226b5da3661dad65ff7f300cc59fb5ea8333ca191fc65fde3edf"
+checksum = "7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb"
dependencies = [
- "autocfg 1.0.1",
+ "autocfg 1.1.0",
"cc",
"libc",
"openssl-src",
[[package]]
name = "ordered-float"
-version = "2.8.0"
+version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97c9d06878b3a851e8026ef94bf7fef9ba93062cd412601da4d9cf369b1cc62d"
+checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87"
dependencies = [
"num-traits",
]
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e"
dependencies = [
- "lock_api",
- "parking_lot_core",
+ "lock_api 0.3.4",
+ "parking_lot_core 0.7.2",
+]
+
+[[package]]
+name = "parking_lot"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
+dependencies = [
+ "instant",
+ "lock_api 0.4.6",
+ "parking_lot_core 0.8.5",
]
[[package]]
"winapi 0.3.9",
]
+[[package]]
+name = "parking_lot_core"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216"
+dependencies = [
+ "cfg-if 1.0.0",
+ "instant",
+ "libc",
+ "redox_syscall 0.2.11",
+ "smallvec",
+ "winapi 0.3.9",
+]
+
[[package]]
name = "phf"
version = "0.7.24"
checksum = "d43f3220d96e0080cc9ea234978ccd80d904eafb17be31bb0f76daaea6493082"
dependencies = [
"phf_shared 0.9.0",
- "rand 0.8.4",
+ "rand 0.8.5",
]
[[package]]
"phf_generator 0.9.1",
"phf_shared 0.9.0",
"proc-macro-hack",
- "proc-macro2 1.0.32",
- "quote 1.0.10",
- "syn 1.0.81",
+ "proc-macro2 1.0.36",
+ "quote 1.0.15",
+ "syn 1.0.88",
]
[[package]]
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a68318426de33640f02be62b4ae8eb1261be2efbc337b60c54d845bf4484e0d9"
dependencies = [
- "siphasher 0.3.7",
+ "siphasher 0.3.10",
]
[[package]]
name = "pkg-config"
-version = "0.3.22"
+version = "0.3.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12295df4f294471248581bc09bef3c38a5e46f1e36d6a37353621a0c6c357e1f"
+checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe"
[[package]]
name = "ppv-lite86"
-version = "0.2.15"
+version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535ba"
+checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
[[package]]
name = "precomputed-hash"
[[package]]
name = "predicates"
-version = "2.0.3"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c6ce811d0b2e103743eec01db1c50612221f173084ce2f7941053e94b6bb474"
+checksum = "a5aab5be6e4732b473071984b3164dbbfb7a3674d30ea5ff44410b6bcd960c3c"
dependencies = [
"difflib",
"itertools",
[[package]]
name = "predicates-core"
-version = "1.0.2"
+version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57e35a3326b75e49aa85f5dc6ec15b41108cf5aee58eabb1f274dd18b73c2451"
+checksum = "da1c2388b1513e1b605fcec39a95e0a9e8ef088f71443ef37099fa9ae6673fcb"
[[package]]
name = "predicates-tree"
-version = "1.0.4"
+version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "338c7be2905b732ae3984a2f40032b5e94fd8f52505b186c7d4d68d193445df7"
+checksum = "4d86de6de25020a36c6d3643a86d9a6a9f552107c0559c60ea03551b5e16c032"
dependencies = [
"predicates-core",
"termtree",
[[package]]
name = "proc-macro2"
-version = "1.0.32"
+version = "1.0.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba508cc11742c0dc5c1659771673afbab7a0efab23aa17e854cbab0837ed0b43"
+checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029"
dependencies = [
"unicode-xid 0.2.2",
]
[[package]]
name = "quote"
-version = "1.0.10"
+version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05"
+checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145"
dependencies = [
- "proc-macro2 1.0.32",
+ "proc-macro2 1.0.36",
]
[[package]]
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
dependencies = [
- "autocfg 0.1.7",
+ "autocfg 0.1.8",
"libc",
"rand_chacha 0.1.1",
"rand_core 0.4.2",
- "rand_hc 0.1.0",
+ "rand_hc",
"rand_isaac",
"rand_jitter",
"rand_os",
[[package]]
name = "rand"
-version = "0.8.4"
+version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"libc",
"rand_chacha 0.3.1",
"rand_core 0.6.3",
- "rand_hc 0.3.1",
]
[[package]]
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
dependencies = [
- "autocfg 0.1.7",
+ "autocfg 0.1.8",
"rand_core 0.3.1",
]
"rand_core 0.3.1",
]
-[[package]]
-name = "rand_hc"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7"
-dependencies = [
- "rand_core 0.6.3",
-]
-
[[package]]
name = "rand_isaac"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
dependencies = [
- "autocfg 0.1.7",
+ "autocfg 0.1.8",
"rand_core 0.4.2",
]
[[package]]
name = "redox_syscall"
-version = "0.2.10"
+version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff"
+checksum = "8380fe0152551244f0747b1bf41737e0f8a74f97a14ccefd1148187271634f3c"
dependencies = [
"bitflags",
]
checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64"
dependencies = [
"getrandom",
- "redox_syscall 0.2.10",
+ "redox_syscall 0.2.11",
]
[[package]]
"libc",
]
+[[package]]
+name = "rustix"
+version = "0.33.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef7ec6a44fba95d21fa522760c03c16ca5ee95cebb6e4ef579cab3e6d7ba6c06"
+dependencies = [
+ "bitflags",
+ "errno",
+ "io-lifetimes",
+ "libc",
+ "linux-raw-sys",
+ "winapi 0.3.9",
+]
+
[[package]]
name = "rustversion"
version = "1.0.6"
[[package]]
name = "rustyline"
-version = "9.0.0"
+version = "9.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "790487c3881a63489ae77126f57048b42d62d3b2bafbf37453ea19eedb6340d6"
+checksum = "db7826789c0e25614b03e5a54a0717a86f9ff6e6e5247f92b369472869320039"
dependencies = [
"bitflags",
"cfg-if 1.0.0",
"libc",
"log",
"memchr",
- "nix 0.22.2",
+ "nix 0.23.1",
"radix_trie",
"scopeguard",
"smallvec",
[[package]]
name = "ryu"
-version = "1.0.5"
+version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
+checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f"
[[package]]
name = "same-file"
"git-version",
"hostname",
"indexmap",
- "instructions-template",
"lazy_static",
"lexical",
"libc",
"ordered-float",
"phf 0.9.0",
"predicates-core",
- "proc-macro2 1.0.32",
+ "proc-macro2 1.0.36",
+ "quote 1.0.15",
"ref_thread_local",
"ring",
"ripemd160",
"slice-deque",
"smallvec",
"sodiumoxide",
- "static-string-indexing",
"static_assertions",
+ "strum",
+ "strum_macros",
+ "syn 1.0.88",
+ "to-syn-value",
+ "to-syn-value_derive",
+ "walkdir",
]
[[package]]
name = "security-framework"
-version = "2.3.1"
+version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23a2ac85147a3a11d77ecf1bc7166ec0b92febfa4461c37944e180f319ece467"
+checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc"
dependencies = [
"bitflags",
"core-foundation",
[[package]]
name = "security-framework-sys"
-version = "2.4.2"
+version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9dd14d83160b528b7bfd66439110573efcfbe281b17fc2ca9f39f550d619c7e"
+checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556"
dependencies = [
"core-foundation-sys",
"libc",
[[package]]
name = "serde"
-version = "1.0.130"
+version = "1.0.136"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913"
+checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789"
[[package]]
name = "serde_derive"
-version = "1.0.130"
+version = "1.0.136"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b"
+checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9"
dependencies = [
- "proc-macro2 1.0.32",
- "quote 1.0.10",
- "syn 1.0.81",
+ "proc-macro2 1.0.36",
+ "quote 1.0.15",
+ "syn 1.0.88",
]
[[package]]
name = "serde_json"
-version = "1.0.70"
+version = "1.0.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e277c495ac6cd1a01a58d0a0c574568b4d1ddf14f59965c6a58b8d96400b54f3"
+checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95"
dependencies = [
"itoa",
"ryu",
checksum = "e0bccbcf40c8938196944a3da0e133e031a33f4d6b72db3bda3cc556e361905d"
dependencies = [
"lazy_static",
- "parking_lot",
+ "parking_lot 0.11.2",
"serial_test_derive",
]
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b2acd6defeddb41eb60bb468f8825d0cfd0c2a76bc03bfd235b6a1dc4f6a1ad5"
dependencies = [
- "proc-macro2 1.0.32",
- "quote 1.0.10",
- "syn 1.0.81",
+ "proc-macro2 1.0.36",
+ "quote 1.0.15",
+ "syn 1.0.88",
]
[[package]]
[[package]]
name = "signature"
-version = "1.4.0"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02658e48d89f2bec991f9a78e69cfa4c316f8d6a6c4ec12fae1aeb263d486788"
+checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4"
[[package]]
name = "siphasher"
[[package]]
name = "siphasher"
-version = "0.3.7"
+version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "533494a8f9b724d33625ab53c6c4800f7cc445895924a8ef649222dcb76e938b"
+checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
[[package]]
name = "slab"
[[package]]
name = "smallvec"
-version = "1.7.0"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309"
+checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83"
[[package]]
name = "sodiumoxide"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
-[[package]]
-name = "static-string-indexing"
-version = "0.1.0"
-dependencies = [
- "indexmap",
- "proc-macro2 1.0.32",
- "quote 1.0.10",
- "syn 1.0.81",
- "walkdir",
-]
-
[[package]]
name = "static_assertions"
version = "1.1.0"
dependencies = [
"phf_generator 0.7.24",
"phf_shared 0.7.24",
- "proc-macro2 1.0.32",
- "quote 1.0.10",
+ "proc-macro2 1.0.36",
+ "quote 1.0.15",
"string_cache_shared",
]
checksum = "5bb0dc7ee9c15cea6199cde9a127fa16a4c5819af85395457ad72d68edc85a38"
dependencies = [
"heck",
- "proc-macro2 1.0.32",
- "quote 1.0.10",
+ "proc-macro2 1.0.36",
+ "quote 1.0.15",
"rustversion",
- "syn 1.0.81",
+ "syn 1.0.88",
]
[[package]]
[[package]]
name = "syn"
-version = "1.0.81"
+version = "1.0.88"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2afee18b8beb5a596ecb4a2dce128c719b4ba399d34126b9e4396e3f9860966"
+checksum = "ebd69e719f31e88618baa1eaa6ee2de5c9a1c004f1e9ecdb58e8352a13f20a01"
dependencies = [
- "proc-macro2 1.0.32",
- "quote 1.0.10",
+ "proc-macro2 1.0.36",
+ "quote 1.0.15",
"unicode-xid 0.2.2",
]
[[package]]
name = "tempfile"
-version = "3.2.0"
+version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22"
+checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
dependencies = [
"cfg-if 1.0.0",
+ "fastrand",
"libc",
- "rand 0.8.4",
- "redox_syscall 0.2.10",
+ "redox_syscall 0.2.11",
"remove_dir_all",
"winapi 0.3.9",
]
[[package]]
name = "termtree"
-version = "0.2.3"
+version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16"
+checksum = "507e9898683b6c43a9aa55b64259b721b52ba226e0f3779137e50ad114a4c90b"
[[package]]
name = "time"
[[package]]
name = "to-syn-value"
version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "45dcb7b4108a4793bdd74aa3714296c6eaf43663edf73fa8625d0d7621e68447"
dependencies = [
- "syn 1.0.81",
+ "syn 1.0.88",
"to-syn-value_derive",
]
[[package]]
name = "to-syn-value_derive"
version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd4fdec6de01b568c1d3721c9d46a352623c536cd55a8a5acfefb63d1fccccbc"
dependencies = [
- "proc-macro2 1.0.32",
- "quote 1.0.10",
- "syn 1.0.81",
+ "proc-macro2 1.0.36",
+ "quote 1.0.15",
+ "syn 1.0.88",
]
[[package]]
name = "typenum"
-version = "1.14.0"
+version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b63708a265f51345575b27fe43f9500ad611579e764c79edbc2037b1121959ec"
+checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
[[package]]
name = "unicode-segmentation"
-version = "1.8.0"
+version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b"
+checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99"
[[package]]
name = "unicode-width"
[[package]]
name = "wasm-bindgen"
-version = "0.2.78"
+version = "0.2.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce"
+checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06"
dependencies = [
"cfg-if 1.0.0",
"wasm-bindgen-macro",
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.78"
+version = "0.2.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837b"
+checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca"
dependencies = [
"bumpalo",
"lazy_static",
"log",
- "proc-macro2 1.0.32",
- "quote 1.0.10",
- "syn 1.0.81",
+ "proc-macro2 1.0.36",
+ "quote 1.0.15",
+ "syn 1.0.88",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.78"
+version = "0.2.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9"
+checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01"
dependencies = [
- "quote 1.0.10",
+ "quote 1.0.15",
"wasm-bindgen-macro-support",
]
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.78"
+version = "0.2.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab"
+checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc"
dependencies = [
- "proc-macro2 1.0.32",
- "quote 1.0.10",
- "syn 1.0.81",
+ "proc-macro2 1.0.36",
+ "quote 1.0.15",
+ "syn 1.0.88",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.78"
+version = "0.2.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc"
+checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2"
[[package]]
name = "web-sys"
-version = "0.3.55"
+version = "0.3.56"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb"
+checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb"
dependencies = [
"js-sys",
"wasm-bindgen",
[[package]]
name = "windows-sys"
-version = "0.28.0"
+version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "82ca39602d5cbfa692c4b67e3bcbb2751477355141c1ed434c94da4186836ff6"
+checksum = "030b7ff91626e57a05ca64a07c481973cbb2db774e4852c9c7ca342408c6a99a"
dependencies = [
"windows_aarch64_msvc",
"windows_i686_gnu",
[[package]]
name = "windows_aarch64_msvc"
-version = "0.28.0"
+version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "52695a41e536859d5308cc613b4a022261a274390b25bd29dfff4bf08505f3c2"
+checksum = "29277a4435d642f775f63c7d1faeb927adba532886ce0287bd985bffb16b6bca"
[[package]]
name = "windows_i686_gnu"
-version = "0.28.0"
+version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f54725ac23affef038fecb177de6c9bf065787c2f432f79e3c373da92f3e1d8a"
+checksum = "1145e1989da93956c68d1864f32fb97c8f561a8f89a5125f6a2b7ea75524e4b8"
[[package]]
name = "windows_i686_msvc"
-version = "0.28.0"
+version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51d5158a43cc43623c0729d1ad6647e62fa384a3d135fd15108d37c683461f64"
+checksum = "d4a09e3a0d4753b73019db171c1339cd4362c8c44baf1bcea336235e955954a6"
[[package]]
name = "windows_x86_64_gnu"
-version = "0.28.0"
+version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc31f409f565611535130cfe7ee8e6655d3fa99c1c61013981e491921b5ce954"
+checksum = "8ca64fcb0220d58db4c119e050e7af03c69e6f4f415ef69ec1773d9aab422d5a"
[[package]]
name = "windows_x86_64_msvc"
-version = "0.28.0"
+version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f2b8c7cbd3bfdddd9ab98769f9746a7fad1bca236554cd032b78d768bc0e89f"
+checksum = "08cabc9f0066848fef4bc6a1c1668e6efce38b661d2aeec75d18d8617eebb5f1"
[[package]]
name = "ws2_32-sys"
license = "BSD-3-Clause"
keywords = ["prolog", "prolog-interpreter", "prolog-system"]
categories = ["command-line-utilities"]
-build = "build.rs"
+build = "build/main.rs"
rust-version = "1.57"
-[workspace]
-members = ["crates/num-rug-adapter",
- "crates/static-string-indexing",
- "crates/instructions-template",
- "crates/to-syn-value",
- "crates/to-syn-value_derive"]
-
[features]
num = ["num-rug-adapter"]
# no default features to make num tests work
[build-dependencies]
indexmap = "1.0.2"
-static-string-indexing = { path = "./crates/static-string-indexing" }
-instructions-template = { path = "./crates/instructions-template" }
-proc-macro2 = "*"
+proc-macro2 = "1.0.36"
+quote = "1.0.15"
+strum = "0.23"
+strum_macros = "0.23"
+syn = { version = "1.0.88", features = ['full', 'visit', 'extra-traits'] }
+to-syn-value = "0.1.0"
+to-syn-value_derive = "0.1.0"
+walkdir = "2"
[dependencies]
cpu-time = "1.0.0"
lazy_static = "1.4.0"
lexical = "5.2.2"
libc = "0.2.62"
-modular-bitfield = { git = "https://github.com/mthom/modular-bitfield" } # modular-bitfield = "0.11.2"
+modular-bitfield = "0.11.2"
nix = "0.15.0"
-num-rug-adapter = { optional = true, path = "./crates/num-rug-adapter" }
+num-rug-adapter = { version = "0.1.6", optional = true }
ordered-float = "2.1.1"
phf = { version = "0.9", features = ["macros"] }
ref_thread_local = "0.0.0"
select = "0.4.3"
roxmltree = "0.11.0"
base64 = "0.12.3"
-smallvec = "*"
+smallvec = "1.8.0"
sodiumoxide = "0.2.6"
static_assertions = "1.1.0"
slice-deque = "0.3.0"
predicates-core = "1.0.2"
serial_test = "0.5.1"
+[patch.crates-io]
+modular-bitfield = { git = "https://github.com/mthom/modular-bitfield" }
+num-rug-adapter = { git = "https://github.com/mthom/num-rug-adapter" }
+
[profile.release]
debug = true
+
# Scryer Prolog
Scryer Prolog aims to become to ISO Prolog what GHC is to Haskell: an open
+mod static_string_indexing;
+mod instructions_template;
+
use static_string_indexing::index_static_strings;
use instructions_template::generate_instructions_rs;
+++ /dev/null
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-version = 3
-
-[[package]]
-name = "autocfg"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
-
-[[package]]
-name = "hashbrown"
-version = "0.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
-
-[[package]]
-name = "heck"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
-dependencies = [
- "unicode-segmentation",
-]
-
-[[package]]
-name = "indexmap"
-version = "1.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5"
-dependencies = [
- "autocfg",
- "hashbrown",
-]
-
-[[package]]
-name = "instructions-template"
-version = "0.1.0"
-dependencies = [
- "indexmap",
- "proc-macro2",
- "quote",
- "strum",
- "strum_macros",
- "syn",
-]
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.35"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "392a54546fda6b7cc663379d0e6ce8b324cf88aecc5a499838e1be9781bdce2e"
-dependencies = [
- "unicode-xid",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05"
-dependencies = [
- "proc-macro2",
-]
-
-[[package]]
-name = "rustversion"
-version = "1.0.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f"
-
-[[package]]
-name = "strum"
-version = "0.23.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cae14b91c7d11c9a851d3fbc80a963198998c2a64eec840477fa92d8ce9b70bb"
-
-[[package]]
-name = "strum_macros"
-version = "0.23.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5bb0dc7ee9c15cea6199cde9a127fa16a4c5819af85395457ad72d68edc85a38"
-dependencies = [
- "heck",
- "proc-macro2",
- "quote",
- "rustversion",
- "syn",
-]
-
-[[package]]
-name = "syn"
-version = "1.0.84"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ecb2e6da8ee5eb9a61068762a32fa9619cc591ceb055b3687f4cd4051ec2e06b"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-xid",
-]
-
-[[package]]
-name = "to-syn-value"
-version = "0.1.0"
-dependencies = [
- "syn",
- "to-syn-value_derive",
-]
-
-[[package]]
-name = "to-syn-value_derive"
-version = "0.1.0"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "unicode-segmentation"
-version = "1.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b"
-
-[[package]]
-name = "unicode-xid"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
+++ /dev/null
-[package]
-name = "instructions-template"
-version = "0.1.0"
-edition = "2021"
-
-[dependencies]
-indexmap = "*"
-proc-macro2 = "*"
-quote = "*"
-strum = "0.23"
-strum_macros = "0.23"
-syn = { version = "*", features = ['full', 'visit', 'extra-traits'] }
-to-syn-value = { path = "../to-syn-value" }
-to-syn-value_derive = { path = "../to-syn-value_derive" }
\ No newline at end of file
+++ /dev/null
-[package]
-name = "num-rug-adapter"
-version = "0.1.5"
-edition = "2021"
-description = "An adapter to use num crate where rug is needed."
-license = "MIT/Apache-2.0"
-repository = "https://github.com/malbarbo/num-rug-adapter"
-keywords = ["mathematics", "numerics", "bignum"]
-categories = ["api-bindings", "science"]
-readme = "README.md"
-
-[dependencies]
-libc = "0.2"
-num-bigint = "0.2"
-num-integer = "0.1.41"
-num-rational = "0.2"
-num-traits = "0.2"
+++ /dev/null
-use num_bigint::{BigInt, ParseBigIntError};
-use num_integer::Integer as _;
-use num_rational::BigRational;
-use num_traits::{FromPrimitive, Num, Signed, ToPrimitive};
-use num_traits::identities::One;
-
-use std::cmp::Ordering;
-use std::fmt::{self, Display, Formatter};
-use std::ops::*;
-
-use std::str::FromStr;
-
-#[derive(Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
-pub struct Integer(BigInt);
-
-impl Integer {
- #[inline]
- pub fn new() -> Self {
- Integer(BigInt::default())
- }
-
- #[inline]
- pub fn from_str_radix(s: &str, radix: u32) -> Result<Self, ParseBigIntError> {
- BigInt::from_str_radix(s, radix).map(Integer)
- }
-
- #[inline]
- pub fn to_u8(&self) -> Option<u8> {
- self.0.to_u8()
- }
-
- #[inline]
- pub fn to_u32(&self) -> Option<u32> {
- self.0.to_u32()
- }
-
- #[inline]
- pub fn to_u64(&self) -> Option<u64> {
- self.0.to_u64()
- }
-
- #[inline]
- pub fn to_usize(&self) -> Option<usize> {
- self.0.to_usize()
- }
-
- #[inline]
- pub fn to_i32(&self) -> Option<i32> {
- self.0.to_i32()
- }
-
- #[inline]
- pub fn to_isize(&self) -> Option<isize> {
- self.0.to_isize()
- }
-
- #[inline]
- pub fn to_f64(&self) -> f64 {
- self.0.to_f64().unwrap()
- }
-
- #[inline]
- pub fn abs(&self) -> Self {
- Integer(self.0.abs())
- }
-
- #[inline]
- pub fn abs_ref(&self) -> Self {
- Integer(self.0.abs())
- }
-
- #[inline]
- pub fn div_rem(&self, other: Self) -> (Self, Self) {
- let (a, b) = num_integer::Integer::div_rem(&self.0, &other.0);
- (Integer(a), Integer(b))
- }
-
- #[inline]
- pub fn div_rem_ref(&self, other: &Self) -> (Self, Self) {
- let (a, b) = num_integer::Integer::div_rem(&self.0, &other.0);
- (Integer(a), Integer(b))
- }
-
- #[inline]
- pub fn div_rem_floor(&self, other: Self) -> (Self, Self) {
- let (a, b) = num_integer::Integer::div_mod_floor(&self.0, &other.0);
- (Integer(a), Integer(b))
- }
-
- #[inline]
- pub fn div_rem_floor_ref(&self, other: &Self) -> (Self, Self) {
- let (a, b) = num_integer::Integer::div_mod_floor(&self.0, &other.0);
- (Integer(a), Integer(b))
- }
-
- #[inline]
- pub fn mod_u(&self, modulo: u32) -> u32 {
- (self.0.abs() % modulo).to_u32().unwrap()
- }
-
- #[inline]
- pub fn is_odd(&self) -> bool {
- num_integer::Integer::is_odd(&self.0)
- }
-
- #[inline]
- pub fn from_f64(v: f64) -> Option<Self> {
- BigInt::from_f64(v).map(Integer)
- }
-
- #[inline]
- pub fn gcd_ref(&self, other: &Self) -> Self {
- Integer(num_integer::Integer::gcd(&self.0, &other.0))
- }
-
- #[inline]
- pub fn gcd(&self, other: &Self) -> Self {
- Integer(num_integer::Integer::gcd(&self.0, &other.0))
- }
-
- #[inline]
- pub fn count_ones(&self) -> Option<u32> {
- Some(self.0.to_u32_digits().1.iter().map(|&d| d.count_ones()).sum())
- }
-}
-
-impl From<&Integer> for Integer {
- #[inline]
- fn from(s: &Integer) -> Self {
- s.clone()
- }
-}
-
-impl From<i32> for Integer {
- #[inline]
- fn from(s: i32) -> Self {
- Integer(BigInt::from(s))
- }
-}
-
-impl From<isize> for Integer {
- #[inline]
- fn from(s: isize) -> Self {
- Integer(BigInt::from(s))
- }
-}
-
-impl From<u8> for Integer {
- #[inline]
- fn from(s: u8) -> Self {
- Integer(BigInt::from(s))
- }
-}
-
-impl From<u32> for Integer {
- #[inline]
- fn from(s: u32) -> Self {
- Integer(BigInt::from(s))
- }
-}
-
-impl From<u64> for Integer {
- #[inline]
- fn from(s: u64) -> Self {
- Integer(BigInt::from(s))
- }
-}
-
-impl From<usize> for Integer {
- #[inline]
- fn from(s: usize) -> Self {
- Integer(BigInt::from(s))
- }
-}
-
-impl Mul for Integer {
- type Output = Integer;
-
- #[inline]
- fn mul(self, other: Integer) -> Self::Output {
- Integer(self.0 * other.0)
- }
-}
-
-impl Mul<u32> for Integer {
- type Output = Integer;
-
- #[inline]
- fn mul(self, other: u32) -> Self::Output {
- Integer(self.0 * other)
- }
-}
-
-impl Mul<&Integer> for Integer {
- type Output = Integer;
-
- fn mul(self, other: &Integer) -> Self::Output {
- Integer(self.0 * &other.0)
- }
-}
-
-impl MulAssign<&Integer> for Integer {
- #[inline]
- fn mul_assign(&mut self, other: &Integer) {
- self.0 *= &other.0;
- }
-}
-
-impl Add for Integer {
- type Output = Integer;
-
- #[inline]
- fn add(self, other: Integer) -> Self::Output {
- Integer(self.0 + other.0)
- }
-}
-
-impl Add<Integer> for &Integer {
- type Output = Integer;
-
- #[inline]
- fn add(self, other: Integer) -> Self::Output {
- Integer(&self.0 + other.0)
- }
-}
-
-impl Add<&Integer> for Integer {
- type Output = Integer;
-
- #[inline]
- fn add(self, other: &Integer) -> Self::Output {
- Integer(self.0 + &other.0)
- }
-}
-
-impl Add<&Integer> for &Integer {
- type Output = Integer;
-
- #[inline]
- fn add(self, other: &Integer) -> Self::Output {
- Integer(&self.0 + &other.0)
- }
-}
-
-impl AddAssign<i64> for Integer {
- #[inline]
- fn add_assign(&mut self, other: i64) {
- self.0 += other;
- }
-}
-
-impl AddAssign<&Integer> for Integer {
- #[inline]
- fn add_assign(&mut self, other: &Integer) {
- self.0 += &other.0;
- }
-}
-
-impl Div for Integer {
- type Output = Integer;
-
- #[inline]
- fn div(self, other: Integer) -> Integer {
- Integer(self.0 / other.0)
- }
-}
-
-impl Div<&Integer> for Integer {
- type Output = Integer;
-
- #[inline]
- fn div(self, other: &Integer) -> Integer {
- Integer(self.0 / &other.0)
- }
-}
-
-impl Div<Integer> for &Integer {
- type Output = Integer;
-
- #[inline]
- fn div(self, other: Integer) -> Integer {
- Integer(&self.0 / &other.0)
- }
-}
-
-impl Shr<u32> for Integer {
- type Output = Integer;
-
- #[inline]
- fn shr(self, rhs: u32) -> Self::Output {
- Integer(self.0 >> rhs as usize)
- }
-}
-
-impl Shr<u32> for &Integer {
- type Output = Integer;
-
- #[inline]
- fn shr(self, rhs: u32) -> Self::Output {
- Integer(&self.0 >> rhs as usize)
- }
-}
-
-impl ShrAssign<u32> for Integer {
- #[inline]
- fn shr_assign(&mut self, rhs: u32) {
- self.0 >>= rhs as usize;
- }
-}
-
-impl Shl<u32> for Integer {
- type Output = Integer;
-
- #[inline]
- fn shl(self, rhs: u32) -> Self::Output {
- Integer(self.0 << rhs as usize)
- }
-}
-
-impl Shl<u32> for &Integer {
- type Output = Integer;
-
- #[inline]
- fn shl(self, rhs: u32) -> Self::Output {
- Integer(&self.0 << rhs as usize)
- }
-}
-
-impl Not for Integer {
- type Output = Integer;
-
- #[inline]
- fn not(self) -> Self::Output {
- Integer(!self.0)
- }
-}
-
-impl Not for &Integer {
- type Output = Integer;
-
- #[inline]
- fn not(self) -> Self::Output {
- Integer(!&self.0)
- }
-}
-
-impl Rem for Integer {
- type Output = Integer;
-
- #[inline]
- fn rem(self, other: Integer) -> Self::Output {
- Integer(self.0.mod_floor(&other.0))
- }
-}
-
-impl Rem<&Integer> for Integer {
- type Output = Integer;
-
- #[inline]
- fn rem(self, other: &Integer) -> Self::Output {
- Integer(self.0.mod_floor(&other.0))
- }
-}
-
-impl Rem<&Integer> for &Integer {
- type Output = Integer;
-
- #[inline]
- fn rem(self, other: &Integer) -> Self::Output {
- Integer(self.0.mod_floor(&other.0))
- }
-}
-
-impl Rem<Integer> for &Integer {
- type Output = Integer;
-
- #[inline]
- fn rem(self, other: Integer) -> Self::Output {
- Integer(self.0.mod_floor(&other.0))
- }
-}
-
-impl BitAnd for Integer {
- type Output = Integer;
-
- #[inline]
- fn bitand(self, other: Integer) -> Self::Output {
- Integer(self.0 & &other.0)
- }
-}
-
-impl BitAnd<&Integer> for Integer {
- type Output = Integer;
-
- #[inline]
- fn bitand(self, other: &Integer) -> Self::Output {
- Integer(self.0 & &other.0)
- }
-}
-
-impl BitAnd<Integer> for &Integer {
- type Output = Integer;
-
- #[inline]
- fn bitand(self, other: Integer) -> Self::Output {
- Integer(&self.0 & other.0)
- }
-}
-
-impl BitAnd for &Integer {
- type Output = Integer;
-
- #[inline]
- fn bitand(self, other: &Integer) -> Self::Output {
- Integer(&self.0 & &other.0)
- }
-}
-
-impl BitOr for Integer {
- type Output = Integer;
-
- #[inline]
- fn bitor(self, other: Integer) -> Self::Output {
- Integer(self.0 | other.0)
- }
-}
-
-impl BitOr<&Integer> for Integer {
- type Output = Integer;
-
- #[inline]
- fn bitor(self, other: &Integer) -> Self::Output {
- Integer(self.0 | &other.0)
- }
-}
-
-impl BitOr<Integer> for &Integer {
- type Output = Integer;
-
- #[inline]
- fn bitor(self, other: Integer) -> Self::Output {
- Integer(&self.0 | other.0)
- }
-}
-
-impl BitOr for &Integer {
- type Output = Integer;
-
- #[inline]
- fn bitor(self, other: &Integer) -> Self::Output {
- Integer(&self.0 | &other.0)
- }
-}
-
-impl BitXor for Integer {
- type Output = Integer;
-
- #[inline]
- fn bitxor(self, other: Integer) -> Self::Output {
- Integer(self.0 ^ other.0)
- }
-}
-
-impl BitXor<&Integer> for Integer {
- type Output = Integer;
-
- #[inline]
- fn bitxor(self, other: &Integer) -> Self::Output {
- Integer(self.0 ^ &other.0)
- }
-}
-
-impl BitXor<Integer> for &Integer {
- type Output = Integer;
-
- #[inline]
- fn bitxor(self, other: Integer) -> Self::Output {
- Integer(&self.0 ^ other.0)
- }
-}
-
-impl BitXor<&Integer> for &Integer {
- type Output = Integer;
-
- #[inline]
- fn bitxor(self, other: &Integer) -> Self::Output {
- Integer(&self.0 ^ &other.0)
- }
-}
-
-impl PartialEq<i32> for Integer {
- #[inline]
- fn eq(&self, other: &i32) -> bool {
- self.0 == BigInt::from(*other)
- }
-}
-
-impl PartialEq<i64> for Integer {
- #[inline]
- fn eq(&self, other: &i64) -> bool {
- self.0 == BigInt::from(*other)
- }
-}
-
-impl PartialEq<isize> for Integer {
- #[inline]
- fn eq(&self, other: &isize) -> bool {
- self.0 == BigInt::from(*other)
- }
-}
-
-impl PartialEq<usize> for Integer {
- #[inline]
- fn eq(&self, other: &usize) -> bool {
- self.0 == BigInt::from(*other)
- }
-}
-
-impl PartialEq<Integer> for isize {
- #[inline]
- fn eq(&self, other: &Integer) -> bool {
- other.0 == BigInt::from(*self)
- }
-}
-
-impl PartialOrd<i32> for Integer {
- #[inline]
- fn partial_cmp(&self, other: &i32) -> Option<Ordering> {
- self.0.partial_cmp(&BigInt::from(*other))
- }
-}
-
-impl PartialOrd<i64> for Integer {
- #[inline]
- fn partial_cmp(&self, other: &i64) -> Option<Ordering> {
- self.0.partial_cmp(&BigInt::from(*other))
- }
-}
-
-impl PartialOrd<isize> for Integer {
- #[inline]
- fn partial_cmp(&self, other: &isize) -> Option<Ordering> {
- self.0.partial_cmp(&BigInt::from(*other))
- }
-}
-
-impl PartialOrd<usize> for Integer {
- #[inline]
- fn partial_cmp(&self, other: &usize) -> Option<Ordering> {
- self.0.partial_cmp(&BigInt::from(*other))
- }
-}
-
-impl FromStr for Integer {
- type Err = <BigInt as FromStr>::Err;
-
- #[inline]
- fn from_str(s: &str) -> Result<Self, Self::Err> {
- Ok(Integer(s.parse()?))
- }
-}
-
-impl Neg for Integer {
- type Output = Integer;
-
- #[inline]
- fn neg(self) -> Self {
- Integer(-self.0)
- }
-}
-
-impl Display for Integer {
- #[inline]
- fn fmt(&self, f: &mut Formatter) -> fmt::Result {
- write!(f, "{}", self.0)
- }
-}
-
-// Rational
-
-#[derive(Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
-pub struct Rational(BigRational);
-
-impl Rational {
- #[inline]
- pub fn new() -> Self {
- Rational(BigRational::from(BigInt::default()))
- }
-
- #[inline]
- pub fn from_f64(v: f64) -> Option<Self> {
- BigRational::from_f64(v).map(Rational)
- }
-
- #[inline]
- pub fn to_f64(&self) -> f64 {
- self.0.numer().to_f64().unwrap() / self.0.denom().to_f64().unwrap()
- }
-
- #[inline]
- pub fn numer(&self) -> &Integer {
- unsafe { ::std::mem::transmute(self.0.numer()) }
- }
-
- #[inline]
- pub fn denom(&self) -> &Integer {
- unsafe { ::std::mem::transmute(self.0.denom()) }
- }
-
- #[inline]
- pub fn abs(self) -> Self {
- Rational(self.0.abs())
- }
-
- #[inline]
- pub fn abs_ref(&self) -> Self {
- Rational(self.0.abs())
- }
-
- #[inline]
- pub fn fract_floor_ref(&self) -> &Self {
- panic!()
- }
-}
-
-impl From<isize> for Rational {
- #[inline]
- fn from(s: isize) -> Self {
- Rational(BigRational::new_raw(BigInt::from(s), One::one()))
- }
-}
-
-impl From<&Integer> for Rational {
- #[inline]
- fn from(s: &Integer) -> Self {
- Rational::from(s.clone())
- }
-}
-
-impl From<&Rational> for Rational {
- #[inline]
- fn from(s: &Rational) -> Self {
- s.clone()
- }
-}
-
-impl From<Integer> for Rational {
- #[inline]
- fn from(i: Integer) -> Self {
- Rational(BigRational::from(i.0))
- }
-}
-
-impl Add for Rational {
- type Output = Rational;
-
- #[inline]
- fn add(self, other: Rational) -> Self::Output {
- Rational(self.0 + other.0)
- }
-}
-
-impl Add<&Rational> for Rational {
- type Output = Rational;
-
- #[inline]
- fn add(self, other: &Rational) -> Self::Output {
- Rational(self.0 + &other.0)
- }
-}
-
-impl PartialEq<i32> for Rational {
- #[inline]
- fn eq(&self, other: &i32) -> bool {
- self.0 == BigRational::from(BigInt::from(*other))
- }
-}
-
-impl PartialEq<i64> for Rational {
- #[inline]
- fn eq(&self, other: &i64) -> bool {
- self.0 == BigRational::from(BigInt::from(*other))
- }
-}
-
-impl PartialEq<isize> for Rational {
- #[inline]
- fn eq(&self, other: &isize) -> bool {
- self == &Rational::from(*other)
- }
-}
-
-impl PartialEq<Rational> for isize {
- #[inline]
- fn eq(&self, other: &Rational) -> bool {
- other == &Rational::from(*self)
- }
-}
-
-impl PartialOrd<isize> for Rational {
- #[inline]
- fn partial_cmp(&self, other: &isize) -> Option<Ordering> {
- self.0.partial_cmp(&BigRational::from(BigInt::from(*other)))
- }
-}
-
-impl PartialOrd<i64> for Rational {
- #[inline]
- fn partial_cmp(&self, other: &i64) -> Option<Ordering> {
- self.0.partial_cmp(&BigRational::from(BigInt::from(*other)))
- }
-}
-
-impl PartialOrd<i32> for Rational {
- #[inline]
- fn partial_cmp(&self, other: &i32) -> Option<Ordering> {
- self.0.partial_cmp(&BigRational::from(BigInt::from(*other)))
- }
-}
-
-impl Neg for Rational {
- type Output = Rational;
-
- #[inline]
- fn neg(self) -> Self {
- Rational(-self.0)
- }
-}
-
-impl Mul for Rational {
- type Output = Rational;
-
- #[inline]
- fn mul(self, other: Rational) -> Self::Output {
- Rational(self.0 * other.0)
- }
-}
-
-impl Mul<&Rational> for Rational {
- type Output = Rational;
-
- fn mul(self, other: &Rational) -> Self::Output {
- Rational(self.0 * &other.0)
- }
-}
-
-impl Div for Rational {
- type Output = Rational;
-
- #[inline]
- fn div(self, other: Rational) -> Self::Output {
- Rational(self.0 / other.0)
- }
-}
-
-impl Div<&Rational> for &Rational {
- type Output = Rational;
-
- #[inline]
- fn div(self, other: &Rational) -> Self::Output {
- Rational(&self.0 / &other.0)
- }
-}
-
-impl Display for Rational {
- #[inline]
- fn fmt(&self, f: &mut Formatter) -> fmt::Result {
- write!(f, "{}", self.0)
- }
-}
-
-pub trait Assign<Src = Self> {
- fn assign(&mut self, src: Src);
-}
-
-impl Assign<&Rational> for (&mut Rational, &mut Integer) {
- fn assign(&mut self, _src: &Rational) {
- panic!()
- }
-}
-
-pub mod ops {
- use super::{Integer, Rational};
-
- pub trait Pow<Rhs> {
- type Output;
- fn pow(self, rhs: Rhs) -> Self::Output;
- }
-
- impl Pow<u32> for Integer {
- type Output = Integer;
-
- fn pow(self, rhs: u32) -> Self::Output {
- Integer(num_traits::Pow::pow(&self.0, rhs))
- }
- }
-
- pub trait PowAssign<Rhs> {
- fn pow_assign(&mut self, rhs: Rhs);
- }
-
- impl PowAssign<u32> for Integer {
- fn pow_assign(&mut self, rhs: u32) {
- // FIXME: make it efficient
- self.0 = num_traits::Pow::pow(&self.0, rhs);
- }
- }
-
- pub trait NegAssign {
- fn neg_assign(&mut self);
- }
-
- impl NegAssign for Integer {
- fn neg_assign(&mut self) {
- self.0 = -std::mem::replace(self, Integer::new()).0;
- }
- }
-
- impl NegAssign for Rational {
- #[inline]
- fn neg_assign(&mut self) {
- self.0 = -std::mem::replace(self, Rational::new()).0;
- }
- }
-}
-
-pub mod rand {
- use super::Integer;
- use std::marker::PhantomData;
-
- pub struct RandState<'a>{
- _marker: PhantomData<&'a ()>,
- }
-
- impl<'a> RandState<'a> {
- pub fn new() -> Self {
- unsafe { libc::srand(libc::time(std::ptr::null_mut()) as _) };
- RandState { _marker: PhantomData }
- }
-
- pub fn borrow_mut(&self) -> &Self {
- self
- }
-
- pub fn bits(&mut self, bits: u32) -> u32 {
- assert!(bits <= 32);
- (unsafe { libc::rand() } as u32) & (u32::max_value() >> (32 - bits))
- }
-
- pub fn seed(&mut self, seed: &Integer) {
- unsafe { libc::srand(seed.to_f64() as _)}
- }
- }
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
- use super::ops::NegAssign;
-
- #[test]
- fn bits() {
- let mut rand = rand::RandState::new();
- for bits in 1..32 {
- for _ in 0..100 {
- let r = rand.bits(bits);
- let max = 1 << bits;
- assert!(max > r, "{} > {}", max, r);
- }
- }
- }
-
- #[test]
- fn neg_rational() {
- let mut x = Rational::from_f64(5.0).unwrap();
- let x_neg = Rational::from_f64(-5.0).unwrap();
- x.neg_assign();
- assert_eq!(x, x_neg);
- }
-
- #[test]
- fn neg_integer() {
- let mut x = Integer::from(5);
- let x_neg = Integer::from(-5);
- x.neg_assign();
- assert_eq!(x, x_neg);
- }
-}
+++ /dev/null
-[package]
-name = "static-string-indexing"
-version = "0.1.0"
-edition = "2021"
-
-[dependencies]
-proc-macro2 = "*"
-syn = { version = "*", features = ['full', 'visit', 'extra-traits'] }
-indexmap = "*"
-walkdir = "2"
-quote = "*"
+++ /dev/null
-[package]
-name = "to-syn-value"
-version = "0.1.0"
-edition = "2021"
-publish = false
-
-[dependencies]
-syn = { version = "*", features = ['full', 'visit', 'extra-traits'] }
-to-syn-value_derive = { path = "../to-syn-value_derive" }
\ No newline at end of file
+++ /dev/null
-pub trait ToDeriveInput {
- fn to_derive_input() -> syn::DeriveInput;
-}
+++ /dev/null
-[package]
-name = "to-syn-value_derive"
-version = "0.1.0"
-edition = "2021"
-publish = false
-
-[lib]
-proc-macro = true
-
-[dependencies]
-proc-macro2 = "*"
-syn = { version = "*", features = ['full', 'visit', 'extra-traits'] }
-quote = "*"
\ No newline at end of file
+++ /dev/null
-use syn::*;
-use quote::*;
-
-#[proc_macro_derive(ToDeriveInput)]
-pub fn derive_to_derive_input(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
- let derive_input = parse_macro_input!(input as DeriveInput);
- let ty_name = derive_input.ident.clone();
-
- quote! {
- use to_syn_value::*;
-
- impl ToDeriveInput for #ty_name {
- fn to_derive_input() -> syn::DeriveInput {
- syn::parse_quote! {
- #derive_input
- }
- }
- }
- }.into()
-}