diff --git a/demo/src/input.h b/demo/src/input.h
new file mode 100644
index 0000000..b6cdd87
--- /dev/null
+++ b/demo/src/input.h
@@ -0,0 +1,35 @@
+// Copyright 2020 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// https://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#pragma once
+
+#include <cstdint>
+#include <sstream>
+#include <stdint.h>
+#include <string>
+
+class Goat {
+public:
+    Goat() : horns(0) {}
+    void add_a_horn();
+    std::string describe() const;
+private:
+    uint32_t horns;
+};
+
+inline uint32_t DoMath(uint32_t a) {
+    return a * 3;
+}
+
+inline void Goat::add_a_horn() { horns++; }
+inline std::string Goat::describe() const {
+    std::ostringstream oss;
+    std::string plural = horns == 1 ? "" : "s";
+    oss << "This goat has " << horns << " horn" << plural << ".";
+    return oss.str();
+}
diff --git a/demo/src/main.rs b/demo/src/main.rs
new file mode 100644
index 0000000..798f932
--- /dev/null
+++ b/demo/src/main.rs
@@ -0,0 +1,26 @@
+// Copyright 2020 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// https://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use autocxx::prelude::*;
+include_cpp! {
+    #include "input.h"
+    safety!(unsafe_ffi)
+    generate!("DoMath")
+    generate!("Goat")
+}
+
+fn main() {
+    println!("Hello, world! - C++ math should say 12={}", ffi::DoMath(4));
+    let mut goat = ffi::Goat::new().within_box();
+    goat.as_mut().add_a_horn();
+    goat.as_mut().add_a_horn();
+    assert_eq!(
+        goat.describe().as_ref().unwrap().to_string_lossy(),
+        "This goat has 2 horns."
+    );
+}
