From ebd04ae88f28a547eabbb44e1eccfd19965be7ae Mon Sep 17 00:00:00 2001 From: Owen Jacobson Date: Mon, 1 Jun 2020 23:53:45 -0400 Subject: Port things-to-check to Rust as a learning exercise. This is somewhat overengineered in places, but does the job and exposes broadly the same interfaces as the Python version. Builds with emk/rust. --- src/main.rs | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/main.rs (limited to 'src/main.rs') 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(()) +} -- cgit v1.2.3