From 18f60ba07893c79100c8c576a717059f3da33c84 Mon Sep 17 00:00:00 2001 From: HampusM Date: Thu, 21 Jul 2022 19:50:42 +0200 Subject: docs: rename example folder to examples --- Cargo.toml | 2 +- example/Cargo.toml | 11 --------- example/src/animals/cat.rs | 22 ----------------- example/src/animals/cow.rs | 24 ------------------- example/src/animals/dog.rs | 22 ----------------- example/src/animals/human.rs | 49 -------------------------------------- example/src/animals/mod.rs | 4 ---- example/src/bootstrap.rs | 29 ---------------------- example/src/interfaces/cat.rs | 4 ---- example/src/interfaces/cow.rs | 10 -------- example/src/interfaces/dog.rs | 4 ---- example/src/interfaces/human.rs | 4 ---- example/src/interfaces/mod.rs | 4 ---- example/src/main.rs | 30 ----------------------- examples/basic/animals/cat.rs | 22 +++++++++++++++++ examples/basic/animals/cow.rs | 24 +++++++++++++++++++ examples/basic/animals/dog.rs | 22 +++++++++++++++++ examples/basic/animals/human.rs | 49 ++++++++++++++++++++++++++++++++++++++ examples/basic/animals/mod.rs | 4 ++++ examples/basic/bootstrap.rs | 29 ++++++++++++++++++++++ examples/basic/interfaces/cat.rs | 4 ++++ examples/basic/interfaces/cow.rs | 10 ++++++++ examples/basic/interfaces/dog.rs | 4 ++++ examples/basic/interfaces/human.rs | 4 ++++ examples/basic/interfaces/mod.rs | 4 ++++ examples/basic/main.rs | 30 +++++++++++++++++++++++ 26 files changed, 207 insertions(+), 218 deletions(-) delete mode 100644 example/Cargo.toml delete mode 100644 example/src/animals/cat.rs delete mode 100644 example/src/animals/cow.rs delete mode 100644 example/src/animals/dog.rs delete mode 100644 example/src/animals/human.rs delete mode 100644 example/src/animals/mod.rs delete mode 100644 example/src/bootstrap.rs delete mode 100644 example/src/interfaces/cat.rs delete mode 100644 example/src/interfaces/cow.rs delete mode 100644 example/src/interfaces/dog.rs delete mode 100644 example/src/interfaces/human.rs delete mode 100644 example/src/interfaces/mod.rs delete mode 100644 example/src/main.rs create mode 100644 examples/basic/animals/cat.rs create mode 100644 examples/basic/animals/cow.rs create mode 100644 examples/basic/animals/dog.rs create mode 100644 examples/basic/animals/human.rs create mode 100644 examples/basic/animals/mod.rs create mode 100644 examples/basic/bootstrap.rs create mode 100644 examples/basic/interfaces/cat.rs create mode 100644 examples/basic/interfaces/cow.rs create mode 100644 examples/basic/interfaces/dog.rs create mode 100644 examples/basic/interfaces/human.rs create mode 100644 examples/basic/interfaces/mod.rs create mode 100644 examples/basic/main.rs diff --git a/Cargo.toml b/Cargo.toml index 41d00f8..537b71c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,5 +20,5 @@ mockall = "0.11.1" [workspace] members = [ "macros", - "example", ] + diff --git a/example/Cargo.toml b/example/Cargo.toml deleted file mode 100644 index 003ad19..0000000 --- a/example/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "example" -version = "0.1.0" -license = "LGPL-2.1" -authors = ["HampusM "] -edition = "2021" - -[dependencies] -syrette = "0.1.0" -error-stack = "0.1.1" - diff --git a/example/src/animals/cat.rs b/example/src/animals/cat.rs deleted file mode 100644 index 153ad4b..0000000 --- a/example/src/animals/cat.rs +++ /dev/null @@ -1,22 +0,0 @@ -use syrette::injectable; - -use crate::interfaces::cat::ICat; - -pub struct Cat {} - -#[injectable(ICat)] -impl Cat -{ - pub fn new() -> Self - { - Self {} - } -} - -impl ICat for Cat -{ - fn meow(&self) - { - println!("Meow!"); - } -} diff --git a/example/src/animals/cow.rs b/example/src/animals/cow.rs deleted file mode 100644 index a75d750..0000000 --- a/example/src/animals/cow.rs +++ /dev/null @@ -1,24 +0,0 @@ -use crate::interfaces::cow::ICow; - -pub struct Cow -{ - moo_cnt: i32, -} - -impl Cow -{ - pub fn new(moo_cnt: i32) -> Self - { - Self { moo_cnt } - } -} - -impl ICow for Cow -{ - fn moo(&self) - { - for _ in 0..self.moo_cnt { - println!("Moo"); - } - } -} diff --git a/example/src/animals/dog.rs b/example/src/animals/dog.rs deleted file mode 100644 index 84959c0..0000000 --- a/example/src/animals/dog.rs +++ /dev/null @@ -1,22 +0,0 @@ -use syrette::injectable; - -use crate::interfaces::dog::IDog; - -pub struct Dog {} - -#[injectable(IDog)] -impl Dog -{ - pub fn new() -> Self - { - Self {} - } -} - -impl IDog for Dog -{ - fn woof(&self) - { - println!("Woof!"); - } -} diff --git a/example/src/animals/human.rs b/example/src/animals/human.rs deleted file mode 100644 index 5bd2f8f..0000000 --- a/example/src/animals/human.rs +++ /dev/null @@ -1,49 +0,0 @@ -use syrette::injectable; -use syrette::ptr::{FactoryPtr, InterfacePtr}; - -use crate::interfaces::cat::ICat; -use crate::interfaces::cow::{CowFactory, ICow}; -use crate::interfaces::dog::IDog; -use crate::interfaces::human::IHuman; - -pub struct Human -{ - dog: InterfacePtr, - cat: InterfacePtr, - cow_factory: FactoryPtr, -} - -#[injectable(IHuman)] -impl Human -{ - pub fn new( - dog: InterfacePtr, - cat: InterfacePtr, - cow_factory: FactoryPtr, - ) -> Self - { - Self { - dog, - cat, - cow_factory, - } - } -} - -impl IHuman for Human -{ - fn make_pets_make_sounds(&self) - { - println!("Hi doggy!"); - - self.dog.woof(); - - println!("Hi kitty!"); - - self.cat.meow(); - - let cow: Box = (self.cow_factory)(3); - - cow.moo(); - } -} diff --git a/example/src/animals/mod.rs b/example/src/animals/mod.rs deleted file mode 100644 index 6511d17..0000000 --- a/example/src/animals/mod.rs +++ /dev/null @@ -1,4 +0,0 @@ -pub mod cat; -pub mod cow; -pub mod dog; -pub mod human; diff --git a/example/src/bootstrap.rs b/example/src/bootstrap.rs deleted file mode 100644 index a1a7b05..0000000 --- a/example/src/bootstrap.rs +++ /dev/null @@ -1,29 +0,0 @@ -use syrette::DIContainer; - -// Concrete implementations -use crate::animals::cat::Cat; -use crate::animals::cow::Cow; -use crate::animals::dog::Dog; -use crate::animals::human::Human; -// -// Interfaces -use crate::interfaces::cat::ICat; -use crate::interfaces::cow::{CowFactory, ICow}; -use crate::interfaces::dog::IDog; -use crate::interfaces::human::IHuman; - -pub fn bootstrap() -> DIContainer -{ - let mut di_container: DIContainer = DIContainer::new(); - - di_container.bind::().to::(); - di_container.bind::().to::(); - di_container.bind::().to::(); - - di_container.bind::().to_factory(&|moo_cnt| { - let cow: Box = Box::new(Cow::new(moo_cnt)); - cow - }); - - di_container -} diff --git a/example/src/interfaces/cat.rs b/example/src/interfaces/cat.rs deleted file mode 100644 index 8650802..0000000 --- a/example/src/interfaces/cat.rs +++ /dev/null @@ -1,4 +0,0 @@ -pub trait ICat -{ - fn meow(&self); -} diff --git a/example/src/interfaces/cow.rs b/example/src/interfaces/cow.rs deleted file mode 100644 index 59ce7b1..0000000 --- a/example/src/interfaces/cow.rs +++ /dev/null @@ -1,10 +0,0 @@ -use syrette::factory; -use syrette::interfaces::factory::IFactory; - -pub trait ICow -{ - fn moo(&self); -} - -#[factory] -pub type CowFactory = dyn IFactory<(i32,), dyn ICow>; diff --git a/example/src/interfaces/dog.rs b/example/src/interfaces/dog.rs deleted file mode 100644 index 4211c27..0000000 --- a/example/src/interfaces/dog.rs +++ /dev/null @@ -1,4 +0,0 @@ -pub trait IDog -{ - fn woof(&self); -} diff --git a/example/src/interfaces/human.rs b/example/src/interfaces/human.rs deleted file mode 100644 index dc20194..0000000 --- a/example/src/interfaces/human.rs +++ /dev/null @@ -1,4 +0,0 @@ -pub trait IHuman -{ - fn make_pets_make_sounds(&self); -} diff --git a/example/src/interfaces/mod.rs b/example/src/interfaces/mod.rs deleted file mode 100644 index 6511d17..0000000 --- a/example/src/interfaces/mod.rs +++ /dev/null @@ -1,4 +0,0 @@ -pub mod cat; -pub mod cow; -pub mod dog; -pub mod human; diff --git a/example/src/main.rs b/example/src/main.rs deleted file mode 100644 index 956b79e..0000000 --- a/example/src/main.rs +++ /dev/null @@ -1,30 +0,0 @@ -#![deny(clippy::all)] -#![deny(clippy::pedantic)] -#![allow(clippy::module_name_repetitions)] - -use syrette::errors::di_container::DIContainerError; - -mod animals; -mod bootstrap; -mod interfaces; - -use bootstrap::bootstrap; -use interfaces::dog::IDog; -use interfaces::human::IHuman; - -fn main() -> error_stack::Result<(), DIContainerError> -{ - println!("Hello, world!"); - - let di_container = bootstrap(); - - let dog = di_container.get::()?; - - dog.woof(); - - let human = di_container.get::()?; - - human.make_pets_make_sounds(); - - Ok(()) -} diff --git a/examples/basic/animals/cat.rs b/examples/basic/animals/cat.rs new file mode 100644 index 0000000..153ad4b --- /dev/null +++ b/examples/basic/animals/cat.rs @@ -0,0 +1,22 @@ +use syrette::injectable; + +use crate::interfaces::cat::ICat; + +pub struct Cat {} + +#[injectable(ICat)] +impl Cat +{ + pub fn new() -> Self + { + Self {} + } +} + +impl ICat for Cat +{ + fn meow(&self) + { + println!("Meow!"); + } +} diff --git a/examples/basic/animals/cow.rs b/examples/basic/animals/cow.rs new file mode 100644 index 0000000..a75d750 --- /dev/null +++ b/examples/basic/animals/cow.rs @@ -0,0 +1,24 @@ +use crate::interfaces::cow::ICow; + +pub struct Cow +{ + moo_cnt: i32, +} + +impl Cow +{ + pub fn new(moo_cnt: i32) -> Self + { + Self { moo_cnt } + } +} + +impl ICow for Cow +{ + fn moo(&self) + { + for _ in 0..self.moo_cnt { + println!("Moo"); + } + } +} diff --git a/examples/basic/animals/dog.rs b/examples/basic/animals/dog.rs new file mode 100644 index 0000000..84959c0 --- /dev/null +++ b/examples/basic/animals/dog.rs @@ -0,0 +1,22 @@ +use syrette::injectable; + +use crate::interfaces::dog::IDog; + +pub struct Dog {} + +#[injectable(IDog)] +impl Dog +{ + pub fn new() -> Self + { + Self {} + } +} + +impl IDog for Dog +{ + fn woof(&self) + { + println!("Woof!"); + } +} diff --git a/examples/basic/animals/human.rs b/examples/basic/animals/human.rs new file mode 100644 index 0000000..5bd2f8f --- /dev/null +++ b/examples/basic/animals/human.rs @@ -0,0 +1,49 @@ +use syrette::injectable; +use syrette::ptr::{FactoryPtr, InterfacePtr}; + +use crate::interfaces::cat::ICat; +use crate::interfaces::cow::{CowFactory, ICow}; +use crate::interfaces::dog::IDog; +use crate::interfaces::human::IHuman; + +pub struct Human +{ + dog: InterfacePtr, + cat: InterfacePtr, + cow_factory: FactoryPtr, +} + +#[injectable(IHuman)] +impl Human +{ + pub fn new( + dog: InterfacePtr, + cat: InterfacePtr, + cow_factory: FactoryPtr, + ) -> Self + { + Self { + dog, + cat, + cow_factory, + } + } +} + +impl IHuman for Human +{ + fn make_pets_make_sounds(&self) + { + println!("Hi doggy!"); + + self.dog.woof(); + + println!("Hi kitty!"); + + self.cat.meow(); + + let cow: Box = (self.cow_factory)(3); + + cow.moo(); + } +} diff --git a/examples/basic/animals/mod.rs b/examples/basic/animals/mod.rs new file mode 100644 index 0000000..6511d17 --- /dev/null +++ b/examples/basic/animals/mod.rs @@ -0,0 +1,4 @@ +pub mod cat; +pub mod cow; +pub mod dog; +pub mod human; diff --git a/examples/basic/bootstrap.rs b/examples/basic/bootstrap.rs new file mode 100644 index 0000000..a1a7b05 --- /dev/null +++ b/examples/basic/bootstrap.rs @@ -0,0 +1,29 @@ +use syrette::DIContainer; + +// Concrete implementations +use crate::animals::cat::Cat; +use crate::animals::cow::Cow; +use crate::animals::dog::Dog; +use crate::animals::human::Human; +// +// Interfaces +use crate::interfaces::cat::ICat; +use crate::interfaces::cow::{CowFactory, ICow}; +use crate::interfaces::dog::IDog; +use crate::interfaces::human::IHuman; + +pub fn bootstrap() -> DIContainer +{ + let mut di_container: DIContainer = DIContainer::new(); + + di_container.bind::().to::(); + di_container.bind::().to::(); + di_container.bind::().to::(); + + di_container.bind::().to_factory(&|moo_cnt| { + let cow: Box = Box::new(Cow::new(moo_cnt)); + cow + }); + + di_container +} diff --git a/examples/basic/interfaces/cat.rs b/examples/basic/interfaces/cat.rs new file mode 100644 index 0000000..8650802 --- /dev/null +++ b/examples/basic/interfaces/cat.rs @@ -0,0 +1,4 @@ +pub trait ICat +{ + fn meow(&self); +} diff --git a/examples/basic/interfaces/cow.rs b/examples/basic/interfaces/cow.rs new file mode 100644 index 0000000..59ce7b1 --- /dev/null +++ b/examples/basic/interfaces/cow.rs @@ -0,0 +1,10 @@ +use syrette::factory; +use syrette::interfaces::factory::IFactory; + +pub trait ICow +{ + fn moo(&self); +} + +#[factory] +pub type CowFactory = dyn IFactory<(i32,), dyn ICow>; diff --git a/examples/basic/interfaces/dog.rs b/examples/basic/interfaces/dog.rs new file mode 100644 index 0000000..4211c27 --- /dev/null +++ b/examples/basic/interfaces/dog.rs @@ -0,0 +1,4 @@ +pub trait IDog +{ + fn woof(&self); +} diff --git a/examples/basic/interfaces/human.rs b/examples/basic/interfaces/human.rs new file mode 100644 index 0000000..dc20194 --- /dev/null +++ b/examples/basic/interfaces/human.rs @@ -0,0 +1,4 @@ +pub trait IHuman +{ + fn make_pets_make_sounds(&self); +} diff --git a/examples/basic/interfaces/mod.rs b/examples/basic/interfaces/mod.rs new file mode 100644 index 0000000..6511d17 --- /dev/null +++ b/examples/basic/interfaces/mod.rs @@ -0,0 +1,4 @@ +pub mod cat; +pub mod cow; +pub mod dog; +pub mod human; diff --git a/examples/basic/main.rs b/examples/basic/main.rs new file mode 100644 index 0000000..956b79e --- /dev/null +++ b/examples/basic/main.rs @@ -0,0 +1,30 @@ +#![deny(clippy::all)] +#![deny(clippy::pedantic)] +#![allow(clippy::module_name_repetitions)] + +use syrette::errors::di_container::DIContainerError; + +mod animals; +mod bootstrap; +mod interfaces; + +use bootstrap::bootstrap; +use interfaces::dog::IDog; +use interfaces::human::IHuman; + +fn main() -> error_stack::Result<(), DIContainerError> +{ + println!("Hello, world!"); + + let di_container = bootstrap(); + + let dog = di_container.get::()?; + + dog.woof(); + + let human = di_container.get::()?; + + human.make_pets_make_sounds(); + + Ok(()) +} -- cgit v1.2.3-18-g5258