Include <functional> when deriving Hash impl shim
diff --git a/gen/src/include.rs b/gen/src/include.rs
index 9db95be..3a0d66b 100644
--- a/gen/src/include.rs
+++ b/gen/src/include.rs
@@ -27,6 +27,7 @@
     pub cstdint: bool,
     pub cstring: bool,
     pub exception: bool,
+    pub functional: bool,
     pub initializer_list: bool,
     pub iterator: bool,
     pub memory: bool,
@@ -77,6 +78,7 @@
         cstdint,
         cstring,
         exception,
+        functional,
         initializer_list,
         iterator,
         memory,
@@ -107,6 +109,9 @@
     if exception {
         writeln!(out, "#include <exception>");
     }
+    if functional {
+        writeln!(out, "#include <functional>");
+    }
     if initializer_list {
         writeln!(out, "#include <initializer_list>");
     }
diff --git a/gen/src/write.rs b/gen/src/write.rs
index 28a3eec..e29d5f6 100644
--- a/gen/src/write.rs
+++ b/gen/src/write.rs
@@ -158,6 +158,7 @@
         if let Api::Struct(strct) = api {
             if derive::contains(&strct.derives, Trait::Hash) {
                 out.next_section();
+                out.include.functional = true;
                 let qualified = strct.name.to_fully_qualified();
                 writeln!(out, "template <> struct hash<{}> {{", qualified);
                 writeln!(