Skip to content

Commit

Permalink
former : experimenting
Browse files Browse the repository at this point in the history
  • Loading branch information
Wandalen committed Mar 29, 2024
1 parent 79af251 commit 1dab7e2
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 30 deletions.
39 changes: 28 additions & 11 deletions module/core/former/tests/inc/former_tests/a_primitives_expanded.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,17 +48,34 @@ for Struct1FormerDefinition< Context, Formed, End >
// #[ derive( Debug, Default ) ]
// pub struct Struct1FormerDefinition;

impl former::FormerDefinitionTypes for Struct1FormerDefinition
// impl former::FormerDefinitionTypes for Struct1FormerDefinition
// {
// type Storage = Struct1FormerStorage;
// type Formed = Struct1;
// type Context = ();
// }
//
// impl former::FormerDefinition for Struct1FormerDefinition
// {
// type Types = Struct1FormerDefinition;
// type End = former::ReturnPreformed;
// }

impl< Context, Formed > former::FormerDefinitionTypes
for Struct1FormerDefinition< Context, Formed, former::NoEnd >
{
type Storage = Struct1FormerStorage;
type Formed = Struct1;
type Context = ();
type Formed = Formed;
type Context = Context;
}

impl former::FormerDefinition for Struct1FormerDefinition
impl< Context, Formed, End > former::FormerDefinition
for Struct1FormerDefinition< Context, Formed, End >
where
End : former::FormingEnd< Struct1FormerDefinition< Context, Formed, former::NoEnd > >,
{
type Types = Struct1FormerDefinition;
type End = former::ReturnPreformed;
type Types = Struct1FormerDefinition< Context, Formed, former::NoEnd >;
type End = End;
}

#[ doc = "Container of a corresponding former." ]
Expand Down Expand Up @@ -96,7 +113,7 @@ impl former::Storage for Struct1FormerStorage

impl former::StoragePerform for Struct1FormerStorage
{
// fn preform( mut self ) -> < Struct1FormerDefinition as former::FormerDefinitionTypes >::Formed
// fn preform( mut self ) -> < Definition::Types as former::FormerDefinitionTypes >::Formed
fn preform( mut self ) -> < Self as former::Storage >::Formed
{
let int_1 = if self.int_1.is_some()
Expand Down Expand Up @@ -212,7 +229,7 @@ where
#[ doc = r" Finish setting options and return formed entity." ]
#[ doc = r"" ]
#[ inline( always ) ]
pub fn preform( self ) -> < Struct1FormerDefinition as former::FormerDefinitionTypes >::Formed
pub fn preform( self ) -> < Definition::Types as former::FormerDefinitionTypes >::Formed
{
< Struct1FormerStorage as former::StoragePerform >::preform( self.storage )
}
Expand All @@ -223,7 +240,7 @@ where
#[ doc = r" For example `perform()` of structure with : `#[ perform( fn after1() -> &str > )` returns `&str`." ]
#[ doc = r"" ]
#[ inline( always ) ]
pub fn perform( self ) -> < Struct1FormerDefinition as former::FormerDefinitionTypes >::Formed
pub fn perform( self ) -> < Definition::Types as former::FormerDefinitionTypes >::Formed
{
let result = self.form();
return result;
Expand Down Expand Up @@ -254,15 +271,15 @@ where
#[ doc = r" End the process of forming returning original context of forming." ]
#[ doc = r"" ]
#[ inline( always ) ]
pub fn form( self ) -> < Struct1FormerDefinition as former::FormerDefinitionTypes >::Formed
pub fn form( self ) -> < Definition::Types as former::FormerDefinitionTypes >::Formed
{
self.end()
}
#[ doc = r"" ]
#[ doc = r" End the process of forming returning original context of forming." ]
#[ doc = r"" ]
#[ inline( always ) ]
pub fn end( mut self ) -> < Struct1FormerDefinition as former::FormerDefinitionTypes >::Formed
pub fn end( mut self ) -> < Definition::Types as former::FormerDefinitionTypes >::Formed
{
let on_end = self.on_end.take().unwrap();
let context = self.context.take();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,6 @@ for Struct1FormerDefinition< Context, Formed, End >

impl< Context, Formed > former::FormerDefinitionTypes
for Struct1FormerDefinition< Context, Formed, former::NoEnd >
// where
// End : former::FormingEnd< Self >,
{
type Storage = Struct1FormerStorage;
type Formed = Formed;
Expand All @@ -57,10 +55,8 @@ impl< Context, Formed, End > former::FormerDefinition
for Struct1FormerDefinition< Context, Formed, End >
where
End : former::FormingEnd< Struct1FormerDefinition< Context, Formed, former::NoEnd > >,
// End : former::FormingEnd< Self >,
{
type Types = Struct1FormerDefinition< Context, Formed, former::NoEnd >;
// type Types = Self;
type End = End;
}

Expand Down
2 changes: 1 addition & 1 deletion module/core/former/tests/inc/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ mod former_tests
mod container_former_hashmap;

mod a_primitives_manual;
mod a_primitives_expanded;
// mod a_primitives_expanded;
// mod a_primitives;
// mod a_containers_without_runtime_manual;
// mod a_containers_without_runtime;
Expand Down
45 changes: 31 additions & 14 deletions module/core/former_meta/src/derive/former.rs
Original file line number Diff line number Diff line change
Expand Up @@ -755,7 +755,7 @@ pub fn performer< 'a >
return result;
};
// let mut perform_output = qt!{ #name_ident #generics_ty };
let mut perform_output = qt!{ < #former_definition_name_ident #generics_ty as former::FormerDefinitionTypes >::Formed };
let mut perform_output = qt!{ < Definition::Types as former::FormerDefinitionTypes >::Formed };

let mut perform_generics = qt!{};
for attr in attrs
Expand Down Expand Up @@ -968,21 +968,38 @@ pub fn former( input : proc_macro::TokenStream ) -> Result< TokenStream >
}
}

impl #generics_impl former::FormerDefinitionTypes
for #former_definition_name_ident #generics_ty
impl< Context, Formed > former::FormerDefinitionTypes
for #former_definition_name_ident< Context, Formed, former::NoEnd >
{
type Storage = #former_storage_name_ident #generics_ty;
type Formed = #name_ident #generics_ty;
type Context = ();
type Formed = Formed;
type Context = Context;
}

impl #generics_impl former::FormerDefinition
for #former_definition_name_ident #generics_ty
impl< Context, Formed, End > former::FormerDefinition
for #former_definition_name_ident< Context, Formed, End >
where
End : former::FormingEnd< #former_definition_name_ident< Context, Formed, former::NoEnd > >,
{
type Types = #former_definition_name_ident #generics_ty;
type End = former::ReturnPreformed;
type Types = #former_definition_name_ident< Context, Formed, former::NoEnd >;
type End = End;
}

// impl #generics_impl former::FormerDefinitionTypes
// for #former_definition_name_ident #generics_ty
// {
// type Storage = #former_storage_name_ident #generics_ty;
// type Formed = #name_ident #generics_ty;
// type Context = ();
// }
//
// impl #generics_impl former::FormerDefinition
// for #former_definition_name_ident #generics_ty
// {
// type Types = #former_definition_name_ident #generics_ty;
// type End = former::ReturnPreformed;
// }

// = storage

// xxx : rename to storage
Expand Down Expand Up @@ -1027,12 +1044,12 @@ pub fn former( input : proc_macro::TokenStream ) -> Result< TokenStream >
{

// fn preform( mut self ) -> #former_storage_name_ident #generics_ty
// fn preform( mut self ) -> < #former_definition_name_ident #generics_ty as former::FormerDefinitionTypes >::Formed
// fn preform( mut self ) -> < Definition::Types as former::FormerDefinitionTypes >::Formed
fn preform( mut self ) -> < Self as former::Storage >::Formed
{
#( #fields_form )*
// Rust does not support that, yet
// let result = < #former_definition_name_ident #generics_ty as former::FormerDefinitionTypes >::Formed
// let result = < Definition::Types as former::FormerDefinitionTypes >::Formed
let result = #name_ident #generics_ty
{
#( #fields_names, )*
Expand Down Expand Up @@ -1063,7 +1080,7 @@ pub fn former( input : proc_macro::TokenStream ) -> Result< TokenStream >
/// Finish setting options and return formed entity.
///
#[ inline( always ) ]
pub fn preform( self ) -> < #former_definition_name_ident #generics_ty as former::FormerDefinitionTypes >::Formed
pub fn preform( self ) -> < Definition::Types as former::FormerDefinitionTypes >::Formed
// #name_ident #generics_ty
{
< #former_storage_name_ident #generics_ty as former::StoragePerform >::preform( self.storage )
Expand Down Expand Up @@ -1118,7 +1135,7 @@ pub fn former( input : proc_macro::TokenStream ) -> Result< TokenStream >
/// End the process of forming returning original context of forming.
///
#[ inline( always ) ]
pub fn form( self ) -> < #former_definition_name_ident #generics_ty as former::FormerDefinitionTypes >::Formed
pub fn form( self ) -> < Definition::Types as former::FormerDefinitionTypes >::Formed
{
self.end()
}
Expand All @@ -1127,7 +1144,7 @@ pub fn former( input : proc_macro::TokenStream ) -> Result< TokenStream >
/// End the process of forming returning original context of forming.
///
#[ inline( always ) ]
pub fn end( mut self ) -> < #former_definition_name_ident #generics_ty as former::FormerDefinitionTypes >::Formed
pub fn end( mut self ) -> < Definition::Types as former::FormerDefinitionTypes >::Formed
{
let on_end = self.on_end.take().unwrap();
let context = self.context.take();
Expand Down

0 comments on commit 1dab7e2

Please sign in to comment.