Skip to main content

basic/
basic.rs

1use pklrust::{EvaluatorManager, EvaluatorOptions, ModuleSource};
2use serde::Deserialize;
3
4#[derive(Debug, Deserialize)]
5struct Server {
6    host: String,
7    port: i64,
8}
9
10fn main() -> Result<(), Box<dyn std::error::Error>> {
11    let mut manager = EvaluatorManager::new()?;
12    let opts = EvaluatorOptions::preconfigured();
13    let evaluator = manager.new_evaluator(opts)?;
14
15    // Evaluate inline Pkl text
16    let source = ModuleSource::text(
17        r#"
18        host = "localhost"
19        port = 8080
20        "#,
21    );
22
23    let server: Server = manager.evaluate_module_typed(&evaluator, source)?;
24    println!("Server: {server:?}");
25
26    // Evaluate a Pkl file (if it exists)
27    // let source = ModuleSource::file("config.pkl");
28    // let value = manager.evaluate_module(&evaluator, source)?;
29    // println!("Value: {value:?}");
30
31    manager.close_evaluator(&evaluator)?;
32    Ok(())
33}