2个不稳定版本
使用旧的Rust 2015
0.2.0 | 2018年8月11日 |
---|---|
0.1.0 | 2018年8月10日 |
#2196 在 Rust 模式
15KB
295 行
jRust
这是什么疯狂的东西?
朋友们,这是一个解析类似Java语法的Rust宏,并将其作为Rust程序运行的Rust宏。
警告:这是一个非常早期的版本。 我只是想完成一个原型,以便在crates.io上保留这个名称。当然,我会在以后更多地关注这个非常有用的库。
为什么
"科学不是关于为什么,而是关于为什么不?为什么我们的大部分科学都是危险的,为什么不可以有安全的科学呢?实际上,为什么不发明一个特殊的逃生门,这样你出门的时候就不会因为 被解雇 而被踢到屁股上。" — Cave Johnsson, Portal 2
- 来源:Cave Johnsson, Portal 2
这个项目的整个想法是由 @nilset 发明的。
示例
java! {
public class Value {
int val;
---
public Value(this, int val) {
(this.val) = val;
}
public void print(this) {
System.out.println((this.val));
}
}
}
注意:这不是1:1的Java,因为存在一些限制。强调的是 this
,这是为了对抗Rust的宏卫生。
生成的Rust代码
可以使用 cargo-expand 进行检查
#[derive(Clone, Debug, Default)]
pub struct Value {
val: i32,
}
impl Value {
pub fn init(this: &mut Self, val: i32) {
this.val = val;
}
pub fn new(val: i32) -> Self {
let mut me = Self::default();
Self::init(&mut me, val);
me
}
}
impl Value {
pub fn print(this: &mut Self) -> () {
println!("{}", this.val);
}
}
显然这并不完美。清洁的代码、速度等是我将努力追求的,但它们不是优先事项。