2016-12-25 11 views
8

Từ đọc this thread, có vẻ như nó có thể sử dụng shebang để chạy Rust *.Làm thế nào để thực thi mã Rust trực tiếp trên các hệ thống Unix? (sử dụng shebang)

#!/usr/bin/env rustc 

fn main() { 
    println!("Hello World!"); 
} 

Thực thi và chạy này thực hiện biên dịch, nhưng không chạy mã.

chmod +x hello_world.rs 
./hello_world.rs 

Tuy nhiên, điều này chỉ biên dịch mã thành hello_world.

Có thể thực thi trực tiếp *.rs tệp, tương tự như tập lệnh trình bao không?


* Đây tham chiếu rustx, tôi nhìn vào điều này, nhưng một kịch bản bash mà biên dịch kịch bản mỗi lần (không có bộ nhớ đệm) và không bao giờ loại bỏ các tập tin từ thư mục tạm, mặc dù điều này có thể được cải thiện của nó. Ngoài ra nó có giới hạn đáng kể mà nó không thể sử dụng thùng.

+1

https://github.com/killerswan/rustx? –

Trả lời

10

cargo-script. Điều đó cũng cho phép bạn sử dụng các phụ thuộc.

Sau khi cài đặt cargo-script qua cargo install cargo-script, bạn có thể tạo tập tin kịch bản của bạn (hello.rs) như thế này:

#!/usr/bin/env run-cargo-script 

fn main() { 
    println!("Hello World!"); 
} 

Để thực hiện điều đó, bạn cần phải:

$ chmod +x hello.rs 
$ ./hello.rs 
    Compiling hello v0.1.0 (file://~/.cargo/.cargo/script-cache/file-hello-d746fc676c0590b) 
    Finished release [optimized] target(s) in 0.80 secs 
Hello World! 

Để sử dụng thùng từ crates.io, vui lòng xem hướng dẫn trong README được liên kết ở trên.

1

Điều này dường như làm việc:

#!/bin/sh 
//usr/bin/env rustc $0 -o a.out && ./a.out && rm ./a.out ; exit 

fn main() { 
    println!("Hello World!"); 
} 
+1

Sẽ không làm việc cho bất cứ thứ gì cần thùng. – Shepmaster

+2

'&&' sẽ không xóa 'a.out' nếu chạy' a.out' trả về một mã thoát không phải. – ideasman42

Các vấn đề liên quan