4个版本
0.2.2 | 2023年3月10日 |
---|---|
0.2.1 | 2023年3月10日 |
0.2.0 | 2023年3月10日 |
0.1.0 | 2023年3月10日 |
#1003 在 过程宏 中
16KB
175 代码行
structs-from-excel
此crate添加了一个过程宏,该宏可以根据给定的Excel电子表格生成struct。这是为项目制作的,其中我知道其中一个帮助的人不希望与JSON或XML或任何合理的事情一起工作。对不起。
宏的调用方法如下
use structs_from_excel;
#[sheet("resources/objects.xls")]
pub struct Object; // This struct will get ignored and replaced by whatever structs you define. Anything can go here, pretty much.
然后读取并解析每个电子表格,注意以下规则
- 第一行的第一个单元格应称为name。
- 第一行每个后续单元格的名称都用作每个struct的名称。
- 第一行后续的单元格用于字段名称。
以下两个电子表格
变为
enum StructsFromExcel {
Slime(Slime),
OtherSlime(OtherSlime),
PlayerOne(PlayerOne),
PlayerTwo(PlayerTwo),
PlayerThree(PlayerThree),
PlayerFour(PlayerFour),
}
pub struct Slime {
pub hp: i32,
}
impl Default for Slime {
fn default() -> Self {
Self { hp: 30 }
}
}
impl Slime {
pub fn new() -> Self {
return Default::default();
}
}
pub struct OtherSlime {
pub hp: i32,
}
impl Default for OtherSlime {
fn default() -> Self {
Self { hp: 60 }
}
}
impl OtherSlime {
pub fn new() -> Self {
return Default::default();
}
}
pub struct PlayerOne {
pub what: f32,
pub wa: String,
pub hp: i32,
}
impl Default for PlayerOne {
fn default() -> Self {
Self {
what: 15.5,
wa: String::from("lorem"),
hp: 20,
}
}
}
impl PlayerOne {
pub fn new() -> Self {
return Default::default();
}
}
pub struct PlayerTwo {
pub hp: i32,
pub wa: String,
pub what: f32,
}
impl Default for PlayerTwo {
fn default() -> Self {
Self {
hp: 20,
wa: String::from("ipsum"),
what: 15.5,
}
}
}
impl PlayerTwo {
pub fn new() -> Self {
return Default::default();
}
}
pub struct PlayerThree {
pub what: f32,
pub wa: String,
pub hp: i32,
}
impl Default for PlayerThree {
fn default() -> Self {
Self {
what: 15.5,
wa: String::from("dot"),
hp: 20,
}
}
}
impl PlayerThree {
pub fn new() -> Self {
return Default::default();
}
}
pub struct PlayerFour {
pub what: f32,
pub wa: String,
pub hp: i32,
}
impl Default for PlayerFour {
fn default() -> Self {
Self {
what: 15.5,
wa: String::from("ament"),
hp: 20,
}
}
}
impl PlayerFour {
pub fn new() -> Self {
return Default::default();
}
}
依赖
~6.5MB
~177K SLoC