diff options
author | HampusM <hampus@hampusmat.com> | 2022-08-20 17:10:08 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2022-08-21 18:17:50 +0200 |
commit | ade21185976ea2324d313a5c28a88cc0492f2934 (patch) | |
tree | f217d55ad324160d8a9a099c562c8bc6cbb60c1f /examples/with-3rd-party/main.rs | |
parent | b31422d48a600ccccb682567f5eb11fc0bca547c (diff) |
docs: add a example that uses a 3rd party library
Diffstat (limited to 'examples/with-3rd-party/main.rs')
-rw-r--r-- | examples/with-3rd-party/main.rs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/examples/with-3rd-party/main.rs b/examples/with-3rd-party/main.rs new file mode 100644 index 0000000..f615ff5 --- /dev/null +++ b/examples/with-3rd-party/main.rs @@ -0,0 +1,42 @@ +#![deny(clippy::all)] +#![deny(clippy::pedantic)] +#![allow(clippy::module_name_repetitions)] + +use std::fmt::Display; + +mod bootstrap; +mod interfaces; +mod ninja; + +use error_stack::{Context, ResultExt}; + +use crate::bootstrap::bootstrap; +use crate::interfaces::ninja::INinja; + +#[derive(Debug)] +struct ApplicationError; + +impl Display for ApplicationError +{ + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result + { + f.write_str("An application error has occurred") + } +} + +impl Context for ApplicationError {} + +fn main() -> error_stack::Result<(), ApplicationError> +{ + println!("Hello, world!"); + + let di_container = bootstrap().change_context(ApplicationError)?; + + let ninja = di_container + .get::<dyn INinja>() + .change_context(ApplicationError)?; + + ninja.throw_shuriken(); + + Ok(()) +} |