From 08e59115af2512e7930f5676980f8e3fcaebcbd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=8B=D1=80=D1=86=D0=B5=D0=B2=20=D0=92=D0=B0=D0=B4?= =?UTF-8?q?=D0=B8=D0=BC=20=D0=98=D0=B3=D0=BE=D1=80=D0=B5=D0=B2=D0=B8=D1=87?= Date: Thu, 4 Jan 2024 11:14:27 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B7=D0=B1=D0=B8=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D0=BE=D0=B4=D0=BF=D1=80=D0=BE=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.lock | 245 +++++++++--------- Cargo.toml | 26 +- README.md | 3 +- crates/checkers-app/Cargo.toml | 20 ++ .../checkers-app/src}/application/app.rs | 0 .../src}/application/enums/message.rs | 0 .../checkers-app/src/application/enums/mod.rs | 3 + .../checkers-app/src}/application/io.rs | 0 .../checkers-app/src}/application/mod.rs | 0 .../src}/application/structs/board/board.rs | 9 +- .../src}/application/structs/board/message.rs | 2 +- .../src}/application/structs/board/mod.rs | 0 .../src}/application/structs/board/state.rs | 3 +- .../src}/application/structs/game_data.rs | 5 +- .../src}/application/structs/mod.rs | 2 - {src => crates/checkers-app/src}/main.rs | 2 +- crates/checkers-lib/Cargo.toml | 12 + .../checkers-lib/src}/enums/direction.rs | 0 crates/checkers-lib/src/enums/mod.rs | 6 + .../checkers-lib/src}/enums/piece.rs | 1 + .../checkers-lib/src}/enums/route.rs | 4 +- .../checkers-lib/src}/enums/side.rs | 0 crates/checkers-lib/src/lib.rs | 2 + crates/checkers-lib/src/structs/mod.rs | 3 + .../checkers-lib/src}/structs/position.rs | 22 +- src/application/enums/mod.rs | 7 - 26 files changed, 201 insertions(+), 176 deletions(-) create mode 100644 crates/checkers-app/Cargo.toml rename {src => crates/checkers-app/src}/application/app.rs (100%) rename {src => crates/checkers-app/src}/application/enums/message.rs (100%) create mode 100644 crates/checkers-app/src/application/enums/mod.rs rename {src => crates/checkers-app/src}/application/io.rs (100%) rename {src => crates/checkers-app/src}/application/mod.rs (100%) rename {src => crates/checkers-app/src}/application/structs/board/board.rs (99%) rename {src => crates/checkers-app/src}/application/structs/board/message.rs (95%) rename {src => crates/checkers-app/src}/application/structs/board/mod.rs (100%) rename {src => crates/checkers-app/src}/application/structs/board/state.rs (93%) rename {src => crates/checkers-app/src}/application/structs/game_data.rs (99%) rename {src => crates/checkers-app/src}/application/structs/mod.rs (75%) rename {src => crates/checkers-app/src}/main.rs (93%) create mode 100644 crates/checkers-lib/Cargo.toml rename {src/application => crates/checkers-lib/src}/enums/direction.rs (100%) create mode 100644 crates/checkers-lib/src/enums/mod.rs rename {src/application => crates/checkers-lib/src}/enums/piece.rs (95%) rename {src/application => crates/checkers-lib/src}/enums/route.rs (91%) rename {src/application => crates/checkers-lib/src}/enums/side.rs (100%) create mode 100644 crates/checkers-lib/src/lib.rs create mode 100644 crates/checkers-lib/src/structs/mod.rs rename {src/application => crates/checkers-lib/src}/structs/position.rs (90%) delete mode 100644 src/application/enums/mod.rs diff --git a/Cargo.lock b/Cargo.lock index 6e4a9b1..f040d5c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -35,9 +35,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" dependencies = [ "cfg-if", "once_cell", @@ -225,7 +225,7 @@ checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.46", ] [[package]] @@ -265,17 +265,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" [[package]] -name = "checkers" +name = "checkers-app" version = "0.1.0" dependencies = [ "bincode", - "derive_more", + "checkers-lib", "iced", "itertools", "once_cell", "serde", ] +[[package]] +name = "checkers-lib" +version = "0.1.0" +dependencies = [ + "derive_more", + "serde", +] + [[package]] name = "clipboard-win" version = "4.5.0" @@ -371,9 +379,9 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -381,9 +389,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "core-graphics" @@ -400,9 +408,9 @@ dependencies = [ [[package]] name = "core-graphics-types" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb142d41022986c1d8ff29103a1411c8a3dfad3552f87a4f8dc50d61d4f4e33" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -513,9 +521,9 @@ dependencies = [ [[package]] name = "etagere" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcf22f748754352918e082e0039335ee92454a5d62bcaf69b5e8daf5907d9644" +checksum = "306960881d6c46bd0dd6b7f07442a441418c08d0d3e63d8d080b0f64c6343e4e" dependencies = [ "euclid", "svg_fmt", @@ -547,9 +555,9 @@ dependencies = [ [[package]] name = "fdeflate" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d6dafc854908ff5da46ff3f8f473c6984119a2876a383a860246dd7841a868" +checksum = "209098dd6dfc4445aa6111f0e98653ac323eaa4dfd212c9ca3931bf9955c31bd" dependencies = [ "simd-adler32", ] @@ -600,9 +608,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "futures" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -615,9 +623,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -625,15 +633,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -643,38 +651,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.46", ] [[package]] name = "futures-sink" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-util" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -711,9 +719,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "glam" @@ -785,7 +793,7 @@ checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" dependencies = [ "bitflags 2.4.1", "gpu-descriptor-types", - "hashbrown 0.14.2", + "hashbrown 0.14.3", ] [[package]] @@ -825,9 +833,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ "ahash", "allocator-api2", @@ -1043,7 +1051,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", - "hashbrown 0.14.2", + "hashbrown 0.14.3", ] [[package]] @@ -1095,9 +1103,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.65" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" +checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" dependencies = [ "wasm-bindgen", ] @@ -1130,9 +1138,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.150" +version = "0.2.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" +checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" [[package]] name = "libloading" @@ -1193,7 +1201,7 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4a83fb7698b3643a0e34f9ae6f2e8f0178c0fd42f8b59d493aa271ff3a5bf21" dependencies = [ - "hashbrown 0.14.2", + "hashbrown 0.14.3", ] [[package]] @@ -1259,9 +1267,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.6.4" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "memmap2" @@ -1313,12 +1321,6 @@ dependencies = [ "objc", ] -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "miniz_oxide" version = "0.7.1" @@ -1331,9 +1333,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.9" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "log", @@ -1441,16 +1443,6 @@ dependencies = [ "pin-utils", ] -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - [[package]] name = "num-traits" version = "0.2.17" @@ -1510,7 +1502,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.46", ] [[package]] @@ -1580,18 +1572,18 @@ dependencies = [ [[package]] name = "object" -version = "0.32.1" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "orbclient" @@ -1631,7 +1623,7 @@ checksum = "b7db010ec5ff3d4385e4f133916faacd9dad0f6a09394c92d825b3aed310fa0a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.46", ] [[package]] @@ -1684,9 +1676,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "phf" @@ -1718,7 +1710,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.46", ] [[package]] @@ -1744,9 +1736,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a" [[package]] name = "png" @@ -1779,18 +1771,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.69" +version = "1.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "2de98502f212cfcea8d0bb305bd0f49d7ebdd75b64ba0a68f937d888f4e0d6db" dependencies = [ "unicode-ident", ] [[package]] name = "profiling" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f89dff0959d98c9758c88826cc002e2c3d0b9dfac4139711d1f30de442f1139b" +checksum = "d135ede8821cf6376eb7a64148901e1690b788c11ae94dc297ae917dbc91dc0e" [[package]] name = "quick-xml" @@ -1803,9 +1795,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -1956,28 +1948,28 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" [[package]] name = "serde" -version = "1.0.193" +version = "1.0.194" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "0b114498256798c94a0689e1a15fec6005dee8ac1f41de56404b67afc2a4b773" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.194" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "a3385e45322e8f9931410f01b3031ec534c3947d0e94c18049af4d9f9907d4e0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.46", ] [[package]] @@ -2003,9 +1995,9 @@ dependencies = [ [[package]] name = "slotmap" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" dependencies = [ "version_check", ] @@ -2130,9 +2122,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.39" +version = "2.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +checksum = "89456b690ff72fddcecf231caedbe615c59480c93358a93dfae7fc29e3ebbf0e" dependencies = [ "proc-macro2", "quote", @@ -2159,22 +2151,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.46", ] [[package]] @@ -2285,9 +2277,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" [[package]] name = "unicode-bidi-mirroring" @@ -2363,9 +2355,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.88" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" +checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -2373,24 +2365,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.88" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" +checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.46", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02" +checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" dependencies = [ "cfg-if", "js-sys", @@ -2400,9 +2392,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.88" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" +checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2410,22 +2402,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.88" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" +checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.46", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.88" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" +checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" [[package]] name = "wasm-timer" @@ -2567,9 +2559,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.65" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" +checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" dependencies = [ "js-sys", "wasm-bindgen", @@ -2913,9 +2905,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.5.19" +version = "0.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" +checksum = "8434aeec7b290e8da5c3f0d628cb0eac6cabcb31d14bb74f779a08109a5914d6" dependencies = [ "memchr", ] @@ -2970,12 +2962,9 @@ dependencies = [ [[package]] name = "xcursor" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "463705a63313cd4301184381c5e8042f0a7e9b4bb63653f216311d4ae74690b7" -dependencies = [ - "nom", -] +checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" [[package]] name = "xml-rs" @@ -2997,20 +2986,20 @@ checksum = "dd15f8e0dbb966fd9245e7498c7e9e5055d9e5c8b676b95bd67091cd11a1e697" [[package]] name = "zerocopy" -version = "0.7.26" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.26" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.46", ] diff --git a/Cargo.toml b/Cargo.toml index b7adaec..933f40c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,19 +1,13 @@ -[package] -name = "checkers" +[workspace] +members = [ + # Исполняемая программа + "crates/checkers-app", + # Библиотека логики поведения шашек + "crates/checkers-lib" +] +resolver = "2" + +[workspace.package] authors = ["Сырцев Вадим Игоревич "] description = "Игра Шашки" -version = "0.1.0" edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -bincode = "1.3.3" -derive_more = "0.99.17" -iced = { version = "0.10.0", features = ["canvas"] } -itertools = "0.12.0" -once_cell = "1.18.0" -serde = { version = "1.0.193", features = ["derive"] } - -[profile.release] -panic = "abort" diff --git a/README.md b/README.md index e6d1574..c53ffc6 100644 --- a/README.md +++ b/README.md @@ -96,9 +96,10 @@ cargo run --release ## Дальнейшие планы? На момент написания этого файла, планируется сделать следующие улучшения: - Покрыть игровую логику автотестами +- Мигрировать к использованию библиотеки [tauri](https://github.com/tauri-apps/tauri) для создания интерфейса - Оптимизировать использование программой оперативной памяти - Расширить доступный инструментарий программы - Внедрить возможность добавления переводов текстовых сообщений - Добавить возможность собственной стилизации элементов интерфейса - +### Маловероятно, но вдруг?) - Добавить возможность игры по сети? diff --git a/crates/checkers-app/Cargo.toml b/crates/checkers-app/Cargo.toml new file mode 100644 index 0000000..504d22b --- /dev/null +++ b/crates/checkers-app/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "checkers-app" +authors.workspace = true +description.workspace = true +version = "0.1.0" +edition.workspace = true + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +checkers-lib = { path = "../checkers-lib" } + +serde = { version = "1.0.193", features = ["derive"] } +bincode = "1.3.3" +once_cell = "1.18.0" +itertools = "0.12.0" +iced = { version = "0.10.0", features = ["canvas"] } + +[profile.release] +panic = "abort" diff --git a/src/application/app.rs b/crates/checkers-app/src/application/app.rs similarity index 100% rename from src/application/app.rs rename to crates/checkers-app/src/application/app.rs diff --git a/src/application/enums/message.rs b/crates/checkers-app/src/application/enums/message.rs similarity index 100% rename from src/application/enums/message.rs rename to crates/checkers-app/src/application/enums/message.rs diff --git a/crates/checkers-app/src/application/enums/mod.rs b/crates/checkers-app/src/application/enums/mod.rs new file mode 100644 index 0000000..977f05e --- /dev/null +++ b/crates/checkers-app/src/application/enums/mod.rs @@ -0,0 +1,3 @@ +mod message; + +pub use message::Message; diff --git a/src/application/io.rs b/crates/checkers-app/src/application/io.rs similarity index 100% rename from src/application/io.rs rename to crates/checkers-app/src/application/io.rs diff --git a/src/application/mod.rs b/crates/checkers-app/src/application/mod.rs similarity index 100% rename from src/application/mod.rs rename to crates/checkers-app/src/application/mod.rs diff --git a/src/application/structs/board/board.rs b/crates/checkers-app/src/application/structs/board/board.rs similarity index 99% rename from src/application/structs/board/board.rs rename to crates/checkers-app/src/application/structs/board/board.rs index e0b4fbc..dd0277f 100644 --- a/src/application/structs/board/board.rs +++ b/crates/checkers-app/src/application/structs/board/board.rs @@ -24,12 +24,15 @@ use iced::{ }; use once_cell::sync::Lazy; -use crate::application::{ +use checkers_lib::{ enums::{Piece, Route, Side}, - structs::{GameData, Position}, + structs::Position, }; -use super::{Message, State}; +use crate::application::structs::{ + board::{Message, State}, + GameData, +}; // Преднастроенная конфигурация текстового элемента, отображаемого в overlay static OVERLAY_TEXT_PRESET: Lazy = Lazy::new(|| Text { diff --git a/src/application/structs/board/message.rs b/crates/checkers-app/src/application/structs/board/message.rs similarity index 95% rename from src/application/structs/board/message.rs rename to crates/checkers-app/src/application/structs/board/message.rs index 4033b89..0f4faa5 100644 --- a/src/application/structs/board/message.rs +++ b/crates/checkers-app/src/application/structs/board/message.rs @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -use crate::application::{enums::Side, structs::Position}; +use checkers_lib::{enums::Side, structs::Position}; #[derive(Debug, Clone)] pub enum Message { diff --git a/src/application/structs/board/mod.rs b/crates/checkers-app/src/application/structs/board/mod.rs similarity index 100% rename from src/application/structs/board/mod.rs rename to crates/checkers-app/src/application/structs/board/mod.rs diff --git a/src/application/structs/board/state.rs b/crates/checkers-app/src/application/structs/board/state.rs similarity index 93% rename from src/application/structs/board/state.rs rename to crates/checkers-app/src/application/structs/board/state.rs index c93a3c4..5f41b34 100644 --- a/src/application/structs/board/state.rs +++ b/crates/checkers-app/src/application/structs/board/state.rs @@ -13,8 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ - -use crate::application::{enums::Piece, structs::Position}; +use checkers_lib::{enums::Piece, structs::Position}; #[derive(Default)] pub enum State { diff --git a/src/application/structs/game_data.rs b/crates/checkers-app/src/application/structs/game_data.rs similarity index 99% rename from src/application/structs/game_data.rs rename to crates/checkers-app/src/application/structs/game_data.rs index 2bd9011..f587ef5 100644 --- a/src/application/structs/game_data.rs +++ b/crates/checkers-app/src/application/structs/game_data.rs @@ -14,10 +14,11 @@ See the License for the specific language governing permissions and limitations under the License. */ -use serde::{Deserialize, Serialize}; use std::{collections::HashMap, ops::RangeInclusive}; -use crate::application::{ +use serde::{Deserialize, Serialize}; + +use checkers_lib::{ enums::{Direction, Piece, Route, Side}, structs::Position, }; diff --git a/src/application/structs/mod.rs b/crates/checkers-app/src/application/structs/mod.rs similarity index 75% rename from src/application/structs/mod.rs rename to crates/checkers-app/src/application/structs/mod.rs index f0ea7a0..5ffa98b 100644 --- a/src/application/structs/mod.rs +++ b/crates/checkers-app/src/application/structs/mod.rs @@ -1,9 +1,7 @@ pub mod board; mod game_data; -mod position; pub use self::{ board::{Board, Message as BoardMessage}, game_data::GameData, - position::Position, }; diff --git a/src/main.rs b/crates/checkers-app/src/main.rs similarity index 93% rename from src/main.rs rename to crates/checkers-app/src/main.rs index 5c03bcc..9f87b4d 100644 --- a/src/main.rs +++ b/crates/checkers-app/src/main.rs @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -#![windows_subsystem = "windows"] +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] mod application; use iced::{window, Application, Result, Settings}; diff --git a/crates/checkers-lib/Cargo.toml b/crates/checkers-lib/Cargo.toml new file mode 100644 index 0000000..fa8b1fb --- /dev/null +++ b/crates/checkers-lib/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "checkers-lib" +authors.workspace = true +description.workspace = true +version = "0.1.0" +edition.workspace = true + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +serde = { version = "1.0.193", features = ["derive"] } +derive_more = "0.99.17" diff --git a/src/application/enums/direction.rs b/crates/checkers-lib/src/enums/direction.rs similarity index 100% rename from src/application/enums/direction.rs rename to crates/checkers-lib/src/enums/direction.rs diff --git a/crates/checkers-lib/src/enums/mod.rs b/crates/checkers-lib/src/enums/mod.rs new file mode 100644 index 0000000..6787919 --- /dev/null +++ b/crates/checkers-lib/src/enums/mod.rs @@ -0,0 +1,6 @@ +mod direction; +mod piece; +mod route; +mod side; + +pub use self::{direction::Direction, piece::Piece, route::Route, side::Side}; diff --git a/src/application/enums/piece.rs b/crates/checkers-lib/src/enums/piece.rs similarity index 95% rename from src/application/enums/piece.rs rename to crates/checkers-lib/src/enums/piece.rs index 85eee49..2b690e4 100644 --- a/src/application/enums/piece.rs +++ b/crates/checkers-lib/src/enums/piece.rs @@ -27,6 +27,7 @@ pub enum Piece { King, } +// TODO заменить на enum-as-inner? impl Piece { pub fn is_man(&self) -> bool { matches!(self, Piece::Man) diff --git a/src/application/enums/route.rs b/crates/checkers-lib/src/enums/route.rs similarity index 91% rename from src/application/enums/route.rs rename to crates/checkers-lib/src/enums/route.rs index 6ca2d4c..f00d809 100644 --- a/src/application/enums/route.rs +++ b/crates/checkers-lib/src/enums/route.rs @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -use crate::application::structs::Position; +use crate::structs::Position; /// Маршрут перемещения фигуры #[derive(Debug, Clone)] @@ -23,7 +23,7 @@ pub enum Route { Movement(Position), /// Взятие фигур противника /// - /// Конечная позиция и позиция вражеских фигур, которые были "съедены" во время взятия + /// Конечная позиция и позиции вражеских фигур, которые были "съедены" во время взятия Taking(Position, Vec), } diff --git a/src/application/enums/side.rs b/crates/checkers-lib/src/enums/side.rs similarity index 100% rename from src/application/enums/side.rs rename to crates/checkers-lib/src/enums/side.rs diff --git a/crates/checkers-lib/src/lib.rs b/crates/checkers-lib/src/lib.rs new file mode 100644 index 0000000..6e55097 --- /dev/null +++ b/crates/checkers-lib/src/lib.rs @@ -0,0 +1,2 @@ +pub mod enums; +pub mod structs; diff --git a/crates/checkers-lib/src/structs/mod.rs b/crates/checkers-lib/src/structs/mod.rs new file mode 100644 index 0000000..12044af --- /dev/null +++ b/crates/checkers-lib/src/structs/mod.rs @@ -0,0 +1,3 @@ +mod position; + +pub use self::position::Position; diff --git a/src/application/structs/position.rs b/crates/checkers-lib/src/structs/position.rs similarity index 90% rename from src/application/structs/position.rs rename to crates/checkers-lib/src/structs/position.rs index c091e33..0247e46 100644 --- a/src/application/structs/position.rs +++ b/crates/checkers-lib/src/structs/position.rs @@ -14,13 +14,13 @@ See the License for the specific language governing permissions and limitations under the License. */ -use derive_more::Display; +use derive_more::{Display, From}; use serde::{Deserialize, Serialize}; -use crate::application::enums::Direction; +use crate::enums::Direction; /// Положение фигуры на игральной доске -#[derive(Debug, Display, Hash, PartialEq, Eq, Clone, Copy, Deserialize, Serialize)] +#[derive(Debug, Display, From, Hash, PartialEq, Eq, Clone, Copy, Deserialize, Serialize)] #[display(fmt = "({}, {})", row, column)] pub struct Position { pub row: i8, @@ -84,11 +84,11 @@ impl Position { } } -impl From<(i8, i8)> for Position { - fn from(value: (i8, i8)) -> Self { - Self { - row: value.0, - column: value.1, - } - } -} +// impl From<(i8, i8)> for Position { +// fn from(value: (i8, i8)) -> Self { +// Self { +// row: value.0, +// column: value.1, +// } +// } +// } diff --git a/src/application/enums/mod.rs b/src/application/enums/mod.rs deleted file mode 100644 index e877f7f..0000000 --- a/src/application/enums/mod.rs +++ /dev/null @@ -1,7 +0,0 @@ -mod direction; -mod message; -mod piece; -mod route; -mod side; - -pub use self::{direction::Direction, message::Message, piece::Piece, route::Route, side::Side};