From 1561c88cf19794a4124281e7affe9c1d2cdae0e1 Mon Sep 17 00:00:00 2001 From: wandalen Date: Sat, 23 Mar 2024 20:32:28 +0200 Subject: [PATCH] former : experimenting --- module/core/former/src/axiomatic.rs | 16 +++++++++------- module/core/former/src/container.rs | 2 +- module/core/former/src/hash_map.rs | 6 ++++-- module/core/former/src/hash_set.rs | 12 +++++------- module/core/former/src/vector.rs | 6 ++++-- 5 files changed, 23 insertions(+), 19 deletions(-) diff --git a/module/core/former/src/axiomatic.rs b/module/core/former/src/axiomatic.rs index 54fbe0698c..5eeb20c3b6 100644 --- a/module/core/former/src/axiomatic.rs +++ b/module/core/former/src/axiomatic.rs @@ -2,21 +2,24 @@ pub trait Storage : ::core::default::Default { - type Definition : FormerDefinition< Storage = Self >; + // type Definition : FormerDefinition< Storage = Self >; + type Formed; } /// xxx pub trait StoragePerform : Storage { - fn preform( self ) -> < < Self as Storage >::Definition as FormerDefinition >::Formed; + // fn preform( self ) -> < < Self as Storage >::Definition as FormerDefinition >::Formed; + fn preform( self ) -> Self::Formed; } /// xxx pub trait FormerDefinition { - type Storage : Storage< Definition = Self >; + // type Storage : Storage< Definition = Self >; + type Storage : Storage< Formed = Self::Formed >; type Formed; - // type Contex; + // type Context; } // pub trait FormerDefinition @@ -70,9 +73,8 @@ pub struct ReturnFormed; impl< Definition : FormerDefinition > FormingEnd< Definition, () > for ReturnFormed where - Definition::Storage : StoragePerform< Definition = Definition >, - // xxx : rename Former -> Definition - // xxx : rename Definition -> Definition + // Definition::Storage : StoragePerform< Definition = Definition >, + Definition::Storage : StoragePerform< Formed = Definition::Formed >, { #[ inline( always ) ] fn call( &self, storage : Definition::Storage, _context : core::option::Option< () > ) -> Definition::Formed diff --git a/module/core/former/src/container.rs b/module/core/former/src/container.rs index e68732dfa6..3da836f5d7 100644 --- a/module/core/former/src/container.rs +++ b/module/core/former/src/container.rs @@ -278,7 +278,7 @@ impl< E, Definition > ContainerSubformer< E, Definition, (), ReturnFormed > where Definition : FormerDefinition, Definition::Storage : ContainerAdd< Element = E >, - Definition::Storage : StoragePerform< Definition = Definition >, + Definition::Storage : StoragePerform< Formed = Definition::Formed >, { /// Initializes a new `ContainerSubformer` instance, starting with an empty formed. diff --git a/module/core/former/src/hash_map.rs b/module/core/former/src/hash_map.rs index 6448031d7f..484b1fde3d 100644 --- a/module/core/former/src/hash_map.rs +++ b/module/core/former/src/hash_map.rs @@ -79,7 +79,8 @@ for HashMap< K, E > where K : ::core::cmp::Eq + ::core::hash::Hash, { - type Definition = HashMapDefinition< K, E >; + // type Definition = HashMapDefinition< K, E >; + type Formed = HashMap< K, E >; } impl< K, E > StoragePerform @@ -87,7 +88,8 @@ for HashMap< K, E > where K : ::core::cmp::Eq + ::core::hash::Hash, { - fn preform( self ) -> < < Self as Storage >::Definition as FormerDefinition >::Formed + // fn preform( self ) -> < < Self as Storage >::Definition as FormerDefinition >::Formed + fn preform( self ) -> Self::Formed { self } diff --git a/module/core/former/src/hash_set.rs b/module/core/former/src/hash_set.rs index 8c4cdb62f3..66ef30e701 100644 --- a/module/core/former/src/hash_set.rs +++ b/module/core/former/src/hash_set.rs @@ -58,11 +58,8 @@ for HashSet< K > where K : ::core::cmp::Eq + ::core::hash::Hash, { - type Definition = HashSetDefinition< K >; - // fn preform( self ) -> < < Self as Storage >::Definition as FormerDefinition >::Formed - // { - // self - // } + // type Definition = HashSetDefinition< K >; + type Formed = HashSet< K >; } impl< K > StoragePerform @@ -70,7 +67,8 @@ for HashSet< K > where K : ::core::cmp::Eq + ::core::hash::Hash, { - fn preform( self ) -> < < Self as Storage >::Definition as FormerDefinition >::Formed + // fn preform( self ) -> < < Self as Storage >::Definition as FormerDefinition >::Formed + fn preform( self ) -> Self::Formed { self } @@ -117,7 +115,7 @@ where /// # } /// ``` -pub type VectorSubformer< K > = ContainerSubformer::< K, HashSetDefinition< K > >; +pub type HashSetSubformer< K > = ContainerSubformer::< K, HashSetDefinition< K > >; // #[ derive( Debug, Default ) ] // pub struct HashSetSubformer< K, Definition, Context, End > diff --git a/module/core/former/src/vector.rs b/module/core/former/src/vector.rs index c7e2099e0a..4b056695eb 100644 --- a/module/core/former/src/vector.rs +++ b/module/core/former/src/vector.rs @@ -47,13 +47,15 @@ for VectorDefinition< E > impl< E > Storage for Vec< E > { - type Definition = VectorDefinition< E >; + // type Definition = VectorDefinition< E >; + type Formed = Vec< E >; } impl< E > StoragePerform for Vec< E > { - fn preform( self ) -> < < Self as Storage >::Definition as FormerDefinition >::Formed + // fn preform( self ) -> < < Self as Storage >::Definition as FormerDefinition >::Formed + fn preform( self ) -> Self::Formed { self }