Tag:

如何实现一个自定义的“fmt :: Debug”特性?

我认为你做这样的事情: extern crate uuid; use uuid::Uuid; use std::fmt::Formatter; use std::fmt::Debug; #[derive(Debug)] struct BlahLF { id: Uuid, } impl BlahLF { fn new() -> BlahLF { return BlahLF { id: Uuid::new_v4() }; } } impl Debug for BlahLF { fn fmt(&self, &mut f: Formatter) -> Result { write!(f.buf, "Hi: {}", self.id); } } …但试图实现这个特质会产生: error[E0243]: wrong […]

如何将字节(u8)的向量转换为string

我正在尝试在Rust中编写简单的TCP / IP客户端,并且需要打印出从服务器获得的缓冲区。 如何将u8vector转换为String进行打印?

如何将string转换为&'静态str

我不知道如何将一个String (以前的StrBuf )转换成一个&str 。 更具体地说,我想把它转换成一个具有静态生命周期的str( &'static str )

铁锈有什么,而不是垃圾收集器?

一个基本的问题,但我是新的Rust / C / C + +等。我知道Rust没有垃圾收集器,我想知道当一个绑定超出范围时如何释放内存。 所以在这个例子中,我知道Rust退回给分配给'a'的内存当它超出范围。 { let a = 4 } 我遇到的这个问题首先是如何发生的,其次,这不是一种垃圾收集? 它与“典型”垃圾收集有什么不同? 道歉,我知道这有点基本,但我来自dynamic语言。

如何从同一个项目的另一个文件中包含模块?

按照这个指南,我创build了一个货物项目 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() […]

为什么不鼓励接受对String(&String)或Vec(&Vec)作为函数参数的引用?

我写了一些将&String作为参数的Rust代码: fn awesome_greeting(name: &String) { println!("Wow, you are awesome, {}!", name); } 我也写了代码,参考一个Vec : fn total_price(prices: &Vec<i32>) -> i32 { prices.iter().sum() } 不过,我收到一些反馈,这样做不是一个好主意。 为什么不?

有一个更快/更短的方式来初始化Rust结构中的variables?

在下面的例子中,我更喜欢在字段的声明中为结构中的每个字段赋值。 或者,它有效地为每个字段添加一个额外的语句为字段分配一个值。 我希望能够做的就是当结构被实例化时分配默认值。 有没有更简洁的方法呢? struct cParams { iInsertMax: i64, iUpdateMax: i64, iDeleteMax: i64, iInstanceMax: i64, tFirstInstance: bool, tCreateTables: bool, tContinue: bool, } impl cParams { fn new() -> cParams { cParams { iInsertMax: -1, iUpdateMax: -1, iDeleteMax: -1, iInstanceMax: -1, tFirstInstance: false, tCreateTables: false, tContinue: false, } } }

连接运算符在stringvector上的等效性是什么?

我无法通过String向量find“join”运算符的Rust等价物。 我有一个Vec<String> ,我想join他们作为一个单一的String : let string_list = vec!["Foo".to_string(),"Bar".to_string()]; let joined = something::join(string_list,"-"); assert_eq!("Foo-Bar", joined);

如何在Rust中分割string?

如何在Rust中分割一个string? 从它的文档中不清楚。 在Java中,我会这样做: "some string 123 ffd".split("123");

Copy和Clone有什么不同?

这个问题似乎暗示它只是一个实现细节( memcpy vs ???),但我找不到任何明确的描述差异。