From 67cdcc2e12118becb823e20a40cc2687f2b8425a Mon Sep 17 00:00:00 2001 From: Adam Carpenter <53hornet@gmail.com> Date: Wed, 27 Mar 2019 15:32:37 -0400 Subject: Started Rust in Action MEAP. --- meap/meap-code/ch1/ch1-time-api/src/main.rs | 36 +++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 meap/meap-code/ch1/ch1-time-api/src/main.rs (limited to 'meap/meap-code/ch1/ch1-time-api/src') diff --git a/meap/meap-code/ch1/ch1-time-api/src/main.rs b/meap/meap-code/ch1/ch1-time-api/src/main.rs new file mode 100644 index 0000000..660c1cc --- /dev/null +++ b/meap/meap-code/ch1/ch1-time-api/src/main.rs @@ -0,0 +1,36 @@ +#![feature(plugin)] // <1> +#![plugin(rocket_codegen)] // <1> + +extern crate serde; // <2> +extern crate chrono; // <2> +extern crate rocket; // <2> +extern crate rocket_contrib; // <2> + +#[macro_use] // <3> Syntax to indicate that we want to import macros from another module +extern crate serde_derive; // <3> + +use chrono::prelude::*; // <4> brings all exported members into local scope (e.g. DateTime and Utc) +use rocket_contrib::{Json}; // <5> bring single member into local scope + +#[derive(Serialize)] // <6> Automatically generate a string representation of this struct (which will be used as JSON) +struct Timestamp { // <7> Syntax to create a custom type + time: String, // <8> The `Timestamp` `time` field is of type `String` +} + +#[get("/")] // <9> Custom syntax provided by the library that indicates to code generation +fn index() -> &'static str { // <10> Define a function with no arguments and its return type + "Hello, world!" // <11> Rust returns the result of the final expression +} + +#[get("/time")] +fn time_now() -> Json { + let now: DateTime = Utc::now(); + let timestamp = Timestamp { time: now.to_rfc3339() }; + Json(timestamp) +} + +fn main() { + rocket::ignite() + .mount("/", routes![index, time_now]) + .launch(); +} \ No newline at end of file -- cgit v1.2.3