diff --git a/docs/src/bin/build_page.rs b/docs/src/bin/build_page.rs
index 4533a39..263eb2f 100644
--- a/docs/src/bin/build_page.rs
+++ b/docs/src/bin/build_page.rs
@@ -63,7 +63,7 @@ fn build_page(
 fn postprocess<'a>(content: &'a AstNode<'a>) {
     lower_headings(content);
     rewrite_md_links(content);
-    strip_hidden_code(content);
+    strip_rustdoc_idioms(content);
 }
 
 fn lower_headings<'a>(root: &'a AstNode<'a>) {
@@ -87,25 +87,24 @@ fn rewrite_md_links<'a>(root: &'a AstNode<'a>) {
     }
 }
 
-fn strip_hidden_code<'a>(root: &'a AstNode<'a>) {
+fn strip_rustdoc_idioms<'a>(root: &'a AstNode<'a>) {
     for node in root.descendants() {
         let mut data = node.data.borrow_mut();
         if let NodeValue::CodeBlock(NodeCodeBlock { info, literal, .. }) = &mut data.value {
-            if info.split(',').map(str::trim).all(|lang| lang != "rust") {
-                continue;
+            // Rustdoc uses commas, but CommonMark uses spaces
+            *info = info.replace(",", " ");
+
+            // Rustdoc uses "#" to represent hidden setup code
+            if info.split_whitespace().next() == Some("rust") {
+                *literal = literal
+                    .split('\n')
+                    .filter(|line| {
+                        let line = line.trim();
+                        line != "#" && !line.starts_with("# ")
+                    })
+                    .collect::<Vec<_>>()
+                    .join("\n");
             }
-            *literal = strip_hidden_code_inner(literal);
         }
     }
 }
-
-fn strip_hidden_code_inner(literal: &str) -> String {
-    let lines = literal
-        .split('\n')
-        .filter(|line| {
-            let line = line.trim();
-            line != "#" && !line.starts_with("# ")
-        })
-        .collect::<Vec<_>>();
-    lines.join("\n")
-}