Skip to main content

fs_demo/
fs_demo.rs

1//! CLI demo for φ-fs: store/load named φ-memory
2//! Run with: cargo run --example fs_demo
3
4use hybrid_phi::core::hybrid_phi_inverse;
5use hybrid_phi::quantized_memory::phi_quantized_encode;
6use hybrid_phi::phi_fs::PhiMemoryStore;
7use std::fs::{self, File};
8use std::io::Write;
9use std::path::Path;
10
11fn main() {
12    let n = 10;
13    let step = 0.01;
14    let values = [1.0, 2.0, 3.14, 42.0];
15    let name = "phi_shape";
16    let store = PhiMemoryStore::new(".phi_store");
17
18    // Encode and store
19    let encoded: Vec<f64> = values.iter().map(|&w| phi_quantized_encode(w, n, step)).collect();
20    store.save(name, &encoded).expect("failed to save");
21
22    // Save metadata
23    let metadata_path = Path::new(".phi_store").join(format!("{}.meta.txt", name));
24    let mut meta_file = File::create(&metadata_path).expect("failed to create metadata");
25    writeln!(meta_file, "n={}", n).unwrap();
26    writeln!(meta_file, "step={:.5}", step).unwrap();
27    writeln!(meta_file, "length={}", encoded.len()).unwrap();
28    writeln!(meta_file, "saved_at={:?}", chrono::Utc::now()).unwrap();
29
30    // List contents
31    let entries = store.list().expect("failed to list");
32    println!("Stored φ-entries:");
33    for entry in entries {
34        println!("- {}", entry);
35    }
36
37    // Load and decode
38    let loaded = store.load(name).expect("failed to load");
39    println!("\nDecoded values from '{}':", name);
40    for (i, &q) in loaded.iter().enumerate() {
41        let r = hybrid_phi_inverse(q, n);
42        println!("  index {}: quant = {:.6}, recon = {:.6}", i, q, r);
43    }
44
45    // Optional cleanup
46    let _ = fs::remove_dir_all(".phi_store");
47}