diff --git a/Cargo.toml b/Cargo.toml index 32616afc2043187c358a33b00ff80c9800f442a1..6cef9804964f30d4cf15f1abe3a906e75a40ddc4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,9 +15,9 @@ signle_thread = [] [dependencies] -stdlib = { path = "../stdlib", default-features = false } -async-task = { path = "../async-task", default-features = false } -utils = { path = "../utils" } +stdlib = { git = "https://gitee.com/iot-ua/stdlib.git", default-features = false,branch="develop"} +async-task = { git = "https://gitee.com/iot-ua/async-task.git", default-features = false,branch="develop"} +utils = { git = "https://gitee.com/iot-ua/utils.git",branch="develop" } slab = { version = "0.4.6", default-features = false } [dev-dependencies] diff --git a/README.md b/README.md index aefff22af316d9aeb26856b4d1090520be661ef4..403ca25477032cc4936ea095752315418d7f6d30 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,49 @@ # async-executor -#### 介绍 +#### 1. 介绍 异步任务的异步执行器,用来对异步任务 `Task` 进行调度执行。 +#### 2. 编译指南 + +##### 2.1. 编译环境准备 + +1. 安装 `Rust`。通过 `rustup` 下载 `Rust`,这是一个管理 `Rust` 版本和相关工具的命令行工具。 +2. 安装 `Rust` 编译器 。本项目采用的编译器是 `rustc 1.61.0-nightly` 。这里需要强调的是 `nightly` 版本的是官方用来实验新功能的 **不稳定版本** 。此项目用到了很多 `Rust` 的 **不稳定特性**,因此只能选择 `nightly`。 +3. 安装 `Cargo`,这是 `Rust` 的构建系统和包管理器,大多数 `Rustacean` 们使用 `Cargo` 来管理他们的 `Rust` 项目,它可以帮你处理很多任务,比如构建代码,下载依赖库并编译这些库。 +4. 使用 `Cargo` 编译本项目。`cargo build` 编译一个包,`cargo check` 检查本地包及其所有依赖项是否有错误,`cargo clean` 删除 `Cargo` 过去生成的文件。`cargo build --release` 表示构建带有优化的包。 + +##### 2.2. 项目目录结构说明 + +- `async-executor` + - `examples` 示例代码 + - `src` + - `lib` 异步执行器单线程实现 + +##### 2.3. 条件编译 + +###### 2.3.1. 通过配置 `Cargo.toml` 配置文件可以实现条件编译 + +``` toml +[features] +# default 字段配置了默认启动哪些 feature。每一个 feature 都是一个列表,列表中的项表示将依赖于哪些 feature。 +# default = ["alloc"] 表示默认依赖于 alloc 。而 alloc 又依赖于 stdlib/alloc 和 sync-task/alloc 库,默认为 NO-STD 编译。 +# 若将 default = ["alloc"] 修改为 default = ["std"] 则表示依赖依赖项中包含 rust STD。 +# 注意事项:不能同时开启 alloc 和 std。编译时只能选择其中一个。即 default = ["alloc","std"] 是错误的,无法编译。 +default = ["alloc"] +alloc = ["stdlib/alloc", "async-task/alloc"] +std = ["stdlib/std", "async-task/std"] + +``` + +###### 2.3.2. 通过`Cargo`命令实现条件编译 + +```shell +# 注意事项:不能同时开启 alloc 和 std。编译时只能选择其中一个。即 cargo build --no-default-features --features "stdlib/std stdlib/alloc" 是错误的,无法编译。 +# STD 编译 +# --no-default-features 表示不开启默认 features ,--features "std" 会依赖用户列出的 features,也就是 std。 +cargo build --no-default-features --features "std" +# NO-STD +# --no-default-features 表示不开启默认 features ,--features "alloc" 会依赖用户列出的 features,也就是 alloc。 +cargo build --no-default-features --features "alloc" +``` +