现在编写Rust程序的时候,只要稍稍一不小心(比如漏了一个分号)
use std::env;
use std::path::PathBuf;
fn main(){
let dir = if let Some(td) = env::home_dir() {
td.join(".config")
} else {
if let Ok(td1) = env::current_dir() {
td1.join("passwd")
} else {
PathBuf::new()
}
}
(1+2).max(3);
}
我们得到的就是:
error[E0618]: expected function, found `std::path::PathBuf`
--> fuckif.rs:4:15
|
4 | let dir = if let Some(td) = env::home_dir() {
| _______________^
| |_______________|
| ||
5 | || td.join(".config")
6 | || } else {
7 | || if let Ok(td1) = env::current_dir() {
... ||
11 | || }
12 | || }
| ||_____^
13 | | (1+2).max(3);
| |__________- call expression requires function
error: aborting due to previous error; 1 warning emitted
For more information about this error, try `rustc --explain E0618`.
我知道,如果编译成功,我们完全可以借用gdb调BUG 但问题是,Rust不总是能编译成功,有些问题实在太见鬼(比如漏分号这个) 如果没看出是漏了分号,我们根本无法调试这个程序(因为连编译都过不了)
所以我突发奇想,Rust能否像Python或者R之类的语言一样,出一个解释器呢? 毕竟,用解释器编程超级方便的。 只要解释器支持把代码一键导出到.rs文件,在实际性能上,Rust也不会有什么额外的损失(甚至,因为解释器可以顺手存储某些做过的类型检查和推导,从而加速编译时间)
想知道,Rust会不会做类似的解释器 这样的解释器在实现上又会有什么样的困难
(我有一个很好的想法,现在,就差一个程序员了[狗头])
1
共 6 条评论, 1 页
评论区
写评论少个分好 没打 还让编译通过,你就不怕程序有bug吗
有人在做mun这个项目,似乎是对标lua的。可能符合楼主的需求。
不过不是rs本身解释,而是造另一门语言。
对以下内容的回复:
多谢告知,现在就去试试
已经有了,不过是基于MIR的 https://github.com/rust-lang/miri
对以下内容的回复:
如果提示“call expression requires function”的时候你能想到你其实漏了一个分号 编译不过也挺好
编译不过不是很好吗,一眼就看出来哪里问题