diff --git a/gen/build/src/lib.rs b/gen/build/src/lib.rs
index 14683b6..a4fcc1d 100644
--- a/gen/build/src/lib.rs
+++ b/gen/build/src/lib.rs
@@ -102,13 +102,14 @@
 }
 
 fn try_generate_bridge(build: &mut cc::Build, rust_source_file: &Path) -> Result<()> {
-    let header = gen::do_generate_header(rust_source_file, Opt::default());
+    let opt = Opt::default();
+    let header = gen::do_generate_header(rust_source_file, &opt);
     let header_path = paths::out_with_extension(rust_source_file, ".h")?;
     fs::create_dir_all(header_path.parent().unwrap())?;
     fs::write(&header_path, header)?;
     paths::symlink_header(&header_path, rust_source_file);
 
-    let bridge = gen::do_generate_bridge(rust_source_file, Opt::default());
+    let bridge = gen::do_generate_bridge(rust_source_file, &opt);
     let bridge_path = paths::out_with_extension(rust_source_file, ".cc")?;
     fs::write(&bridge_path, bridge)?;
     build.file(&bridge_path);
diff --git a/gen/cmd/src/main.rs b/gen/cmd/src/main.rs
index 0160913..38aab49 100644
--- a/gen/cmd/src/main.rs
+++ b/gen/cmd/src/main.rs
@@ -35,8 +35,8 @@
     };
 
     match (opt.input, opt.header) {
-        (Some(input), true) => write(gen::do_generate_header(&input, gen)),
-        (Some(input), false) => write(gen::do_generate_bridge(&input, gen)),
+        (Some(input), true) => write(gen::do_generate_header(&input, &gen)),
+        (Some(input), false) => write(gen::do_generate_bridge(&input, &gen)),
         (None, true) => write(include::HEADER),
         (None, false) => unreachable!(), // enforced by required_unless
     }
diff --git a/gen/lib/src/lib.rs b/gen/lib/src/lib.rs
index ca9fabe..d2ac1ca 100644
--- a/gen/lib/src/lib.rs
+++ b/gen/lib/src/lib.rs
@@ -24,7 +24,7 @@
 
 /// Generate C++ bindings code from a Rust token stream. This should be a Rust
 /// token stream which somewhere contains a `#[cxx::bridge] mod {}`.
-pub fn generate_header_and_cc(rust_source: TokenStream, opt: Opt) -> Result<GeneratedCode, Error> {
+pub fn generate_header_and_cc(rust_source: TokenStream, opt: &Opt) -> Result<GeneratedCode, Error> {
     let syntax = syn::parse2(rust_source)
         .map_err(crate::gen::Error::from)
         .map_err(Error)?;
diff --git a/gen/src/mod.rs b/gen/src/mod.rs
index 6573949..0743939 100644
--- a/gen/src/mod.rs
+++ b/gen/src/mod.rs
@@ -32,7 +32,7 @@
 /// let mut opt = Opt::default();
 /// opt.cxx_impl_annotations = Some(impl_annotations);
 /// ```
-#[derive(Default, Clone)]
+#[derive(Default)]
 #[non_exhaustive]
 pub struct Opt {
     /// Any additional headers to #include. The cxxbridge tool does not parse or
@@ -47,17 +47,17 @@
     pub cxx_impl_annotations: Option<String>,
 }
 
-pub(super) fn do_generate_bridge(path: &Path, opt: Opt) -> Vec<u8> {
+pub(super) fn do_generate_bridge(path: &Path, opt: &Opt) -> Vec<u8> {
     let header = false;
     generate_from_path(path, opt, header)
 }
 
-pub(super) fn do_generate_header(path: &Path, opt: Opt) -> Vec<u8> {
+pub(super) fn do_generate_header(path: &Path, opt: &Opt) -> Vec<u8> {
     let header = true;
     generate_from_path(path, opt, header)
 }
 
-fn generate_from_path(path: &Path, opt: Opt, header: bool) -> Vec<u8> {
+fn generate_from_path(path: &Path, opt: &Opt, header: bool) -> Vec<u8> {
     let source = match fs::read_to_string(path) {
         Ok(source) => source,
         Err(err) => format_err(path, "", Error::Io(err)),
@@ -68,7 +68,7 @@
     }
 }
 
-fn generate_from_string(source: &str, opt: Opt, header: bool) -> Result<Vec<u8>> {
+fn generate_from_string(source: &str, opt: &Opt, header: bool) -> Result<Vec<u8>> {
     let mut source = source;
     if source.starts_with("#!") && !source.starts_with("#![") {
         let shebang_end = source.find('\n').unwrap_or(source.len());
@@ -85,7 +85,7 @@
 
 pub(super) fn generate(
     syntax: File,
-    opt: Opt,
+    opt: &Opt,
     gen_header: bool,
     gen_cxx: bool,
 ) -> Result<(Option<Vec<u8>>, Option<Vec<u8>>)> {
@@ -107,7 +107,7 @@
     // from the same token stream to avoid parsing twice. But others
     // only need to generate one or the other.
     let hdr = if gen_header {
-        Some(write::gen(namespace, apis, types, opt.clone(), true).content())
+        Some(write::gen(namespace, apis, types, opt, true).content())
     } else {
         None
     };
diff --git a/gen/src/write.rs b/gen/src/write.rs
index 32ccbf6..ccb9f61 100644
--- a/gen/src/write.rs
+++ b/gen/src/write.rs
@@ -11,7 +11,7 @@
     namespace: &Namespace,
     apis: &[Api],
     types: &Types,
-    opt: Opt,
+    opt: &Opt,
     header: bool,
 ) -> OutFile {
     let mut out_file = OutFile::new(namespace.clone(), header);
@@ -21,7 +21,7 @@
         writeln!(out.front, "#pragma once");
     }
 
-    out.include.extend(opt.include);
+    out.include.extend(opt.include.clone());
     for api in apis {
         if let Api::Include(include) = api {
             out.include.insert(include);
