Starlark-Rust 项目教程
1. 项目目录结构及介绍
starlark-rust/
├── Cargo.toml
├── LICENSE
├── README.md
├── src/
│ ├── lib.rs
│ ├── parser.rs
│ ├── interpreter.rs
│ └── ...
└── tests/
├── test_parser.rs
├── test_interpreter.rs
└── ...
目录结构说明
- Cargo.toml: 项目的配置文件,定义了项目的依赖、元数据等信息。
- LICENSE: 项目的开源许可证文件,本项目使用 Apache-2.0 许可证。
- README.md: 项目的介绍文件,包含了项目的概述、安装方法、使用说明等。
- src/: 项目的源代码目录,包含了主要的 Rust 代码文件。
- lib.rs: 项目的入口文件,定义了库的公共接口。
- parser.rs: 解析器模块,负责将 Starlark 代码解析为抽象语法树(AST)。
- interpreter.rs: 解释器模块,负责执行解析后的代码。
- tests/: 项目的测试代码目录,包含了各种单元测试和集成测试。
2. 项目启动文件介绍
src/lib.rs
lib.rs
是 Starlark-Rust 项目的入口文件,定义了库的公共接口。它包含了项目的初始化代码和主要功能模块的导出。
// src/lib.rs
pub mod parser;
pub mod interpreter;
pub fn run_script(script: &str) -> Result<(), String> {
let ast = parser::parse(script)?;
interpreter::interpret(ast)
}
启动流程
- 解析代码: 调用
parser::parse
函数将输入的 Starlark 代码解析为抽象语法树(AST)。 - 执行代码: 调用
interpreter::interpret
函数执行解析后的 AST。
3. 项目配置文件介绍
Cargo.toml
Cargo.toml
是 Rust 项目的配置文件,定义了项目的依赖、元数据等信息。
[package]
name = "starlark-rust"
version = "0.1.0"
edition = "2021"
[dependencies]
serde = "1.0"
serde_json = "1.0"
[dev-dependencies]
assert_cmd = "1.0"
配置说明
- [package]: 定义了项目的名称、版本和使用的 Rust 版本。
- [dependencies]: 定义了项目运行时所需的依赖库。
serde
: 用于序列化和反序列化数据。serde_json
: 用于处理 JSON 数据。
- [dev-dependencies]: 定义了开发和测试时所需的依赖库。
assert_cmd
: 用于编写命令行测试。
通过以上配置,项目可以顺利编译和运行,并且可以方便地进行扩展和测试。