rust

    8热度

    1回答

    我想从一个向量中删除一些基于谓词的元素并收集结果。这里有一个(不工作),例如与期望的结果: let mut v: Vec<i32> = vec![1, 2, 3, 4, 5, 6]; let drained: Vec<i32> = v.iter().filter(|e| (*e) % 2 == 0).drain(..).collect(); assert_eq!(v, vec![1, 3,

    4热度

    2回答

    我想写一个与数据库一起工作的特征,并代表可以存储的东西。要做到这一点,这个特质继承了其他特征,其中包括serde::Deserialize特征。 trait Storable<'de>: Serialize + Deserialize<'de> { fn global_id() -> &'static [u8]; fn instance_id(&self) -> Vec<u8>

    1热度

    1回答

    我有一个变得太大的宏,所以我想将部分代码提取到函数中。当我这样做,我有一个问题,因为当宏是在调用点扩展的功能在范围: #[macro_use] mod macros { fn hi() { println!("Hello") } #[macro_export] macro_rules! say_hi { () => {

    5热度

    1回答

    我可以通过运行emcc -O3 -s WASM=1 -s SIDE_MODULE=1 -o sum.wasm sum.c从以下C代码生成相当小的(203字节)wasm文件。 #include <emscripten/emscripten.h> int EMSCRIPTEN_KEEPALIVE sum(int a, int b) { return a + b; } 拆输出: (m

    4热度

    1回答

    考虑下面的代码 struct Node { elem: i32, next: List, } pub enum List { Empty, More(Box<Node>), } 这将导致编译器抱怨: error[E0446]: private type `Node` in public interface --> src/main.rs:8:1

    7热度

    2回答

    我想与打印变量的存储位置(地址): let x = 1; println!("{:p}", &x); 这将打印的十六进制值0x7fff51ef6380,其十进制是140734568031104。 我的电脑有16GB的RAM,那为什么这个数字很大? x64体系结构是否使用大间隔序列而不是简单的1个增量来访问内存位置? 在x86上,通常是第一个位置,从0开始,然后1,2,等等。所以你可以有最高的

    1热度

    1回答

    struct A; impl A { fn foo(&mut self) {} } fn main() { let mut a = A; let x = &{ &mut a }; x.foo(); } error[E0389]: cannot borrow data mutably in a `&` reference --> src/mai

    3热度

    1回答

    我最近看到一个这样的代码: fn read() -> ! { unimplemented!() } fn read2() { } fn main() { read2(); read(); } 我找不到有关!任何信息的fn read()返回类型的任何地方,所以我没有任何想法,这是什么和什么。 我发现的唯一的事情似乎是毫无意义我: 使用!作为返回类型指示

    2热度

    1回答

    阅读防锈教程中,我发现下面的代码片段: let f = File::open("hello.txt"); let mut f = match f { Ok(file) => file, Err(e) => return Err(e) }; 这似乎是f可以有Result<_, _>类型的值(如果f == Err(e))或_类型的值(即,无论何种类型file恰好是)。 那

    4热度

    1回答

    当你运行该代码: #![allow(exceeding_bitshifts)] fn main() { const NUMBER: u64 = 0b_10101010; fn print_shift(i: u32) { println!("{:b}", NUMBER >> i); } print_shift(65); print