faml
Home
入门示例
GitHub
  • 简体中文
  • English
Home
入门示例
GitHub
  • 简体中文
  • English
  • 前言
  • 入门示例
  • 结构和类型
  • 表达式
  • 方法
  • 高级用法

入门示例

假设我们现在有一个faml配置语言,内容如下:

[hello]
value = 12
name = $"hello {value + 12}"

我们希望在rust里使用修改hello.value属性的值,然后获得hello.name属性的值。现创建Rust项目,并加入faml依赖:

cargo new hello_faml
cd hello_faml
cargo add faml
cargo add anyhow

注意:由于示例代码使用了anyhow库进行错误处理,我们需要同时添加anyhow依赖。

在Cargo.toml文件中应该包含以下依赖:

[dependencies]
faml = "0.1"
anyhow = "1.0"

加入示例代码:

use anyhow::Result;

fn main() -> Result<()> {
    let faml_str = r#"
[hello]
value = 12
name = $"hello {value + 12}"
"#;
    let mut root = faml::FamlExpr::from_str(faml_str)?;
    root["hello"]["value"].set_int(30);
    let name = root["hello"]["name"].evaluate()?.as_str();
    println!("{}", name); // hello 42
    Ok(())
}

执行后将打印hello.name属性值:hello 42

代码说明

  1. 首先我们导入了anyhow::Result类型用于错误处理
  2. 使用faml::FamlExpr::from_str()解析faml字符串
  3. 通过root["hello"]["value"].set_int(30)修改value的值为30
  4. 通过root["hello"]["name"].evaluate()?.as_str()计算并获取name的值
  5. 由于value被修改为30,表达式value + 12的结果是42,所以最终输出hello 42
最近更新:: 2025/11/8 00:16
Contributors: fawdlstty
Prev
前言
Next
结构和类型