From ef2742edb63be4ee8abbab45208e2844f9388d86 Mon Sep 17 00:00:00 2001 From: Soares Chen Date: Wed, 11 Dec 2024 20:26:44 +0000 Subject: [PATCH] Update CGP version to v0.2 --- Cargo.lock | 82 +++++++++++++++++++++------------ Cargo.toml | 2 +- README.md | 3 ++ content/component-macros.md | 12 ++++- content/debugging-techniques.md | 48 +++++++++++++++---- 5 files changed, 106 insertions(+), 41 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 694ad03..e7564ce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,28 +10,30 @@ checksum = "74f37166d7d48a0284b99dd824694c26119c700b53bf0d1540cdb147dbdaaf13" [[package]] name = "cgp" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cf6008adf1725d51be8a8e6e93c83b5cf19fb2e7f2061328af663aa97c306a1" +checksum = "5adf76ce3579324bc8804a03da7e05a5012e4096e295d7ce16073dd0f55e923e" dependencies = [ + "cgp-async", "cgp-core", "cgp-extra", ] [[package]] name = "cgp-async" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d071d4e97afc6ce344786d52f513204e271032e1dc51e59408b6ea545fd270b7" +checksum = "0623cc42c39044ad4223a60b58d427fdece736913fa70e0c0b7787b207545886" dependencies = [ "cgp-async-macro", + "cgp-sync", ] [[package]] name = "cgp-async-macro" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4eeae095965f957262c70b7b3d52eeb7859c5a7f24db7e4330e02ba4e500d7" +checksum = "b22933d3a1fb401cc0208e4f8ef16f4c80579701a47b81d2f23ee5b0b697a7b0" dependencies = [ "proc-macro2", "quote", @@ -40,19 +42,18 @@ dependencies = [ [[package]] name = "cgp-component" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2622c229c16df5194795974fe869c875371ac526398f35b9f42853e73123e4dc" +checksum = "82a567833f055c865fb46258f7c6a511b22a1da6bc22f58b47a5e5e3da7a2dd2" dependencies = [ - "cgp-async", "cgp-component-macro", ] [[package]] name = "cgp-component-macro" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b293063f328ce024cce876357dbaf4e0341cd202c32ad02d182c00b894d8a1" +checksum = "1c4c375220b569b618d6b4ec8793c61bbdd24925786aeb4ea1eac5010916c262" dependencies = [ "cgp-component-macro-lib", "proc-macro2", @@ -60,9 +61,9 @@ dependencies = [ [[package]] name = "cgp-component-macro-lib" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2505f365511950fec58adb513a8307b11ffea1a06f10b647aa51162de217b424" +checksum = "f7e9fa127625afac0527a2f1595ba365142d8d875ff04f155cb248aee456d2c0" dependencies = [ "itertools", "prettyplease", @@ -73,50 +74,54 @@ dependencies = [ [[package]] name = "cgp-core" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff5a8db0975e0efa7bb1b8295a0b582059552d0228d441e47c5f4196914f3bd4" +checksum = "39951e4828fb216d51bfa42121095654f2adb0e4abbc9d03b011c5b47372a4c1" dependencies = [ "cgp-async", "cgp-component", "cgp-error", "cgp-field", "cgp-inner", + "cgp-type", ] [[package]] name = "cgp-error" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a40e53c31277f55360d2ba76a616f2335e006a58ff19c05e6070a0f45931e1cb" +checksum = "f3866da7384b88d3260e781e60bc9da3a68d5552c33eea56e6780fea8c97d000" dependencies = [ "cgp-async", "cgp-component", + "cgp-type", ] [[package]] name = "cgp-extra" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704f0d30d3235cb181cc83146f3c9d42999435ff9236743be71aaf182e758ba9" +checksum = "9f79c15ed0088b1ca06ad58a8f124c1d63f4a554073ed372ff2b488a3fbf6fb9" dependencies = [ "cgp-run", ] [[package]] name = "cgp-field" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea5c75d9db95765005f357690a589c357debb95b6a3233737e095560c5e273cb" +checksum = "6956ca07b849e38106ee5b3c71c7e396088619115fe60934fd2598b873a9efac" dependencies = [ + "cgp-component", "cgp-field-macro", + "cgp-type", ] [[package]] name = "cgp-field-macro" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c315a7a8847191333ab189234e5eae77df650b9bdf57abfdfc5fe83f188b883" +checksum = "2286ec0bd3a48571ee3644e80a52ba029f10c2edd6bc3da4f4ef9279583798d5" dependencies = [ "cgp-field-macro-lib", "proc-macro2", @@ -124,9 +129,9 @@ dependencies = [ [[package]] name = "cgp-field-macro-lib" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba35e703bac9e476efb61793bdd79b2bfd6abc551f4c7bf9f42899766536d87c" +checksum = "7e05fc04f941c797c28db9dd9685d779b76784f29bdbe2eb368329abfca14d9a" dependencies = [ "itertools", "prettyplease", @@ -137,11 +142,10 @@ dependencies = [ [[package]] name = "cgp-inner" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9992e1a6cf0bb8a13bb72e8a91125a5594c1616555776905043e5924a8e12dd7" +checksum = "0cd062e3bef5a8353acdcdae3e04c0012de0b19e9bd02acbccfce09e895814cf" dependencies = [ - "cgp-async", "cgp-component", ] @@ -158,15 +162,33 @@ dependencies = [ [[package]] name = "cgp-run" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44a08c8d94641ad0376d23aab67b703d0aac7f178d3a2483cf679074fc2b277d" +checksum = "2bf13ddcb395e915d314abf917d86dc7fa461bd73a3da2724b4698d45eaa283e" dependencies = [ "cgp-async", "cgp-component", "cgp-error", ] +[[package]] +name = "cgp-sync" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a1c0e460bcccd3e2e39ded6a2078f012d3c00b523caafc05b5bdace9205b0cf" +dependencies = [ + "cgp-async-macro", +] + +[[package]] +name = "cgp-type" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d3c9a9059625de770e4acddff6d5e56c5defd959b010b9643cfcb81832f5bed" +dependencies = [ + "cgp-component", +] + [[package]] name = "either" version = "1.13.0" diff --git a/Cargo.toml b/Cargo.toml index c0b0f48..f90bf52 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,4 +8,4 @@ itertools = "0.11.0" serde = {version = "1", features = ["derive"] } serde_json = "1" anyhow = "1" -cgp = { version = "0.1.0" } \ No newline at end of file +cgp = { version = "0.2.0" } \ No newline at end of file diff --git a/README.md b/README.md index 944eda8..c89d27a 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,9 @@ This repository contains the source code for the book _Context-Generic Programming Patterns_. The published version of this book is available at https://patterns.contextgeneric.dev/. +For more information about context-generic programming, check out the +main website at https://www.contextgeneric.dev/. + ## Build Instructions This book is built using [mdBook](https://rust-lang.github.io/mdBook/). Follow the [installation instructions](https://rust-lang.github.io/mdBook/guide/installation.html) to install mdBook on your machine. You can then serve a local version of the book by running: diff --git a/content/component-macros.md b/content/component-macros.md index 0ef449d..d52014a 100644 --- a/content/component-macros.md +++ b/content/component-macros.md @@ -189,12 +189,20 @@ use serde::{Serialize, Deserialize}; // Component definitions -#[derive_component(StringFormatterComponent, StringFormatter)] +#[cgp_component { + name: StringFormatterComponent, + provider: StringFormatter, + context: Context, +}] pub trait CanFormatToString { fn format_to_string(&self) -> Result; } -#[derive_component(StringParserComponent, StringParser)] +#[cgp_component { + name: StringParserComponent, + provider: StringParser, + context: Context, +}] pub trait CanParseFromString: Sized { fn parse_from_string(raw: &str) -> Result; } diff --git a/content/debugging-techniques.md b/content/debugging-techniques.md index cc1d3a4..50e6b93 100644 --- a/content/debugging-techniques.md +++ b/content/debugging-techniques.md @@ -35,12 +35,20 @@ Consider if we made a mistake and forgot to implement `Serialize` for `Person`: # use anyhow::Error; # use serde::{Serialize, Deserialize}; # -# #[derive_component(StringFormatterComponent, StringFormatter)] +# #[cgp_component { +# name: StringFormatterComponent, +# provider: StringFormatter, +# context: Context, +# }] # pub trait CanFormatToString { # fn format_to_string(&self) -> Result; # } # -# #[derive_component(StringParserComponent, StringParser)] +# #[cgp_component { +# name: StringParserComponent, +# provider: StringParser, +# context: Context, +# }] # pub trait CanParseFromString: Sized { # fn parse_from_string(raw: &str) -> Result; # } @@ -108,12 +116,20 @@ call `format_to_string`, and check if it works: # use anyhow::Error; # use serde::{Serialize, Deserialize}; # -# #[derive_component(StringFormatterComponent, StringFormatter)] +# #[cgp_component { +# name: StringFormatterComponent, +# provider: StringFormatter, +# context: Context, +# }] # pub trait CanFormatToString { # fn format_to_string(&self) -> Result; # } # -# #[derive_component(StringParserComponent, StringParser)] +# #[cgp_component { +# name: StringParserComponent, +# provider: StringParser, +# context: Context, +# }] # pub trait CanParseFromString: Sized { # fn parse_from_string(raw: &str) -> Result; # } @@ -246,12 +262,20 @@ defined as follows: # use anyhow::Error; # use serde::{Serialize, Deserialize}; # -# #[derive_component(StringFormatterComponent, StringFormatter)] +# #[cgp_component { +# name: StringFormatterComponent, +# provider: StringFormatter, +# context: Context, +# }] # pub trait CanFormatToString { # fn format_to_string(&self) -> Result; # } # -# #[derive_component(StringParserComponent, StringParser)] +# #[cgp_component { +# name: StringParserComponent, +# provider: StringParser, +# context: Context, +# }] # pub trait CanParseFromString: Sized { # fn parse_from_string(raw: &str) -> Result; # } @@ -372,12 +396,20 @@ the super trait of `CanUsePerson` as follows: # use anyhow::Error; # use serde::{Serialize, Deserialize}; # -# #[derive_component(StringFormatterComponent, StringFormatter)] +# #[cgp_component { +# name: StringFormatterComponent, +# provider: StringFormatter, +# context: Context, +# }] # pub trait CanFormatToString { # fn format_to_string(&self) -> Result; # } # -# #[derive_component(StringParserComponent, StringParser)] +# #[cgp_component { +# name: StringParserComponent, +# provider: StringParser, +# context: Context, +# }] # pub trait CanParseFromString: Sized { # fn parse_from_string(raw: &str) -> Result; # }