summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs
new file mode 100644
index 0000000..8faebd4
--- /dev/null
+++ b/src/main.rs
@@ -0,0 +1,38 @@
+#![feature(proc_macro_hygiene)]
+
+use actix_web::{App, HttpServer};
+use std::io;
+use thiserror::Error;
+
+mod twelve;
+mod view;
+
+#[derive(Error, Debug)]
+pub enum Error {
+ #[error("Unable to determine port number: {0}")]
+ PortError(#[from] twelve::Error),
+ #[error("Unable to initialize web view: {0}")]
+ ViewError(#[from] view::Error),
+ #[error("Unexpected IO error: {0}")]
+ IOError(#[from] io::Error),
+}
+
+type Result = std::result::Result<(), Error>;
+
+#[actix_rt::main]
+async fn main() -> Result {
+ let port = twelve::port(3000)?;
+
+ let service = view::make_service()?;
+
+ let app_factory = move ||
+ App::new()
+ .configure(|cfg| service(cfg));
+
+ HttpServer::new(app_factory)
+ .bind(port)?
+ .run()
+ .await?;
+
+ Ok(())
+}