该锈教程并没有解释如何在命令行中带参数.fn main()在所有示例中仅显示空参数列表.
从哪个访问命令行参数的正确方法是main什么?
注意:此问题包含已弃用的1.0之前的代码!答案是正确的.
要将一个转换str为一个int在Rust中,我可以这样做:
let my_int = from_str::<int>(my_str);
Run Code Online (Sandbox Code Playgroud)
我知道如何将一个转换的唯一方法String到int是得到它的一个切片,然后用from_str它像这样:
let my_int = from_str::<int>(my_string.as_slice());
Run Code Online (Sandbox Code Playgroud)
有没有办法直接将a转换String为int?
如何连接以下类型组合:
str 和 strString 和 strString 和 String我想制作一个包含可重用库(实现大部分程序)的Rust包,以及使用它的可执行文件.
假设我没有混淆Rust模块系统中的任何语义,我的Cargo.toml文件应该是什么样的?
刚刚找到Rust并阅读了文档的前两章,我发现他们定义语言的方法和方式特别有趣.所以我决定让我的手指湿润,开始使用Hello world ...
我在Windows 7 x64上这样做了,顺便说一下.
fn main() {
println!("Hello, world!");
}
Run Code Online (Sandbox Code Playgroud)
发行cargo build并查看结果targets\debug我发现所得.exe的存在3MB.经过一些搜索(很难找到货物命令行标志的文档......)我找到了--release选项并创建了发布版本.令我惊讶的是,.exe大小只变小了一小部分:2.99MB而不是3MB.
因此,承认我是Rust及其生态系统的新手,我的期望是系统编程语言会产生紧凑的东西.
任何人都可以详细说明Rust正在编译的内容,如何通过3个线程程序生成如此巨大的图像?它是否正在编译为虚拟机?我错过了一个strip命令(在发布版本中调试信息吗?)?还有什么可能让我们了解正在发生的事情?
如何从包中的Rust代码访问Cargo包的元数据(例如版本)?在我的情况下,我正在构建一个命令行工具,我希望有一个标准的--version标志,我希望实现读取包的版本,Cargo.toml所以我不必在两个地方维护它.我可以想象还有其他人可能想要从程序中访问Cargo元数据.
我正在做Rust示例教程,其中包含以下代码片段:
// Vec example
let vec1 = vec![1, 2, 3];
let vec2 = vec![4, 5, 6];
// `iter()` for vecs yields `&i32`. Destructure to `i32`.
println!("2 in vec1: {}", vec1.iter() .any(|&x| x == 2));
// `into_iter()` for vecs yields `i32`. No destructuring required.
println!("2 in vec2: {}", vec2.into_iter().any(| x| x == 2));
// Array example
let array1 = [1, 2, 3];
let array2 = [4, 5, 6];
// `iter()` for arrays yields `&i32`.
println!("2 in array1: {}", array1.iter() …Run Code Online (Sandbox Code Playgroud) Rust具有128位整数,这些整数用数据类型表示i128(u128对于无符号整数):
let a: i128 = 170141183460469231731687303715884105727;
Run Code Online (Sandbox Code Playgroud)
Rust如何使这些i128值在64位系统上工作?例如,如何对这些进行算术运算?
据我所知,既然该值不能容纳在x86-64 CPU的一个寄存器中,那么编译器是否会以某种方式使用2个寄存器i128?还是他们改用某种大整数结构来表示它们?
我不明白这个错误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);
}
Run Code Online (Sandbox Code Playgroud)
产生错误:
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 content
Run Code Online (Sandbox Code Playgroud)
我通过克隆解决了这个问题line:
error[E0507]: cannot move out of `*line` which is behind a shared reference
--> src/main.rs:31:33
|
31 | for current_char in line.into_bytes().iter() {
| ^^^^ …Run Code Online (Sandbox Code Playgroud) rust ×10
rust-cargo ×3
bigint ×1
command-line ×1
haskell ×1
int128 ×1
llvm-codegen ×1
reference ×1
string ×1
traits ×1
x86-64 ×1