diff --git a/examples/cpp_calling_rust/Cargo.toml b/examples/cpp_calling_rust/Cargo.toml
new file mode 100644
index 0000000..2814194
--- /dev/null
+++ b/examples/cpp_calling_rust/Cargo.toml
@@ -0,0 +1,26 @@
+# Copyright 2022 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.
+
+[package]
+name = "cpp_calling_rust"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+cxx = "1.0.78"
+autocxx = { path = "../..", version="0.26.0" }
+uwuify = "0.2.2"
+textwrap = "0.14"
+fastrand = "1.5.0"
+
+[build-dependencies]
+autocxx-build = { path = "../../gen/build", version="0.26.0" }
+regex = "1.5.4"
+miette = { version="5", features = [ "fancy" ] }
diff --git a/examples/cpp_calling_rust/build.rs b/examples/cpp_calling_rust/build.rs
new file mode 100644
index 0000000..60cc460
--- /dev/null
+++ b/examples/cpp_calling_rust/build.rs
@@ -0,0 +1,21 @@
+// Copyright 2022 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.
+
+fn main() -> miette::Result<()> {
+    let path = std::path::PathBuf::from("src");
+    let mut b = autocxx_build::Builder::new("src/main.rs", &[&path])
+        .auto_allowlist(true)
+        .build()?;
+    b.flag_if_supported("-std=c++17")
+        .file("src/input.cc")
+        .compile("autocxx-cpp-calling-rust-example");
+    println!("cargo:rerun-if-changed=src/main.rs");
+    println!("cargo:rerun-if-changed=src/input.cc");
+    println!("cargo:rerun-if-changed=src/input.h");
+    Ok(())
+}
diff --git a/examples/cpp_calling_rust/src/input.cc b/examples/cpp_calling_rust/src/input.cc
new file mode 100644
index 0000000..64c446a
--- /dev/null
+++ b/examples/cpp_calling_rust/src/input.cc
@@ -0,0 +1,19 @@
+// Copyright 2022 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.
+
+#include "cxxgen.h"
+#include "input.h"
+
+void jurassic() {
+    rust::Box<Dinosaur> prey = new_dinosaur(false);
+    rust::Box<Dinosaur> predator = new_dinosaur(true);
+    prey->roar();
+    predator->roar();
+    predator->eat(std::move(prey));
+    go_extinct();
+}
\ No newline at end of file
diff --git a/examples/cpp_calling_rust/src/input.h b/examples/cpp_calling_rust/src/input.h
new file mode 100644
index 0000000..206adc6
--- /dev/null
+++ b/examples/cpp_calling_rust/src/input.h
@@ -0,0 +1,16 @@
+// Copyright 2022 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>
+
+void jurassic();
\ No newline at end of file
diff --git a/examples/cpp_calling_rust/src/main.rs b/examples/cpp_calling_rust/src/main.rs
new file mode 100644
index 0000000..3fe6404
--- /dev/null
+++ b/examples/cpp_calling_rust/src/main.rs
@@ -0,0 +1,58 @@
+// Copyright 2022 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.
+
+// This example shows calls from C++ back into Rust. That's really not
+// the main purpose of autocxx, and this support is immature. If you're
+// primarily doing this sort of thing, look into other tools such as
+// cbindgen or cxx.
+
+use autocxx::prelude::*;
+use std::pin::Pin;
+
+include_cpp! {
+    #include "input.h"
+    safety!(unsafe_ffi)
+    generate!("jurassic")
+}
+
+fn main() {
+    ffi::jurassic();
+}
+
+#[autocxx::extern_rust::extern_rust_type]
+pub struct Dinosaur {
+    carnivore: bool,
+}
+
+#[autocxx::extern_rust::extern_rust_function]
+pub fn new_dinosaur(carnivore: bool) -> Box<Dinosaur> {
+    Box::new(Dinosaur { carnivore })
+}
+
+impl Dinosaur {
+    #[autocxx::extern_rust::extern_rust_function]
+    fn roar(&self) {
+        println!("Roar");
+    }
+
+    #[autocxx::extern_rust::extern_rust_function]
+    fn eat(self: Pin<&mut Dinosaur>, other_dinosaur: Box<Dinosaur>) {
+        assert!(self.carnivore);
+        other_dinosaur.get_eaten();
+        println!("Nom nom");
+    }
+
+    fn get_eaten(&self) {
+        println!("Uh-oh");
+    }
+}
+
+#[autocxx::extern_rust::extern_rust_function]
+pub fn go_extinct() {
+    println!("Boom")
+}
