Cgp-serde: A modular serialization library for Serde powered by CGP
contextgeneric.dev
Cgp-serde: A modular serialization library for Serde powered by CGP
1–4 of 4 posts
Re: Cgp-serde: A modular serialization library for Serde powered by CGP
#2Author here, glad to see this featured on HN! AMA about Context-Generic Programming or Rust traits!
Re: Cgp-serde: A modular serialization library for Serde powered by CGP
#3How does it avoid the challenges and needed ergonomics in scala. Like I think they rolled it back for scala 3?
Re: Cgp-serde: A modular serialization library for Serde powered by CGP
#4How does it avoid the challenges and needed ergonomics in scala. Like I think they rolled it back for scala 3?
The providers in CGP work a little different than implicit parameters in Scala. Specifically, the provider implementations are bound to a `Context` or `Self` type during compile-time wiring. So if you know the concrete `Context` type, then you can resolve all provider implementations for that context.
Because the wiring is done globally for an explicit `Context` type, there is no issue of ambiguity that arise based on when an implicit parameter is bound. I call this scoped coherence, as it leverages incoherence for overlappable implementations, but still maintain global coherence through the wiring in a context type.