标签: rust

如何访问命令行参数?

锈教程并没有解释如何在命令行中带参数.fn main()在所有示例中仅显示空参数列表.

从哪个访问命令行参数的正确方法是main什么?

command-line rust

147
推荐指数
6
解决办法
4万
查看次数

Rust中的traits和Haskell中的类型类有什么区别?

性状拉斯特似乎至少在表面上相似的类型类在Haskell,但我见过的人写的,有他们之间的一些差异.我想知道这些差异究竟是什么.

haskell traits rust

143
推荐指数
3
解决办法
1万
查看次数

在Rust中将String转换为int?

注意:此问题包含已弃用的1.0之前的代码!答案是正确的.

要将一个转换str为一个int在Rust中,我可以这样做:

let my_int = from_str::<int>(my_str);
Run Code Online (Sandbox Code Playgroud)

我知道如何将一个转换的唯一方法Stringint是得到它的一个切片,然后用from_str它像这样:

let my_int = from_str::<int>(my_string.as_slice());
Run Code Online (Sandbox Code Playgroud)

有没有办法直接将a转换Stringint

rust

137
推荐指数
6
解决办法
9万
查看次数

如何连接字符串?

如何连接以下类型组合:

  • strstr
  • Stringstr
  • StringString

string string-concatenation rust

133
推荐指数
6
解决办法
6万
查看次数

带有库和二进制文件的Rust包?

我想制作一个包含可重用库(实现大部分程序)的Rust包,以及使用它的可执行文件.

假设我没有混淆Rust模块系统中的任何语义,我的Cargo.toml文件应该是什么样的?

rust rust-cargo

132
推荐指数
4
解决办法
4万
查看次数

为什么Rust可执行文件如此庞大?

刚刚找到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 rust-cargo

128
推荐指数
5
解决办法
2万
查看次数

Rust程序如何从其Cargo包中访问元数据?

如何从包中的Rust代码访问Cargo包的元数据(例如版本)?在我的情况下,我正在构建一个命令行工具,我希望有一个标准的--version标志,我希望实现读取包的版本,Cargo.toml所以我不必在两个地方维护它.我可以想象还有其他人可能想要从程序中访问Cargo元数据.

rust rust-cargo

123
推荐指数
3
解决办法
1万
查看次数

iter和into_iter有什么区别?

我正在做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

117
推荐指数
4
解决办法
2万
查看次数

Rust的128位整数“ i128”如何在64位系统上工作?

Rust具有128位整数,这些整数用数据类型表示i128u128对于无符号整数):

let a: i128 = 170141183460469231731687303715884105727;
Run Code Online (Sandbox Code Playgroud)

Rust如何使这些i128值在64位系统上工作?例如,如何对这些进行算术运算?

据我所知,既然该值不能容纳在x86-64 CPU的一个寄存器中,那么编译器是否会以某种方式使用2个寄存器i128?还是他们改用某种大整数结构来表示它们?

x86-64 int128 bigint rust llvm-codegen

116
推荐指数
4
解决办法
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);
}
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)

reference move-semantics rust borrow-checker

115
推荐指数
2
解决办法
6万
查看次数