aboutsummaryrefslogtreecommitdiff
path: root/examples/with-3rd-party/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'examples/with-3rd-party/main.rs')
-rw-r--r--examples/with-3rd-party/main.rs42
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(())
+}