diff --git a/CHANGELOG.md b/CHANGELOG.md index 7166aea..ed54292 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ## v0.3.0 (pre-release) +- Reorganize crate exports - [#53](https://github.com/contextgeneric/cgp/pull/53) + - Move generic error providers to the `cgp-error-extra` crate. + - Add an `alloc` feature to `cgp-error-extra` to enable use of `alloc` in providers. + - Make private the sub-modules inside CGP crates. + - Explicitly export module items instead of using `*`. + - Move `cgp-inner` to `cgp-extra` - [#51](https://github.com/contextgeneric/cgp/pull/51) - Remove re-export of `cgp-inner` from `cgp-core`. - Re-export `cgp-inner` and `cgp-runtime` from `cgp-extra`. diff --git a/Cargo.lock b/Cargo.lock index ea0b199..0214ad3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -87,6 +87,13 @@ dependencies = [ "cgp-core", ] +[[package]] +name = "cgp-error-extra" +version = "0.2.0" +dependencies = [ + "cgp-error", +] + [[package]] name = "cgp-error-eyre" version = "0.2.0" @@ -106,6 +113,7 @@ dependencies = [ name = "cgp-extra" version = "0.2.0" dependencies = [ + "cgp-error-extra", "cgp-inner", "cgp-run", "cgp-runtime", diff --git a/Cargo.toml b/Cargo.toml index 966e02b..ff9c188 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,6 +17,7 @@ members = [ "crates/cgp-field-macro", "crates/cgp-field-macro-lib", "crates/cgp-error", + "crates/cgp-error-extra", "crates/cgp-error-anyhow", "crates/cgp-error-eyre", "crates/cgp-error-std", @@ -48,6 +49,7 @@ cgp-field = { path = "./crates/cgp-field" } cgp-field-macro = { path = "./crates/cgp-field-macro" } cgp-field-macro-lib = { path = "./crates/cgp-field-macro-lib" } cgp-error = { path = "./crates/cgp-error" } +cgp-error-extra = { path = "./crates/cgp-error-extra" } cgp-run = { path = "./crates/cgp-run" } cgp-runtime = { path = "./crates/cgp-runtime" } cgp-inner = { path = "./crates/cgp-inner" } diff --git a/crates/cgp-async-macro/src/strip_async.rs b/crates/cgp-async-macro/src/strip_async.rs index d0e61ee..57c8824 100644 --- a/crates/cgp-async-macro/src/strip_async.rs +++ b/crates/cgp-async-macro/src/strip_async.rs @@ -1,4 +1,5 @@ use alloc::vec::Vec; + use proc_macro2::{Group, TokenStream, TokenTree}; use syn::parse::{Parse, ParseStream}; use syn::token::{Async, Await, Dot, Fn}; diff --git a/crates/cgp-async/src/lib.rs b/crates/cgp-async/src/lib.rs index 3e05e85..82224f5 100644 --- a/crates/cgp-async/src/lib.rs +++ b/crates/cgp-async/src/lib.rs @@ -2,10 +2,8 @@ pub mod traits; -pub use traits::{Async, MaybeSend, MaybeStatic, MaybeSync}; - #[cfg(feature = "async")] pub use cgp_async_macro::native_async as async_trait; - #[cfg(not(feature = "async"))] pub use cgp_sync::async_trait; +pub use traits::{Async, MaybeSend, MaybeStatic, MaybeSync}; diff --git a/crates/cgp-component-macro-lib/src/delegate_components/impl_delegate.rs b/crates/cgp-component-macro-lib/src/delegate_components/impl_delegate.rs index f61809b..ce4e34e 100644 --- a/crates/cgp-component-macro-lib/src/delegate_components/impl_delegate.rs +++ b/crates/cgp-component-macro-lib/src/delegate_components/impl_delegate.rs @@ -1,6 +1,7 @@ use alloc::boxed::Box; use alloc::vec; use alloc::vec::Vec; + use syn::{parse_quote, Generics, ImplItem, ImplItemType, ItemImpl, Path, Type}; use crate::delegate_components::ast::{ComponentAst, DelegateEntriesAst}; diff --git a/crates/cgp-component-macro-lib/src/derive_component/component_spec.rs b/crates/cgp-component-macro-lib/src/derive_component/component_spec.rs index 6769568..d7c721a 100644 --- a/crates/cgp-component-macro-lib/src/derive_component/component_spec.rs +++ b/crates/cgp-component-macro-lib/src/derive_component/component_spec.rs @@ -1,4 +1,5 @@ use alloc::format; + use proc_macro2::Span; use quote::ToTokens; use syn::parse::{Parse, ParseStream}; diff --git a/crates/cgp-component-macro-lib/src/derive_component/consumer_impl.rs b/crates/cgp-component-macro-lib/src/derive_component/consumer_impl.rs index 7b4b7a8..a5e8518 100644 --- a/crates/cgp-component-macro-lib/src/derive_component/consumer_impl.rs +++ b/crates/cgp-component-macro-lib/src/derive_component/consumer_impl.rs @@ -1,5 +1,6 @@ use alloc::boxed::Box; use alloc::vec::Vec; + use syn::punctuated::Punctuated; use syn::token::{Brace, Comma, For, Impl, Plus}; use syn::{ diff --git a/crates/cgp-component-macro-lib/src/derive_component/delegate_fn.rs b/crates/cgp-component-macro-lib/src/derive_component/delegate_fn.rs index 28e3c16..a50899a 100644 --- a/crates/cgp-component-macro-lib/src/derive_component/delegate_fn.rs +++ b/crates/cgp-component-macro-lib/src/derive_component/delegate_fn.rs @@ -1,4 +1,5 @@ use alloc::vec::Vec; + use proc_macro2::TokenStream; use quote::quote; use syn::{parse_quote, ImplItemFn, Signature, TypePath, Visibility}; diff --git a/crates/cgp-component-macro-lib/src/derive_component/provider_impl.rs b/crates/cgp-component-macro-lib/src/derive_component/provider_impl.rs index e16be9b..8e500f6 100644 --- a/crates/cgp-component-macro-lib/src/derive_component/provider_impl.rs +++ b/crates/cgp-component-macro-lib/src/derive_component/provider_impl.rs @@ -1,5 +1,6 @@ use alloc::boxed::Box; use alloc::vec::Vec; + use proc_macro2::Span; use syn::punctuated::Punctuated; use syn::token::{Brace, Comma, For, Impl, Plus}; diff --git a/crates/cgp-component-macro-lib/src/derive_component/provider_trait.rs b/crates/cgp-component-macro-lib/src/derive_component/provider_trait.rs index 518d44b..458b5c3 100644 --- a/crates/cgp-component-macro-lib/src/derive_component/provider_trait.rs +++ b/crates/cgp-component-macro-lib/src/derive_component/provider_trait.rs @@ -1,4 +1,5 @@ use alloc::vec::Vec; + use syn::punctuated::Punctuated; use syn::{parse_quote, Ident, ItemTrait, TraitItem}; diff --git a/crates/cgp-component-macro-lib/src/derive_component/replace_self_type.rs b/crates/cgp-component-macro-lib/src/derive_component/replace_self_type.rs index 16711fe..b259fa7 100644 --- a/crates/cgp-component-macro-lib/src/derive_component/replace_self_type.rs +++ b/crates/cgp-component-macro-lib/src/derive_component/replace_self_type.rs @@ -1,4 +1,5 @@ use alloc::vec::Vec; + use itertools::Itertools; use proc_macro2::{Group, Ident, TokenStream, TokenTree}; use quote::{format_ident, ToTokens}; diff --git a/crates/cgp-component-macro-lib/src/derive_component/snake_case.rs b/crates/cgp-component-macro-lib/src/derive_component/snake_case.rs index 10d0298..dcb69d9 100644 --- a/crates/cgp-component-macro-lib/src/derive_component/snake_case.rs +++ b/crates/cgp-component-macro-lib/src/derive_component/snake_case.rs @@ -1,4 +1,5 @@ use alloc::string::{String, ToString}; + use proc_macro2::Span; use syn::Ident; diff --git a/crates/cgp-component-macro-lib/src/for_each_replace.rs b/crates/cgp-component-macro-lib/src/for_each_replace.rs index f9e0fc2..09fa70c 100644 --- a/crates/cgp-component-macro-lib/src/for_each_replace.rs +++ b/crates/cgp-component-macro-lib/src/for_each_replace.rs @@ -1,4 +1,5 @@ use alloc::vec::Vec; + use proc_macro2::{Group, TokenStream, TokenTree}; use quote::{quote, ToTokens}; use syn::__private::parse_brackets; diff --git a/crates/cgp-component-macro-lib/src/preset/define_preset.rs b/crates/cgp-component-macro-lib/src/preset/define_preset.rs index 4af3ae7..e7ac67b 100644 --- a/crates/cgp-component-macro-lib/src/preset/define_preset.rs +++ b/crates/cgp-component-macro-lib/src/preset/define_preset.rs @@ -1,5 +1,6 @@ use alloc::format; use alloc::string::ToString; + use proc_macro2::{Span, TokenStream}; use quote::ToTokens; use syn::{parse_quote, Ident, ItemTrait}; diff --git a/crates/cgp-component-macro-lib/src/preset/impl_is_preset.rs b/crates/cgp-component-macro-lib/src/preset/impl_is_preset.rs index 1168cd3..490ab5d 100644 --- a/crates/cgp-component-macro-lib/src/preset/impl_is_preset.rs +++ b/crates/cgp-component-macro-lib/src/preset/impl_is_preset.rs @@ -1,4 +1,5 @@ use alloc::vec::Vec; + use syn::{parse_quote, Generics, Ident, ItemImpl, Type}; use crate::delegate_components::ast::{ComponentAst, DelegateEntriesAst}; diff --git a/crates/cgp-component-macro-lib/src/tests/helper/format.rs b/crates/cgp-component-macro-lib/src/tests/helper/format.rs index 2e23f5a..0dc2cb9 100644 --- a/crates/cgp-component-macro-lib/src/tests/helper/format.rs +++ b/crates/cgp-component-macro-lib/src/tests/helper/format.rs @@ -1,4 +1,5 @@ use alloc::string::{String, ToString}; + use prettyplease::unparse; use proc_macro2::TokenStream; use syn::parse_file; diff --git a/crates/cgp-component/src/lib.rs b/crates/cgp-component/src/lib.rs index bd1cb97..76e55a0 100644 --- a/crates/cgp-component/src/lib.rs +++ b/crates/cgp-component/src/lib.rs @@ -4,8 +4,8 @@ This crate defines the core CGP traits, [`DelegateComponent`] and [`HasComponents`]. */ -pub mod traits; -pub mod types; +mod traits; +mod types; pub use traits::{DelegateComponent, HasComponents}; pub use types::{UseContext, UseDelegate, WithContext, WithProvider}; diff --git a/crates/cgp-component/src/traits/mod.rs b/crates/cgp-component/src/traits/mod.rs index c610346..78c3209 100644 --- a/crates/cgp-component/src/traits/mod.rs +++ b/crates/cgp-component/src/traits/mod.rs @@ -1,5 +1,5 @@ -pub mod delegate_component; -pub mod has_components; +mod delegate_component; +mod has_components; pub use delegate_component::DelegateComponent; pub use has_components::HasComponents; diff --git a/crates/cgp-component/src/types/mod.rs b/crates/cgp-component/src/types/mod.rs index 7d195c7..b925781 100644 --- a/crates/cgp-component/src/types/mod.rs +++ b/crates/cgp-component/src/types/mod.rs @@ -1,6 +1,6 @@ -pub mod use_context; -pub mod use_delegate; -pub mod with_provider; +mod use_context; +mod use_delegate; +mod with_provider; pub use use_context::{UseContext, WithContext}; pub use use_delegate::UseDelegate; diff --git a/crates/cgp-core/src/prelude.rs b/crates/cgp-core/src/prelude.rs index b63db7d..fa79baf 100644 --- a/crates/cgp-core/src/prelude.rs +++ b/crates/cgp-core/src/prelude.rs @@ -3,6 +3,6 @@ pub use cgp_component::{DelegateComponent, HasComponents}; pub use cgp_component_macro::{ cgp_component, cgp_preset, delegate_components, for_each_replace, replace_with, }; -pub use cgp_error::traits::{CanRaiseError, CanWrapError, HasErrorType}; +pub use cgp_error::{CanRaiseError, CanWrapError, HasErrorType}; pub use cgp_field::{Char, Cons, Either, HasField, HasFieldMut, Nil, Void}; pub use cgp_field_macro::{product, symbol, HasField, Product, Sum}; diff --git a/crates/cgp-error-anyhow/src/impls/mod.rs b/crates/cgp-error-anyhow/src/impls/mod.rs index 90a10d8..3cbeef8 100644 --- a/crates/cgp-error-anyhow/src/impls/mod.rs +++ b/crates/cgp-error-anyhow/src/impls/mod.rs @@ -1,9 +1,9 @@ -pub mod debug_error; -pub mod display_error; -pub mod raise_anyhow_error; -pub mod use_anyhow_error; +mod debug_error; +mod display_error; +mod raise_anyhow_error; +mod use_anyhow_error; -pub use debug_error::*; -pub use display_error::*; -pub use raise_anyhow_error::*; -pub use use_anyhow_error::*; +pub use debug_error::DebugAnyhowError; +pub use display_error::DisplayAnyhowError; +pub use raise_anyhow_error::RaiseAnyhowError; +pub use use_anyhow_error::UseAnyhowError; diff --git a/crates/cgp-error-anyhow/src/lib.rs b/crates/cgp-error-anyhow/src/lib.rs index e00dca4..e89b160 100644 --- a/crates/cgp-error-anyhow/src/lib.rs +++ b/crates/cgp-error-anyhow/src/lib.rs @@ -1,5 +1,5 @@ #![no_std] -pub mod impls; +mod impls; -pub use impls::*; +pub use impls::{DebugAnyhowError, DisplayAnyhowError, RaiseAnyhowError, UseAnyhowError}; diff --git a/crates/cgp-error-extra/Cargo.toml b/crates/cgp-error-extra/Cargo.toml new file mode 100644 index 0000000..a795cbe --- /dev/null +++ b/crates/cgp-error-extra/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "cgp-error-extra" +version = "0.2.0" +edition = { workspace = true } +license = { workspace = true } +repository = { workspace = true } +authors = { workspace = true } +rust-version = { workspace = true } +keywords = { workspace = true } +description = """ + Context-generic programming error components +""" + +[features] +default = [ "alloc" ] +alloc = [] + +[dependencies] +cgp-error = { version = "0.2.0" } diff --git a/crates/cgp-error/src/impls/debug_error.rs b/crates/cgp-error-extra/src/impls/alloc/debug_error.rs similarity index 86% rename from crates/cgp-error/src/impls/debug_error.rs rename to crates/cgp-error-extra/src/impls/alloc/debug_error.rs index aecf14f..8e49634 100644 --- a/crates/cgp-error/src/impls/debug_error.rs +++ b/crates/cgp-error-extra/src/impls/alloc/debug_error.rs @@ -2,7 +2,7 @@ use alloc::format; use alloc::string::String; use core::fmt::Debug; -use crate::traits::{CanRaiseError, ErrorRaiser}; +use cgp_error::{CanRaiseError, ErrorRaiser}; pub struct DebugError; diff --git a/crates/cgp-error/src/impls/display_error.rs b/crates/cgp-error-extra/src/impls/alloc/display_error.rs similarity index 86% rename from crates/cgp-error/src/impls/display_error.rs rename to crates/cgp-error-extra/src/impls/alloc/display_error.rs index 96e0861..5e46cd2 100644 --- a/crates/cgp-error/src/impls/display_error.rs +++ b/crates/cgp-error-extra/src/impls/alloc/display_error.rs @@ -2,7 +2,7 @@ use alloc::format; use alloc::string::String; use core::fmt::Display; -use crate::traits::{CanRaiseError, ErrorRaiser}; +use cgp_error::{CanRaiseError, ErrorRaiser}; pub struct DisplayError; diff --git a/crates/cgp-error-extra/src/impls/alloc/mod.rs b/crates/cgp-error-extra/src/impls/alloc/mod.rs new file mode 100644 index 0000000..43d1d6e --- /dev/null +++ b/crates/cgp-error-extra/src/impls/alloc/mod.rs @@ -0,0 +1,5 @@ +mod debug_error; +mod display_error; + +pub use debug_error::DebugError; +pub use display_error::DisplayError; diff --git a/crates/cgp-error/src/impls/discard_detail.rs b/crates/cgp-error-extra/src/impls/discard_detail.rs similarity index 82% rename from crates/cgp-error/src/impls/discard_detail.rs rename to crates/cgp-error-extra/src/impls/discard_detail.rs index 30aa7bd..c910b8c 100644 --- a/crates/cgp-error/src/impls/discard_detail.rs +++ b/crates/cgp-error-extra/src/impls/discard_detail.rs @@ -1,4 +1,4 @@ -use crate::traits::{ErrorWrapper, HasErrorType}; +use cgp_error::{ErrorWrapper, HasErrorType}; pub struct DiscardDetail; diff --git a/crates/cgp-error/src/impls/infallible.rs b/crates/cgp-error-extra/src/impls/infallible.rs similarity index 83% rename from crates/cgp-error/src/impls/infallible.rs rename to crates/cgp-error-extra/src/impls/infallible.rs index f0e6f67..664b9f5 100644 --- a/crates/cgp-error/src/impls/infallible.rs +++ b/crates/cgp-error-extra/src/impls/infallible.rs @@ -1,6 +1,6 @@ use core::convert::Infallible; -use crate::traits::{ErrorRaiser, HasErrorType}; +use cgp_error::{ErrorRaiser, HasErrorType}; pub struct RaiseInfallible; diff --git a/crates/cgp-error-extra/src/impls/mod.rs b/crates/cgp-error-extra/src/impls/mod.rs new file mode 100644 index 0000000..a85689f --- /dev/null +++ b/crates/cgp-error-extra/src/impls/mod.rs @@ -0,0 +1,17 @@ +#[cfg(feature = "alloc")] +mod alloc; + +mod discard_detail; +mod infallible; +mod panic_error; +mod raise_from; +mod return_error; + +#[cfg(feature = "alloc")] +pub use alloc::{DebugError, DisplayError}; + +pub use discard_detail::DiscardDetail; +pub use infallible::RaiseInfallible; +pub use panic_error::PanicOnError; +pub use raise_from::RaiseFrom; +pub use return_error::ReturnError; diff --git a/crates/cgp-error/src/impls/panic_error.rs b/crates/cgp-error-extra/src/impls/panic_error.rs similarity index 82% rename from crates/cgp-error/src/impls/panic_error.rs rename to crates/cgp-error-extra/src/impls/panic_error.rs index b9d78d4..1990def 100644 --- a/crates/cgp-error/src/impls/panic_error.rs +++ b/crates/cgp-error-extra/src/impls/panic_error.rs @@ -1,6 +1,6 @@ use core::fmt::Debug; -use crate::traits::{ErrorRaiser, HasErrorType}; +use cgp_error::{ErrorRaiser, HasErrorType}; pub struct PanicOnError; diff --git a/crates/cgp-error/src/impls/raise_from.rs b/crates/cgp-error-extra/src/impls/raise_from.rs similarity index 81% rename from crates/cgp-error/src/impls/raise_from.rs rename to crates/cgp-error-extra/src/impls/raise_from.rs index 21bf3f0..8662df6 100644 --- a/crates/cgp-error/src/impls/raise_from.rs +++ b/crates/cgp-error-extra/src/impls/raise_from.rs @@ -1,4 +1,4 @@ -use crate::traits::{ErrorRaiser, HasErrorType}; +use cgp_error::{ErrorRaiser, HasErrorType}; pub struct RaiseFrom; diff --git a/crates/cgp-error/src/impls/return_error.rs b/crates/cgp-error-extra/src/impls/return_error.rs similarity index 78% rename from crates/cgp-error/src/impls/return_error.rs rename to crates/cgp-error-extra/src/impls/return_error.rs index 47ff60a..a27cc07 100644 --- a/crates/cgp-error/src/impls/return_error.rs +++ b/crates/cgp-error-extra/src/impls/return_error.rs @@ -1,4 +1,4 @@ -use crate::traits::{ErrorRaiser, HasErrorType}; +use cgp_error::{ErrorRaiser, HasErrorType}; pub struct ReturnError; diff --git a/crates/cgp-error-extra/src/lib.rs b/crates/cgp-error-extra/src/lib.rs new file mode 100644 index 0000000..5cefbc5 --- /dev/null +++ b/crates/cgp-error-extra/src/lib.rs @@ -0,0 +1,10 @@ +#![no_std] + +#[cfg(feature = "alloc")] +extern crate alloc; + +mod impls; + +#[cfg(feature = "alloc")] +pub use impls::{DebugError, DisplayError}; +pub use impls::{DiscardDetail, PanicOnError, RaiseFrom, RaiseInfallible, ReturnError}; diff --git a/crates/cgp-error-eyre/src/impls/mod.rs b/crates/cgp-error-eyre/src/impls/mod.rs index e4eba7f..9b929e0 100644 --- a/crates/cgp-error-eyre/src/impls/mod.rs +++ b/crates/cgp-error-eyre/src/impls/mod.rs @@ -1,9 +1,9 @@ -pub mod debug_error; -pub mod display_error; -pub mod raise_eyre_error; -pub mod use_eyre_error; +mod debug_error; +mod display_error; +mod raise_eyre_error; +mod use_eyre_error; -pub use debug_error::*; -pub use display_error::*; -pub use raise_eyre_error::*; -pub use use_eyre_error::*; +pub use debug_error::DebugEyreError; +pub use display_error::DisplayEyreError; +pub use raise_eyre_error::RaiseEyreError; +pub use use_eyre_error::UseEyreError; diff --git a/crates/cgp-error-eyre/src/lib.rs b/crates/cgp-error-eyre/src/lib.rs index e00dca4..85f307e 100644 --- a/crates/cgp-error-eyre/src/lib.rs +++ b/crates/cgp-error-eyre/src/lib.rs @@ -1,5 +1,5 @@ #![no_std] -pub mod impls; +mod impls; -pub use impls::*; +pub use impls::{DebugEyreError, DisplayEyreError, RaiseEyreError, UseEyreError}; diff --git a/crates/cgp-error-std/src/impls/debug_error.rs b/crates/cgp-error-std/src/impls/debug_error.rs index 90c6558..cd7924c 100644 --- a/crates/cgp-error-std/src/impls/debug_error.rs +++ b/crates/cgp-error-std/src/impls/debug_error.rs @@ -1,7 +1,7 @@ -use core::fmt::Debug; - use alloc::boxed::Box; use alloc::format; +use core::fmt::Debug; + use cgp_core::error::{ErrorRaiser, HasErrorType}; use crate::types::{Error, StringError}; diff --git a/crates/cgp-error-std/src/impls/display_error.rs b/crates/cgp-error-std/src/impls/display_error.rs index 885c36e..a0ccabf 100644 --- a/crates/cgp-error-std/src/impls/display_error.rs +++ b/crates/cgp-error-std/src/impls/display_error.rs @@ -1,7 +1,7 @@ -use core::fmt::Display; - use alloc::boxed::Box; use alloc::format; +use core::fmt::Display; + use cgp_core::error::{ErrorRaiser, HasErrorType}; use crate::types::{Error, StringError}; diff --git a/crates/cgp-error-std/src/impls/mod.rs b/crates/cgp-error-std/src/impls/mod.rs index 6c3ec59..560e7db 100644 --- a/crates/cgp-error-std/src/impls/mod.rs +++ b/crates/cgp-error-std/src/impls/mod.rs @@ -1,9 +1,9 @@ -pub mod debug_error; -pub mod display_error; -pub mod raise_boxed; -pub mod use_boxed; +mod debug_error; +mod display_error; +mod raise_boxed; +mod use_boxed; -pub use debug_error::*; -pub use display_error::*; -pub use raise_boxed::*; -pub use use_boxed::*; +pub use debug_error::DebugBoxedStdError; +pub use display_error::DisplayBoxedStdError; +pub use raise_boxed::RaiseBoxedStdError; +pub use use_boxed::UseBoxedStdError; diff --git a/crates/cgp-error-std/src/lib.rs b/crates/cgp-error-std/src/lib.rs index 053cd5d..74e68d5 100644 --- a/crates/cgp-error-std/src/lib.rs +++ b/crates/cgp-error-std/src/lib.rs @@ -2,8 +2,8 @@ extern crate alloc; -pub mod impls; -pub mod types; +mod impls; +mod types; -pub use impls::*; -pub use types::*; +pub use impls::{DebugBoxedStdError, DisplayBoxedStdError, RaiseBoxedStdError, UseBoxedStdError}; +pub use types::{Error, StringError}; diff --git a/crates/cgp-error-std/src/types/mod.rs b/crates/cgp-error-std/src/types/mod.rs index 73715e6..a7d0deb 100644 --- a/crates/cgp-error-std/src/types/mod.rs +++ b/crates/cgp-error-std/src/types/mod.rs @@ -1,5 +1,5 @@ -pub mod error; -pub mod string; +mod error; +mod string; -pub use error::*; -pub use string::*; +pub use error::Error; +pub use string::StringError; diff --git a/crates/cgp-error-std/src/types/string.rs b/crates/cgp-error-std/src/types/string.rs index 1a6fd6a..3a25653 100644 --- a/crates/cgp-error-std/src/types/string.rs +++ b/crates/cgp-error-std/src/types/string.rs @@ -1,8 +1,7 @@ +use alloc::string::String; use core::error::Error; use core::fmt::{Debug, Display}; -use alloc::string::String; - pub struct StringError { pub message: String, } diff --git a/crates/cgp-error/src/impls/mod.rs b/crates/cgp-error/src/impls/mod.rs deleted file mode 100644 index 521e465..0000000 --- a/crates/cgp-error/src/impls/mod.rs +++ /dev/null @@ -1,15 +0,0 @@ -pub mod debug_error; -pub mod discard_detail; -pub mod display_error; -pub mod infallible; -pub mod panic_error; -pub mod raise_from; -pub mod return_error; - -pub use debug_error::*; -pub use discard_detail::*; -pub use display_error::*; -pub use infallible::*; -pub use panic_error::*; -pub use raise_from::*; -pub use return_error::*; diff --git a/crates/cgp-error/src/lib.rs b/crates/cgp-error/src/lib.rs index 21d836f..c01dae8 100644 --- a/crates/cgp-error/src/lib.rs +++ b/crates/cgp-error/src/lib.rs @@ -1,8 +1,8 @@ #![no_std] -extern crate alloc; +mod traits; -pub mod impls; -pub mod traits; - -pub use traits::*; +pub use traits::{ + CanRaiseError, CanWrapError, ErrorOf, ErrorRaiser, ErrorRaiserComponent, ErrorTypeComponent, + ErrorWrapper, ErrorWrapperComponent, HasAsyncErrorType, HasErrorType, ProvideErrorType, +}; diff --git a/crates/cgp-error/src/traits/has_error_type.rs b/crates/cgp-error/src/traits/has_error_type.rs index 53f483d..12d9d29 100644 --- a/crates/cgp-error/src/traits/has_error_type.rs +++ b/crates/cgp-error/src/traits/has_error_type.rs @@ -3,7 +3,7 @@ use core::fmt::Debug; use cgp_async::Async; use cgp_component::{DelegateComponent, HasComponents, WithProvider}; use cgp_component_macro::cgp_component; -use cgp_type::traits::has_type::ProvideType; +use cgp_type::ProvideType; /** This is used for contexts to declare that they have a _unique_ `Self::Error` type. diff --git a/crates/cgp-error/src/traits/mod.rs b/crates/cgp-error/src/traits/mod.rs index 9a55bfa..cc75e5a 100644 --- a/crates/cgp-error/src/traits/mod.rs +++ b/crates/cgp-error/src/traits/mod.rs @@ -1,9 +1,9 @@ -pub mod can_raise_error; -pub mod can_wrap_error; -pub mod has_async_error_type; -pub mod has_error_type; +mod can_raise_error; +mod can_wrap_error; +mod has_async_error_type; +mod has_error_type; -pub use can_raise_error::*; -pub use can_wrap_error::*; -pub use has_async_error_type::*; -pub use has_error_type::*; +pub use can_raise_error::{CanRaiseError, ErrorRaiser, ErrorRaiserComponent}; +pub use can_wrap_error::{CanWrapError, ErrorWrapper, ErrorWrapperComponent}; +pub use has_async_error_type::HasAsyncErrorType; +pub use has_error_type::{ErrorOf, ErrorTypeComponent, HasErrorType, ProvideErrorType}; diff --git a/crates/cgp-extra/Cargo.toml b/crates/cgp-extra/Cargo.toml index 1cd1960..a5d4f6c 100644 --- a/crates/cgp-extra/Cargo.toml +++ b/crates/cgp-extra/Cargo.toml @@ -10,8 +10,12 @@ keywords = { workspace = true } description = """ Context-generic programming extra meta-crate """ +[features] +default = [ "full" ] +full = [ "cgp-error-extra/alloc" ] [dependencies] -cgp-run = { version = "0.2.0" } -cgp-inner = { version = "0.2.0" } -cgp-runtime = { version = "0.2.0" } +cgp-error-extra = { version = "0.2.0", default-features = false } +cgp-inner = { version = "0.2.0" } +cgp-run = { version = "0.2.0" } +cgp-runtime = { version = "0.2.0" } diff --git a/crates/cgp-extra/src/lib.rs b/crates/cgp-extra/src/lib.rs index 65ae099..987fb6c 100644 --- a/crates/cgp-extra/src/lib.rs +++ b/crates/cgp-extra/src/lib.rs @@ -1,5 +1,3 @@ #![no_std] -pub use cgp_inner as inner; -pub use cgp_run as run; -pub use cgp_runtime as runtime; +pub use {cgp_error_extra as error, cgp_inner as inner, cgp_run as run, cgp_runtime as runtime}; diff --git a/crates/cgp-field-macro-lib/src/field.rs b/crates/cgp-field-macro-lib/src/field.rs index 1c4fdae..10cde88 100644 --- a/crates/cgp-field-macro-lib/src/field.rs +++ b/crates/cgp-field-macro-lib/src/field.rs @@ -1,5 +1,6 @@ use alloc::string::ToString; use alloc::vec::Vec; + use proc_macro2::TokenStream; use quote::ToTokens; use syn::{parse_quote, Fields, ItemImpl, ItemStruct}; diff --git a/crates/cgp-field-macro-lib/src/tests/helper/format.rs b/crates/cgp-field-macro-lib/src/tests/helper/format.rs index 2e23f5a..0dc2cb9 100644 --- a/crates/cgp-field-macro-lib/src/tests/helper/format.rs +++ b/crates/cgp-field-macro-lib/src/tests/helper/format.rs @@ -1,4 +1,5 @@ use alloc::string::{String, ToString}; + use prettyplease::unparse; use proc_macro2::TokenStream; use syn::parse_file; diff --git a/crates/cgp-field-macro-lib/src/tests/product.rs b/crates/cgp-field-macro-lib/src/tests/product.rs index 95f79f8..9301f19 100644 --- a/crates/cgp-field-macro-lib/src/tests/product.rs +++ b/crates/cgp-field-macro-lib/src/tests/product.rs @@ -1,4 +1,5 @@ use alloc::string::ToString; + use quote::quote; use crate::product::{make_product_expr, make_product_type, make_sum_type}; diff --git a/crates/cgp-field/src/impls/mod.rs b/crates/cgp-field/src/impls/mod.rs index ff1d069..ab6d17f 100644 --- a/crates/cgp-field/src/impls/mod.rs +++ b/crates/cgp-field/src/impls/mod.rs @@ -1 +1,3 @@ -pub mod use_field; +mod use_field; + +pub use use_field::{UseField, WithField}; diff --git a/crates/cgp-field/src/impls/use_field.rs b/crates/cgp-field/src/impls/use_field.rs index 61b7b03..fef2565 100644 --- a/crates/cgp-field/src/impls/use_field.rs +++ b/crates/cgp-field/src/impls/use_field.rs @@ -1,10 +1,9 @@ use core::marker::PhantomData; use cgp_component::WithProvider; -use cgp_type::traits::has_type::ProvideType; +use cgp_type::ProvideType; -use crate::traits::has_field::{FieldGetter, HasField}; -use crate::traits::has_field_mut::{HasFieldMut, MutFieldGetter}; +use crate::traits::{FieldGetter, HasField, HasFieldMut, MutFieldGetter}; pub struct UseField(pub PhantomData); diff --git a/crates/cgp-field/src/lib.rs b/crates/cgp-field/src/lib.rs index c549bd1..c58cf16 100644 --- a/crates/cgp-field/src/lib.rs +++ b/crates/cgp-field/src/lib.rs @@ -1,8 +1,9 @@ #![no_std] -pub mod impls; -pub mod traits; -pub mod types; +mod impls; +mod traits; +mod types; +pub use impls::{UseField, WithField}; pub use traits::{FieldGetter, HasField, HasFieldMut, MutFieldGetter}; pub use types::{Char, Cons, Either, Field, Index, Nil, Void}; diff --git a/crates/cgp-field/src/traits/has_field.rs b/crates/cgp-field/src/traits/has_field.rs index b4557a5..c0e2fa9 100644 --- a/crates/cgp-field/src/traits/has_field.rs +++ b/crates/cgp-field/src/traits/has_field.rs @@ -6,7 +6,7 @@ use cgp_component::UseContext; pub trait HasField { type Value; - fn get_field(&self, tag: PhantomData) -> &Self::Value; + fn get_field(&self, _tag: PhantomData) -> &Self::Value; } pub trait FieldGetter { diff --git a/crates/cgp-field/src/traits/mod.rs b/crates/cgp-field/src/traits/mod.rs index d4f3ffb..99aedd3 100644 --- a/crates/cgp-field/src/traits/mod.rs +++ b/crates/cgp-field/src/traits/mod.rs @@ -1,5 +1,5 @@ -pub mod has_field; -pub mod has_field_mut; +mod has_field; +mod has_field_mut; pub use has_field::{FieldGetter, HasField}; pub use has_field_mut::{HasFieldMut, MutFieldGetter}; diff --git a/crates/cgp-field/src/types/mod.rs b/crates/cgp-field/src/types/mod.rs index 61d3f99..4d2b417 100644 --- a/crates/cgp-field/src/types/mod.rs +++ b/crates/cgp-field/src/types/mod.rs @@ -1,11 +1,11 @@ -pub mod char; -pub mod field; -pub mod index; -pub mod product; -pub mod sum; +mod char; +mod field; +mod index; +mod product; +mod sum; -pub use char::*; -pub use field::*; -pub use index::*; -pub use product::*; -pub use sum::*; +pub use char::Char; +pub use field::Field; +pub use index::Index; +pub use product::{Cons, Nil}; +pub use sum::{Either, Void}; diff --git a/crates/cgp-inner/src/lib.rs b/crates/cgp-inner/src/lib.rs index 098ef26..cd27b21 100644 --- a/crates/cgp-inner/src/lib.rs +++ b/crates/cgp-inner/src/lib.rs @@ -1,7 +1,5 @@ #![no_std] -extern crate alloc; - use cgp_component::{DelegateComponent, HasComponents}; use cgp_component_macro::cgp_component; diff --git a/crates/cgp-run/src/lib.rs b/crates/cgp-run/src/lib.rs index 1e49ec0..0858a32 100644 --- a/crates/cgp-run/src/lib.rs +++ b/crates/cgp-run/src/lib.rs @@ -1,10 +1,5 @@ #![no_std] -extern crate alloc; - -#[allow(unused_imports)] -use alloc::boxed::Box; - use cgp_async::*; use cgp_component::*; use cgp_component_macro::*; diff --git a/crates/cgp-runtime/src/lib.rs b/crates/cgp-runtime/src/lib.rs index b86b10b..0705d8a 100644 --- a/crates/cgp-runtime/src/lib.rs +++ b/crates/cgp-runtime/src/lib.rs @@ -1,3 +1,6 @@ -pub mod traits; +mod traits; -pub use traits::*; +pub use traits::{ + HasAsyncRuntimeType, HasRuntime, HasRuntimeType, ProvideRuntimeType, RuntimeGetter, + RuntimeGetterComponent, RuntimeOf, RuntimeTypeComponent, +}; diff --git a/crates/cgp-runtime/src/traits/has_runtime_type.rs b/crates/cgp-runtime/src/traits/has_runtime_type.rs index 33c0ef8..5b8497c 100644 --- a/crates/cgp-runtime/src/traits/has_runtime_type.rs +++ b/crates/cgp-runtime/src/traits/has_runtime_type.rs @@ -1,6 +1,6 @@ use cgp_core::component::WithProvider; use cgp_core::prelude::*; -use cgp_core::types::traits::ProvideType; +use cgp_core::types::ProvideType; #[cgp_component { name: RuntimeTypeComponent, diff --git a/crates/cgp-runtime/src/traits/mod.rs b/crates/cgp-runtime/src/traits/mod.rs index 850784d..02a24fb 100644 --- a/crates/cgp-runtime/src/traits/mod.rs +++ b/crates/cgp-runtime/src/traits/mod.rs @@ -1,7 +1,7 @@ -pub mod has_async_runtime; -pub mod has_runtime; -pub mod has_runtime_type; +mod has_async_runtime; +mod has_runtime; +mod has_runtime_type; -pub use has_async_runtime::*; -pub use has_runtime::*; -pub use has_runtime_type::*; +pub use has_async_runtime::HasAsyncRuntimeType; +pub use has_runtime::{HasRuntime, RuntimeGetter, RuntimeGetterComponent}; +pub use has_runtime_type::{HasRuntimeType, ProvideRuntimeType, RuntimeOf, RuntimeTypeComponent}; diff --git a/crates/cgp-sync/src/lib.rs b/crates/cgp-sync/src/lib.rs index 13ca9d0..0d3f903 100644 --- a/crates/cgp-sync/src/lib.rs +++ b/crates/cgp-sync/src/lib.rs @@ -2,6 +2,6 @@ pub use cgp_async_macro::strip_async as async_trait; -pub trait Async: Sized + 'static {} +pub trait Async {} -impl Async for T where T: Sized + 'static {} +impl Async for T {} diff --git a/crates/cgp-type/src/impls/mod.rs b/crates/cgp-type/src/impls/mod.rs index 46a2df3..828272a 100644 --- a/crates/cgp-type/src/impls/mod.rs +++ b/crates/cgp-type/src/impls/mod.rs @@ -1,5 +1,5 @@ -pub mod use_delegated_type; -pub mod use_type; +mod use_delegated_type; +mod use_type; -pub use use_delegated_type::*; -pub use use_type::*; +pub use use_delegated_type::{UseDelegatedType, WithDelegatedType}; +pub use use_type::{UseType, WithType}; diff --git a/crates/cgp-type/src/impls/use_type.rs b/crates/cgp-type/src/impls/use_type.rs index 9d054cc..c34d33c 100644 --- a/crates/cgp-type/src/impls/use_type.rs +++ b/crates/cgp-type/src/impls/use_type.rs @@ -2,7 +2,7 @@ use core::marker::PhantomData; use cgp_component::WithProvider; -use crate::traits::has_type::ProvideType; +use crate::traits::ProvideType; pub struct UseType(pub PhantomData); diff --git a/crates/cgp-type/src/lib.rs b/crates/cgp-type/src/lib.rs index 6814640..50dc8b1 100644 --- a/crates/cgp-type/src/lib.rs +++ b/crates/cgp-type/src/lib.rs @@ -1,4 +1,7 @@ #![no_std] -pub mod impls; -pub mod traits; +mod impls; +mod traits; + +pub use impls::{UseDelegatedType, UseType, WithDelegatedType, WithType}; +pub use traits::{HasType, ProvideType, TypeComponent, TypeOf}; diff --git a/crates/cgp-type/src/traits/has_type.rs b/crates/cgp-type/src/traits/has_type.rs index 27c22d8..9d5dcac 100644 --- a/crates/cgp-type/src/traits/has_type.rs +++ b/crates/cgp-type/src/traits/has_type.rs @@ -9,6 +9,8 @@ pub trait HasType { type Type; } +pub type TypeOf = >::Type; + impl ProvideType for UseContext where Context: HasType, diff --git a/crates/cgp-type/src/traits/mod.rs b/crates/cgp-type/src/traits/mod.rs index 95dde25..7dea693 100644 --- a/crates/cgp-type/src/traits/mod.rs +++ b/crates/cgp-type/src/traits/mod.rs @@ -1,3 +1,3 @@ -pub mod has_type; +mod has_type; -pub use has_type::*; +pub use has_type::{HasType, ProvideType, TypeComponent, TypeOf}; diff --git a/crates/cgp/Cargo.toml b/crates/cgp/Cargo.toml index 60507bf..f137458 100644 --- a/crates/cgp/Cargo.toml +++ b/crates/cgp/Cargo.toml @@ -13,9 +13,9 @@ description = """ [features] default = [ "full" ] -full = [ "cgp-async/full" ] +full = [ "cgp-core/full", "cgp-extra/full" ] [dependencies] cgp-async = { version = "0.2.0", default-features = false } cgp-core = { version = "0.2.0", default-features = false } -cgp-extra = { version = "0.2.0" } \ No newline at end of file +cgp-extra = { version = "0.2.0", default-features = false } \ No newline at end of file