2个版本
0.1.1 | 2019年6月26日 |
---|---|
0.1.0 | 2019年6月26日 |
#1975 在 进程宏 中
13KB
182 行
off-side.rs
构建 | 状态 |
---|---|
Travis-CI |
使用偏移侧语法(使用缩进来代替花括号,类似于Python)来编写Rust!
免责声明:实现语言的另一种标准显然不是一个好主意。该项目只是一个用于娱乐的证明概念。
偏移侧规则
偏移侧规则 指的是计算机语言使用缩进而不是使用 {}
花括号来区分代码层次。著名的例子包括 YAML(一种数据序列化语言)、Python(一种编程语言)和 PugJS(一种JavaScript标记预处理器语言)。
示例
#[macro_use]
extern crate off_side;
use std::io::{Error, ErrorKind};
off_side! {
fn try_int(i: i32) -> Result<i32, Error>:
match i:
0 => Ok(1),
1 => Err(Error::new(ErrorKind::NotFound, "Hello")),
_ => unreachable!(),
fn main():
for i in 0..2:
let result = try_int(i);
let num = match result:;
Ok(i) => i,
Err(err) => err.raw_os_error().unwrap_or_else(|| 3),
println!("num: {}", num);
}
语法规范
- 缩进规则遵循
indent-stack
crate 中的规范。 - 由于
proc_macro
限制,所有缩进字符都被视为相同。换句话说,如果你混合了制表符和空格,制表符将被视为一个空格。 - 不要在行首放置块注释
/* */
。它们 可能 也会被视为空格。 - 在应该用花括号包裹的缩进块的父行上,在父行末尾添加额外的
:
。 - 如果花括号的缩进块应该跟一个分号(例如
let
语句与match
或if
/else
),在父行末尾添加:;
。
最终免责声明
这个库是一个 证明概念,并且 仅用于娱乐。不推荐在生产环境中或公开发布的Crates中使用。
依赖项
~2MB
~46K SLoC