试图在macOS上运行我的Rust程序有错误“use:command not found”

时间:2017-06-20 22:42:23

标签: macos rust

这是我在Atom中的代码,安装了Atom-Language-Rust软件包:

use std::{i8, i16, i32, i64, u8, u16, u32, u64, isize, usize, f32, 
f64};

use std::io::stdin;

fn main() {
    println!("Hello, world!");
}

这是我输入终端的内容:

rustc hello_world.rs -A warning
./hello_world.rs

这是错误消息:

./hello_world.rs: line 1: use: command not found
./hello_world.rs: line 2: use: command not found
./hello_world.rs: line 4: syntax error near unexpected token `('
./hello_world.rs: line 4: `fn main() {'

我在代码或设置中做错了什么?

1 个答案:

答案 0 :(得分:8)

您正在尝试执行源代码文件,而不是已编译的二进制文件。编译的重点是获取源代码并生成可执行文件。你想要

rustc hello_world.rs
./hello_world

让我们讨论所有其他问题:

  1. 最重要的是,您似乎在积极避免使用现有的惊人的免费资源来学习Rust。具体来说,我强烈建议你停止正在做的事情并阅读The Rust Programming Language, second edition的前几章。那里介绍了如何调用编译器和执行代码。提示:很少有人直接执行rustc,所有人都有很好的理由这样做。

  2. Rust编译器会告诉你一个有用的提示世界。这些被称为 lints 。但是,您似乎正在尝试通过-A warning 禁用lints 。作为初学者,忽略编译器的提示是一个非常糟糕的主意。

  3. -A warning甚至无效。试图使用它,我得到错误

      

    错误:未知lint:`warning`

    我有兴趣知道你在哪里学到了这一点,所以我们可以尝试从源头纠正错误信息。

  4. 您已导入 way 超出需要的内容。 需要通过use导入的行 - 编译器会在您阅读警告时告诉您。

  5. 对这个问题进行一点探索......

    不知何故,您已保存源代码文件并将其标记为可执行文件。当您尝试执行它时,操作系统和/或shell会检查它是否是二进制文件。如果不是,则会尝试将该文件视为 shell脚本。 Shell脚本在开头有一个名为 shebang #!)的特殊行,用于说明应该使用哪个解释器。由于此文件没有,因此假定它是/bin/sh解释器的shell脚本。

    因此,/bin/sh会传递您的Rust代码并尝试逐行运行它。这就是所有错误 - shell抱怨它尝试的每一行都没有语法上的有效。