René's URL Explorer Experiment


Title: Context-Generic Programming Patterns (DRAFT)

direct link

Domain: patterns.contextgeneric.dev

theme-color#ffffff

Links:

https://patterns.contextgeneric.dev/print.html
Introductionhttps://patterns.contextgeneric.dev/print.html#introduction
What is Context-Generic Programminghttps://patterns.contextgeneric.dev/print.html#what-is-context-generic-programming
project websitehttps://www.contextgeneric.dev/
Work In Progresshttps://patterns.contextgeneric.dev/print.html#work-in-progress
Who This Book Is Forhttps://patterns.contextgeneric.dev/print.html#who-this-book-is-for
Chapter Outlineshttps://patterns.contextgeneric.dev/print.html#chapter-outlines
Contributionhttps://patterns.contextgeneric.dev/print.html#contribution
GitHubhttps://github.com/contextgeneric/cgp-patterns
pull requestshttps://github.com/contextgeneric/cgp-patterns/pulls
GitHub Discussionshttps://github.com/contextgeneric/cgp-patterns/discussions
Contexthttps://patterns.contextgeneric.dev/print.html#context
Contexts vs Classeshttps://patterns.contextgeneric.dev/print.html#contexts-vs-classes
Contexts vs Typeshttps://patterns.contextgeneric.dev/print.html#contexts-vs-types
Consumerhttps://patterns.contextgeneric.dev/print.html#consumer
Context-Generic Consumershttps://patterns.contextgeneric.dev/print.html#context-generic-consumers
Providerhttps://patterns.contextgeneric.dev/print.html#provider
Providers as Consumershttps://patterns.contextgeneric.dev/print.html#providers-as-consumers
Blanket Trait Implementationshttps://patterns.contextgeneric.dev/print.html#blanket-trait-implementations
Extension Traitshttps://patterns.contextgeneric.dev/print.html#extension-traits
Itertoolshttps://docs.rs/itertools/latest/itertools/trait.Itertools.html
StreamExthttps://docs.rs/futures/latest/futures/stream/trait.StreamExt.html
Overriding Blanket Implementationshttps://patterns.contextgeneric.dev/print.html#overriding-blanket-implementations
Conflicting Implementationshttps://patterns.contextgeneric.dev/print.html#conflicting-implementations
trait specializationhttps://rust-lang.github.io/rfcs/1210-impl-specialization.html
Limitations of Blanket Implementationshttps://patterns.contextgeneric.dev/print.html#limitations-of-blanket-implementations
Impl-side Dependencieshttps://patterns.contextgeneric.dev/print.html#impl-side-dependencies
Itertools::joinhttps://docs.rs/itertools/latest/itertools/trait.Itertools.html#method.join
Constraint Leakshttps://patterns.contextgeneric.dev/print.html#constraint-leaks
Hiding Constraints with Traits and Blanket Implementationshttps://patterns.contextgeneric.dev/print.html#hiding-constraints-with-traits-and-blanket-implementations
Nested Constraints Hidinghttps://patterns.contextgeneric.dev/print.html#nested-constraints-hiding
higher ranked trait bounds (HRTB)https://doc.rust-lang.org/nomicon/hrtb.html
IntoIterator::into_iterhttps://doc.rust-lang.org/std/iter/trait.IntoIterator.html#tymethod.into_iter
Dependency Injectionhttps://patterns.contextgeneric.dev/print.html#dependency-injection
Provider Traitshttps://patterns.contextgeneric.dev/print.html#provider-traits
blanket implementationshttps://patterns.contextgeneric.dev/blanket-implementations.html
impl-side dependencieshttps://patterns.contextgeneric.dev/impl-side-dependencies.html
providershttps://patterns.contextgeneric.dev/provider.html
consumershttps://patterns.contextgeneric.dev/consumer.html
ToStringhttps://doc.rust-lang.org/std/string/trait.ToString.html
Using Provider Traits Directlyhttps://patterns.contextgeneric.dev/print.html#using-provider-traits-directly
Beyond String Formattinghttps://patterns.contextgeneric.dev/print.html#beyond-string-formatting
anyhow::Errorhttps://docs.rs/anyhow/latest/anyhow/struct.Error.html
later chaptershttps://patterns.contextgeneric.dev/error-handling.html
previous chapterhttps://patterns.contextgeneric.dev/impl-side-dependencies.html
Serializehttps://docs.rs/serde/latest/serde/trait.Serialize.html
Linking Consumers with Providershttps://patterns.contextgeneric.dev/print.html#linking-consumers-with-providers
previous chapterhttps://patterns.contextgeneric.dev/provider-traits.html
Implementing Consumer Traitshttps://patterns.contextgeneric.dev/print.html#implementing-consumer-traits
Blanket Consumer Trait Implementationhttps://patterns.contextgeneric.dev/print.html#blanket-consumer-trait-implementation
Component Systemhttps://patterns.contextgeneric.dev/print.html#component-system
Provider Delegationhttps://patterns.contextgeneric.dev/print.html#provider-delegation
Implementing Multiple Providershttps://patterns.contextgeneric.dev/print.html#implementing-multiple-providers
1https://patterns.contextgeneric.dev/print.html#footnote-error
2https://patterns.contextgeneric.dev/print.html#footnote-encoding
Linking Multiple Providers to a Concrete Contexthttps://patterns.contextgeneric.dev/print.html#linking-multiple-providers-to-a-concrete-context
Blanket Provider Implementationhttps://patterns.contextgeneric.dev/print.html#blanket-provider-implementation
Using DelegateComponenthttps://patterns.contextgeneric.dev/print.html#using-delegatecomponent
Switching Provider Implementationshttps://patterns.contextgeneric.dev/print.html#switching-provider-implementations
future chaptershttps://patterns.contextgeneric.dev/error-handling.html
anyhow::Errorhttps://docs.rs/anyhow/latest/anyhow/struct.Error.html
https://patterns.contextgeneric.dev/print.html#fr-error-1
https://patterns.contextgeneric.dev/print.html#fr-encoding-1
Debugging Supporthttps://patterns.contextgeneric.dev/print.html#debugging-support
impl-side dependencieshttps://patterns.contextgeneric.dev/impl-side-dependencies.html
previous chapterhttps://patterns.contextgeneric.dev/provider-delegation.html
Unsatisfied Dependency Errorshttps://patterns.contextgeneric.dev/print.html#unsatisfied-dependency-errors
previous chapterhttps://patterns.contextgeneric.dev/provider-delegation.html
IsProviderFor Traithttps://patterns.contextgeneric.dev/print.html#isproviderfor-trait
Propagating IsProviderFor Constraintshttps://patterns.contextgeneric.dev/print.html#propagating-isproviderfor-constraints
Check Traitshttps://patterns.contextgeneric.dev/print.html#check-traits
CanUseComponent Traithttps://patterns.contextgeneric.dev/print.html#canusecomponent-trait
Limitationshttps://patterns.contextgeneric.dev/print.html#limitations
next chapterhttps://patterns.contextgeneric.dev/component-macros.html
Interactive Debugging with Argushttps://patterns.contextgeneric.dev/print.html#interactive-debugging-with-argus
Argushttps://cel.cs.brown.edu/paper/an-interactive-debugger-for-rust-trait-errors/
Conclusionhttps://patterns.contextgeneric.dev/print.html#conclusion
Component Macroshttps://patterns.contextgeneric.dev/print.html#component-macros
#[cgp_component] Macrohttps://patterns.contextgeneric.dev/print.html#cgp_component-macro
cgphttps://docs.rs/cgp
delegate_components! Macrohttps://patterns.contextgeneric.dev/print.html#delegate_components-macro
#[cgp_context] Macrohttps://patterns.contextgeneric.dev/print.html#cgp_context-macro
#[cgp_provider] Macrohttps://patterns.contextgeneric.dev/print.html#cgp_provider-macro
check_components! Macrohttps://patterns.contextgeneric.dev/print.html#check_components-macro
delegate_and_check_components! Macrohttps://patterns.contextgeneric.dev/print.html#delegate_and_check_components-macro
Example Usehttps://patterns.contextgeneric.dev/print.html#example-use
previous chapterhttps://patterns.contextgeneric.dev/provider-delegation.html
CGP Macros as Language Extensionhttps://patterns.contextgeneric.dev/print.html#cgp-macros-as-language-extension
Associated Typeshttps://patterns.contextgeneric.dev/print.html#associated-types
Building Authentication Componentshttps://patterns.contextgeneric.dev/print.html#building-authentication-components
Abstract Typeshttps://patterns.contextgeneric.dev/print.html#abstract-types
Defining Abstract Type Traits with #[cgp_type]https://patterns.contextgeneric.dev/print.html#defining-abstract-type-traits-with-cgp_type
Impl-Side Associated Type Constraintshttps://patterns.contextgeneric.dev/print.html#impl-side-associated-type-constraints
Type Providershttps://patterns.contextgeneric.dev/print.html#type-providers
datetime::LocalDateTimehttps://docs.rs/datetime/latest/datetime/struct.LocalDateTime.html
Comparison to Newtype Patternhttps://patterns.contextgeneric.dev/print.html#comparison-to-newtype-pattern
Comparison to Newtype Patternhttps://patterns.contextgeneric.dev/print.html#comparison-to-newtype-pattern-1
The UseType Patternhttps://patterns.contextgeneric.dev/print.html#the-usetype-pattern
Putting It Altogetherhttps://patterns.contextgeneric.dev/print.html#putting-it-altogether
Error Handlinghttps://patterns.contextgeneric.dev/print.html#error-handling
anyhowhttps://docs.rs/anyhow
Abstract Error Typehttps://patterns.contextgeneric.dev/print.html#abstract-error-type
Raising Errors With Fromhttps://patterns.contextgeneric.dev/print.html#raising-errors-with-from
Raising Errors using CanRaiseErrorhttps://patterns.contextgeneric.dev/print.html#raising-errors-using-canraiseerror
Context-Generic Error Raisershttps://patterns.contextgeneric.dev/print.html#context-generic-error-raisers
The cgp-error-anyhow Cratehttps://patterns.contextgeneric.dev/print.html#the-cgp-error-anyhow-crate
cgp-error-anyhowhttps://docs.rs/cgp-error-anyhow
cgp-error-eyrehttps://docs.rs/cgp-error-eyre
cgp-error-stdhttps://docs.rs/cgp-error-std
Putting It Altogetherhttps://patterns.contextgeneric.dev/print.html#putting-it-altogether-1
Conclusionhttps://patterns.contextgeneric.dev/print.html#conclusion-1
Delegated Error Raisershttps://patterns.contextgeneric.dev/print.html#delegated-error-raisers
Ad Hoc Error Raisershttps://patterns.contextgeneric.dev/print.html#ad-hoc-error-raisers
UseDelegate Patternhttps://patterns.contextgeneric.dev/print.html#usedelegate-pattern
provider delegationhttps://patterns.contextgeneric.dev/provider-delegation.html
Forwarding Error Raiserhttps://patterns.contextgeneric.dev/print.html#forwarding-error-raiser
Full Examplehttps://patterns.contextgeneric.dev/print.html#full-example
Wiring Checkshttps://patterns.contextgeneric.dev/print.html#wiring-checks
debugging techniqueshttps://patterns.contextgeneric.dev/debugging-techniques.html
Conclusionhttps://patterns.contextgeneric.dev/print.html#conclusion-2
Error Reportinghttps://patterns.contextgeneric.dev/print.html#error-reporting
previous chapter on error handlinghttps://patterns.contextgeneric.dev/error-handling.html
Reporting Errors with Abstract Typeshttps://patterns.contextgeneric.dev/print.html#reporting-errors-with-abstract-types
Source Error Types with Abstract Fieldshttps://patterns.contextgeneric.dev/print.html#source-error-types-with-abstract-fields
higher ranked trait boundhttps://doc.rust-lang.org/nomicon/hrtb.html
Error Report Raisershttps://patterns.contextgeneric.dev/print.html#error-report-raisers
previous chapterhttps://patterns.contextgeneric.dev/delegated-error-raiser.html
Context-Specific Error Detailshttps://patterns.contextgeneric.dev/print.html#context-specific-error-details
Conclusionhttps://patterns.contextgeneric.dev/print.html#conclusion-3
Error Wrappinghttps://patterns.contextgeneric.dev/print.html#error-wrapping
contexthttps://docs.rs/anyhow/latest/anyhow/struct.Error.html#method.context
wrap_errhttps://docs.rs/eyre/latest/eyre/struct.Report.html#method.wrap_err
Example: Config Loaderhttps://patterns.contextgeneric.dev/print.html#example-config-loader
Error Wrapperhttps://patterns.contextgeneric.dev/print.html#error-wrapper
previous chapterhttps://patterns.contextgeneric.dev/error-reporting.html
Structured Error Wrappinghttps://patterns.contextgeneric.dev/print.html#structured-error-wrapping
previous chapterhttps://patterns.contextgeneric.dev/error-reporting.html
Full Examplehttps://patterns.contextgeneric.dev/print.html#full-example-1
Delegated Error Wrappinghttps://patterns.contextgeneric.dev/print.html#delegated-error-wrapping
delegated error raisershttps://patterns.contextgeneric.dev/delegated-error-raiser.html
Conclusionhttps://patterns.contextgeneric.dev/print.html#conclusion-4
Field Accessorshttps://patterns.contextgeneric.dev/print.html#field-accessors
Example: API Callhttps://patterns.contextgeneric.dev/print.html#example-api-call
associated typeshttps://patterns.contextgeneric.dev/associated-types.html
error handlinghttps://patterns.contextgeneric.dev/error-handling.html
reqwesthttps://docs.rs/reqwest
Getting the Base API URLhttps://patterns.contextgeneric.dev/print.html#getting-the-base-api-url
url::Urlhttps://docs.rs/url/latest/url/struct.Url.html
Getting the Auth Tokenhttps://patterns.contextgeneric.dev/print.html#getting-the-auth-token
earlier chapterhttps://patterns.contextgeneric.dev/associated-types.html
bearer_authhttps://docs.rs/reqwest/latest/reqwest/blocking/struct.RequestBuilder.html#method.bearer_auth
Traits with Multiple Getter Methodshttps://patterns.contextgeneric.dev/print.html#traits-with-multiple-getter-methods
UseFieldhttps://patterns.contextgeneric.dev/use-field-pattern.html
Implementing Accessor Providershttps://patterns.contextgeneric.dev/print.html#implementing-accessor-providers
Context-Generic Accessor Providershttps://patterns.contextgeneric.dev/print.html#context-generic-accessor-providers
Symbolshttps://patterns.contextgeneric.dev/print.html#symbols
const genericshttps://blog.rust-lang.org/2021/02/26/const-generics-mvp-beta.html
Auto Accessor Traitshttps://patterns.contextgeneric.dev/print.html#auto-accessor-traits
The #[cgp_auto_getter] Macrohttps://patterns.contextgeneric.dev/print.html#the-cgp_auto_getter-macro
Using HasField in Accessor Providershttps://patterns.contextgeneric.dev/print.html#using-hasfield-in-accessor-providers
The UseFields Patternhttps://patterns.contextgeneric.dev/print.html#the-usefields-pattern
The #[cgp_getter] Macrohttps://patterns.contextgeneric.dev/print.html#the-cgp_getter-macro
Static Accessorshttps://patterns.contextgeneric.dev/print.html#static-accessors
OnceLockhttps://doc.rust-lang.org/std/sync/struct.OnceLock.html
Using HasField Directly Inside Providershttps://patterns.contextgeneric.dev/print.html#using-hasfield-directly-inside-providers
The UseField Patternhttps://patterns.contextgeneric.dev/print.html#the-usefield-pattern
UseDelegate patternhttps://patterns.contextgeneric.dev/delegated-error-raiser.html
Deriving UseField from #[cgp_getter]https://patterns.contextgeneric.dev/print.html#deriving-usefield-from-cgp_getter
Conclusionhttps://patterns.contextgeneric.dev/print.html#conclusion-5

Viewport: width=device-width, initial-scale=1

Robots: noindex


URLs of crawlers that visited me.