rusteal_codegen/rust_gen/
manual.rs1use std::path::Path;
9
10include!(concat!(env!("OUT_DIR"), "/manual_files.rs"));
11
12pub fn write_manual_module(src_dir: &Path) {
14 let manual_dir = src_dir.join("manual");
15 if manual_dir.exists() {
16 std::fs::remove_dir_all(&manual_dir)
17 .unwrap_or_else(|e| panic!("Failed to clean {}: {e}", manual_dir.display()));
18 }
19 std::fs::create_dir_all(&manual_dir)
20 .unwrap_or_else(|e| panic!("Failed to create {}: {e}", manual_dir.display()));
21
22 for (name, contents) in MANUAL_FILES {
23 std::fs::write(manual_dir.join(name), contents)
24 .unwrap_or_else(|e| panic!("Failed to write manual/{name}: {e}"));
25 }
26 eprintln!(" manual/: {} files", MANUAL_FILES.len());
27}
28
29pub fn gating_features() -> std::collections::BTreeSet<&'static str> {
33 const MARKER: &str = "feature = \"";
34 let mut features = std::collections::BTreeSet::new();
35 for (_, contents) in MANUAL_FILES {
36 let mut rest = *contents;
37 while let Some(at) = rest.find(MARKER) {
38 rest = &rest[at + MARKER.len()..];
39 if let Some(end) = rest.find('"') {
40 features.insert(&rest[..end]);
41 rest = &rest[end..];
42 }
43 }
44 }
45 features
46}