Questions tagged «rust»

Rust是一种没有垃圾回收器的系统编程语言,主要关注三个目标:安全性,速度和并发性。使用此标签可解决有关用Rust编写的代码的问题。对于特定于代码的问题,请使用特定于版本的标签,例如需要使用特定版本的代码,例如[rust-2018]。对[rust-cargo]和[rust-macros]等子主题使用更具体的标签。

11
如何访问命令行参数?
该锈教程并没有解释如何在命令行中带参数。fn main()在所有示例中,仅显示一个空参数列表。 从中访问命令行参数的正确方法是main什么?
153 command-line  rust 

5
为什么Rust可执行文件如此庞大?
刚找到Rust并阅读了文档的前两章后,我发现他们定义语言的方法和方式特别有趣。所以我决定弄湿我的手指,然后开始使用Hello world ... 我是在Windows 7 x64,btw上执行的。 fn main() { println!("Hello, world!"); } 发出cargo build并查看结果后,targets\debug我发现结果.exe为3MB。经过一些搜索(很难找到货运命令行标志的文档...),我找到了--release选项并创建了发布版本。令我惊讶的是,.exe的大小仅变小了一点:2.99MB而不是3MB。 因此,承认我是Rust及其生态系统的新手,我期望系统编程语言会产生紧凑的东西。 谁能详细说明Rust编译的内容,如何通过3线性程序生成如此大的图像?它可以编译到虚拟机吗?我是否错过了一个剥离命令(在发行版内部调试信息?)?还有什么可能让您了解正在发生的事情吗?
153 rust  rust-cargo 

2
Rust程序如何从其Cargo包中访问元数据?
如何从包装中的Rust代码访问货运包装的元数据(例如版本)?就我而言,我正在构建一个命令行工具,我希望它具有一个标准--version标志,并且我希望实现能够从中读取软件包的版本,Cargo.toml因此我不必在两个地方进行维护。我可以想象还有其他原因,可能有人也希望从该程序访问Cargo元数据。
150 rust  rust-cargo 


3
如何创建全局的可变单例?
在系统中只有一个实例的情况下,创建和使用结构的最佳方法是什么?是的,这是必需的,它是OpenGL子系统,将其制作多个副本并将其传递到任何地方都会增加混乱,而不是缓解它。 单例需要尽可能高效。似乎不可能在静态区域上存储任意对象,因为它包含Vec带有析构函数的。第二种选择是在静态区域上存储一个(不安全的)指针,该指针指向分配给堆的单例对象。在保持语法简洁的同时,最方便,最安全的方法是什么。
140 rust 

1
在Rust 1.x中读取和写入文件的实际方法是什么?
随着Rust相对较新,我已经看到了太多的读写文件的方法。有人为他们的博客想出了很多非常混乱的片段,而我发现的示例(甚至在Stack Overflow中)有99%来自不稳定的构建,这些构建不再起作用。现在,Rust稳定了,什么是用于读取或写入文件的简单,易读,不会惊慌的代码段? 这是我在读取文本文件方面最接近的一种东西,但是即使我确定我已经包含了我应该拥有的所有东西,它仍然没有编译。这是基于我在所有地方的Google+上发现的摘录的,而我唯一更改的是,旧BufferedReader的现在只是BufReader: use std::fs::File; use std::io::BufReader; use std::path::Path; fn main() { let path = Path::new("./textfile"); let mut file = BufReader::new(File::open(&path)); for line in file.lines() { println!("{}", line); } } 编译器抱怨: error: the trait bound `std::result::Result<std::fs::File, std::io::Error>: std::io::Read` is not satisfied [--explain E0277] --> src/main.rs:7:20 |> 7 |> let mut …
136 file-io  rust 


3
如何包含来自同一项目中另一个文件的模块?
按照本指南,我创建了一个货运项目。 src/main.rs fn main() { hello::print_hello(); } mod hello { pub fn print_hello() { println!("Hello, world!"); } } 我运行使用 cargo build && cargo run 并且它编译没有错误。现在,我试图将主模块一分为二,但无法弄清楚如何从另一个文件中包含一个模块。 我的项目树看起来像这样 ├── src ├── hello.rs └── main.rs 以及文件的内容: src/main.rs use hello; fn main() { hello::print_hello(); } src/hello.rs mod hello { pub fn print_hello() { println!("Hello, …
130 rust 

4
Rust的128位整数“ i128”如何在64位系统上工作?
Rust具有128位整数,这些整数用数据类型表示i128(u128对于无符号整数): let a: i128 = 170141183460469231731687303715884105727; Rust如何使这些i128值在64位系统上工作?例如,如何对它们进行算术运算? 据我所知,既然该值不能容纳在x86-64 CPU的一个寄存器中,那么编译器是否会以某种方式使用2个寄存器i128?还是他们改用某种大整数结构来表示它们?


1
无法移出借用的内容/不能移出共享引用的后面
我不明白这个错误cannot move out of borrowed content。我已经收到了很多次,并且我一直都解决了它,但是我从来不明白为什么。 例如: for line in self.xslg_file.iter() { self.buffer.clear(); for current_char in line.into_bytes().iter() { self.buffer.push(*current_char as char); } println!("{}", line); } 产生错误: error[E0507]: cannot move out of borrowed content --> src/main.rs:31:33 | 31 | for current_char in line.into_bytes().iter() { | ^^^^ cannot move out of borrowed …

2
为什么不鼓励接受对字符串(&String),Vec(&Vec)或Box(&Box)的引用作为函数参数?
我写了一些以a &String作为参数的Rust代码: fn awesome_greeting(name: &String) { println!("Wow, you are awesome, {}!", name); } 我还编写了引用Vec或的代码Box: fn total_price(prices: &Vec<i32>) -> i32 { prices.iter().sum() } fn is_even(value: &Box<i32>) -> bool { **value % 2 == 0 } 但是,我收到一些反馈,认为这样做不是一个好主意。为什么不?

3
字符串向量上的join运算符等效于什么?
我无法在Strings 的向量上找到“ join”运算符的Rust等效项。我有一个Vec<String>,我想作为一个人加入他们String: let string_list = vec!["Foo".to_string(),"Bar".to_string()]; let joined = something::join(string_list,"-"); assert_eq!("Foo-Bar", joined); 有关: 在Rust中打印用空格分隔的迭代器的惯用方式是什么?
120 string  rust 

2
Rust中的'let x = x'是做什么的?
我在野外看到了这段代码: fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap()); let fields = fields; 这条let fields = fields;线是做什么的?为什么在那儿?
117 rust 

1
返回Iterator(或任何其他特征)的正确方法是什么?
以下Rust代码可以编译并运行,没有任何问题。 fn main() { let text = "abc"; println!("{}", text.split(' ').take(2).count()); } 在那之后,我尝试了类似的方法....但是它没有编译 fn main() { let text = "word1 word2 word3"; println!("{}", to_words(text).take(2).count()); } fn to_words(text: &str) -> &Iterator<Item = &str> { &(text.split(' ')) } 主要问题是我不确定函数to_words()应该具有哪种返回类型。编译器说: error[E0599]: no method named `count` found for type `std::iter::Take<std::iter::Iterator<Item=&str>>` in the current scope …
114 rust 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.