COMP6991 RSheet Rust 代写
这是一份关于计算机科学课程作业的文档,主要内容是使用Rust语言实现一个多用户电子表格程序。
### 1. 作业概述
– **电子表格介绍**
– 电子表格是由单元格组成的网格,每个单元格可以包含一个值,使用“A1”方法寻址。本作业中,电子表格逻辑将使用Rhai语言执行,通过`CellExpr`类型与该语言交互。
– **作业目标**
– 获得Rust并发管理经验,设计并构建能正确高效处理并发交互的程序,享受创建应用的过程。
– 明确不考核编写电子表格公式的能力以及编写无用代码的能力。
– **作业提交**
– 需提交`mark_request.txt`文件,用于讨论设计的优缺点。
### 2. 程序运行方式
– **使用起始代码**
– 以提供的起始代码为基础,只需实现`rsheet`库,可选择无参数运行查看效果,或使用网络地址接收指令。
– **参考解决方案**
– 可使用`6991 rsheet`命令运行参考解决方案检查行为。
### 3. 评分方式
– **不提供设计卓越评分**
– 与作业1不同,此次作业重点在并发设计,而非通用设计。
– **不提供整体反馈**
– 原因包括作业1已提供通用Rust反馈、本次重点是并发设计以及期末反馈学生兴趣不大。
– **通过回答问题评分**
– 要求回答5个关于设计的问题,反映设计思路,问题需明确具体,可在`mark_request.txt`文件中提问。
### 4. 任务完成阶段
– **阶段1:基本的获取和设置(15%)**
– 实现`get`和`set`命令,通过`Manager` trait接收命令,处理单个用户连接。`get`命令获取单元格值,`set`命令设置单元格值,需原子操作。
– **阶段2:在计算中使用变量(15%)**
– 在`set`命令中支持变量,包括标量、向量和矩阵变量,在阶段4之前可假设单元格依赖关系不变。
– **阶段3:多个读取器和写入器(20%)**
– 支持多个用户同时访问电子表格,每个连接在单独线程中处理,需保证单个用户的操作顺序。
– **阶段4:简单的依赖关系变化(20%)**
– 处理单元格之间的简单依赖关系,当一个单元格的值改变时,相关单元格需异步更新,需处理复杂的更新顺序边缘情况。
– **阶段5:多层依赖关系(20%)**
– 处理任意长度的依赖链,保证不出现循环依赖和自引用依赖。
### 5. 自动测试
– 可使用`6991 autotest`命令进行自动测试,有慢速和快速两种模式,测试结果按评分标准的权重计算。
### 6. 设计问题回答要求
– 在`mark_request.txt`文件中回答问题,每个问题不超过150字,需引用相关代码行。
### 7. 其他信息
– **使用其他库**
– 满足一定条件下可使用`crates.io`上的库。
– **评分方案**
– 包括机械风格(10%)、功能正确性(75%)和设计问题(15%)三个方面。
– **作业条件**
– 作业必须独立完成,禁止抄袭和共享代码,允许使用代码合成工具,但需对结果负责。
– **提交作业**
– 使用`6991 give – crate`命令在截止日期前提交,截止日期为第10周周五17:00:00。