Skip to content

Commit

Permalink
former : experimenting
Browse files Browse the repository at this point in the history
  • Loading branch information
Wandalen committed Mar 23, 2024
1 parent b982849 commit 4094317
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 29 deletions.
10 changes: 7 additions & 3 deletions module/core/former/src/axiomatic3.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
//! ....

/// xxx
pub trait StoragePerform : ::core::default::Default
pub trait Storage : ::core::default::Default
{
type Descriptor : FormerDescriptor< Storage = Self >;
fn preform( self ) -> < < Self as StoragePerform >::Descriptor as FormerDescriptor >::Formed;
}

/// xxx
pub trait StoragePerform : Storage
{
fn preform( self ) -> < < Self as Storage >::Descriptor as FormerDescriptor >::Formed;
}

/// xxx
Expand Down
30 changes: 18 additions & 12 deletions module/core/former/src/hash_map.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,30 +65,36 @@ where
}
}

impl< K, E > StoragePerform
impl< K, E > FormerDescriptor
for HashMapDescriptor< K, E >
where
K : ::core::cmp::Eq + ::core::hash::Hash,
{
type Storage = HashMap< K, E >;
type Formed = HashMap< K, E >;
}

impl< K, E > Storage
for HashMap< K, E >
where
K : ::core::cmp::Eq + ::core::hash::Hash,
{
// type Formed = Self;
// fn preform( self ) -> Self::Formed
type Descriptor = HashMapDescriptor< K, E >;
// fn preform( self ) -> < < Self as Storage >::Descriptor as FormerDescriptor >::Formed
// {
// self
// }
type Descriptor = HashMapDescriptor< K, E >;
fn preform( self ) -> < < Self as StoragePerform >::Descriptor as FormerDescriptor >::Formed
{
self
}
}

impl< K, E > FormerDescriptor
for HashMapDescriptor< K, E >
impl< K, E > StoragePerform
for HashMap< K, E >
where
K : ::core::cmp::Eq + ::core::hash::Hash,
{
type Storage = HashMap< K, E >;
type Formed = HashMap< K, E >;
fn preform( self ) -> < < Self as Storage >::Descriptor as FormerDescriptor >::Formed
{
self
}
}

/// A builder for constructing hash map-like structures with a fluent interface.
Expand Down
20 changes: 13 additions & 7 deletions module/core/former/src/hash_set.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,23 +53,29 @@ where
}
}

impl< K > StoragePerform
impl< K > Storage
for HashSet< K >
where
K : ::core::cmp::Eq + ::core::hash::Hash,
{
type Descriptor = HashSetDescriptor< K >;
fn preform( self ) -> < < Self as StoragePerform >::Descriptor as FormerDescriptor >::Formed
{
self
}
// type Formed = Self;
// fn preform( self ) -> Self::Formed
// fn preform( self ) -> < < Self as Storage >::Descriptor as FormerDescriptor >::Formed
// {
// self
// }
}

impl< K > StoragePerform
for HashSet< K >
where
K : ::core::cmp::Eq + ::core::hash::Hash,
{
fn preform( self ) -> < < Self as Storage >::Descriptor as FormerDescriptor >::Formed
{
self
}
}

impl< K > FormerDescriptor
for HashSetDescriptor< K >
where
Expand Down
11 changes: 8 additions & 3 deletions module/core/former/src/vector3.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,17 @@ for VectorDescriptor< E >
type Formed = Vec< E >;
}

impl< E > StoragePerform
impl< E > Storage
for Vec< E >
{
// type Formed = Self;
type Descriptor = VectorDescriptor< E >;
fn preform( self ) -> < < Self as StoragePerform >::Descriptor as FormerDescriptor >::Formed
}

impl< E > StoragePerform
for Vec< E >
{
// type Descriptor = VectorDescriptor< E >;
fn preform( self ) -> < < Self as Storage >::Descriptor as FormerDescriptor >::Formed
{
self
}
Expand Down
11 changes: 8 additions & 3 deletions module/core/former/tests/inc/former_tests/a_primitives_manual.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,17 @@ for Struct1FormerDescriptor
type Formed = Struct1;
}

impl former::StoragePerform
impl former::Storage
for Struct1FormerStorage
{
type Descriptor = Struct1FormerDescriptor;
}

impl former::StoragePerform
for Struct1FormerStorage
{

fn preform( mut self ) -> < < Self as former::StoragePerform >::Descriptor as former::FormerDescriptor >::Formed
fn preform( mut self ) -> < < Self as former::Storage >::Descriptor as former::FormerDescriptor >::Formed
{

let int_1 = if self.int_1.is_some()
Expand Down Expand Up @@ -114,7 +119,7 @@ for Struct1FormerStorage
};

// xxx : Rust failt to use parameter here
// < < Self as former::StoragePerform >::Descriptor as former::FormerDescriptor >::Formed
// < < Self as former::Storage >::Descriptor as former::FormerDescriptor >::Formed
Struct1
{
int_1,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ tests_impls!
a_id!( got, exp );

// storage exists
let got = < < Struct1FormerStorage as the_module::StoragePerform >::Descriptor as the_module::FormerDescriptor >::Formed::former().form();
let got = < < Struct1FormerStorage as the_module::Storage >::Descriptor as the_module::FormerDescriptor >::Formed::former().form();
let exp = Struct1::former().form();
a_id!( got, exp );

Expand Down

0 comments on commit 4094317

Please sign in to comment.