小编bit*_*ner的帖子

如何使用索引位置迭代Vec <T>?

我需要迭代一个Vec但我需要每个迭代元素的位置.我确定这已经在API中,但我看不到它.

我需要这样的东西:

fn main() {
    let v = vec![1; 10];
    for (pos, e) in v.iter() {
        // do something here
    }
}
Run Code Online (Sandbox Code Playgroud)

iterator for-loop rust

12
推荐指数
1
解决办法
2004
查看次数

在可变Vec中弹出最后N个元素的惯用方法是什么?

我正在向RosettaCode贡献Rust代码,以便学习Rust并同时为Rust社区做出贡献.弹出mutable中最后n个元素的最佳惯用方法是什么Vec

这大致是我写的,但我想看看是否有更好的方法:

fn main() {
    let mut nums: Vec<u32> = Vec::new();
    nums.push(1);
    nums.push(2);
    nums.push(3);
    nums.push(4);
    nums.push(5);

    let n = 2;
    for _ in 0..n {
        nums.pop();
    }

    for e in nums {
        println!("{}", e)
    }
}
Run Code Online (Sandbox Code Playgroud)

(游乐场链接)

rust

9
推荐指数
2
解决办法
3052
查看次数

高效将struct序列化为磁盘

我的任务是将C++代码替换为Go,而我是Go API的新手.我使用gob将数百个键/值条目编码到磁盘页面,但gob编码有太多膨胀,不需要.

package main

import (
    "bytes"
    "encoding/gob"
    "fmt"
)
type Entry struct {
    Key string
    Val string
}

func main() {
    var buf bytes.Buffer
    enc := gob.NewEncoder(&buf)
    e := Entry { "k1", "v1" }
    enc.Encode(e)
    fmt.Println(buf.Bytes())
}
Run Code Online (Sandbox Code Playgroud)

这会产生很多我不需要的臃肿:

[35 255 129 3 1 1 5 69 110 116 114 121 1 255 130 0 1 2 1 3 75 101 121 1 12 0 1 3 86 97 108 1 12 0 0 0 11 255 130 1 2 …
Run Code Online (Sandbox Code Playgroud)

serialization struct go gob

7
推荐指数
2
解决办法
6606
查看次数

如何使用索引位置压缩Vec <T>

在我的问题之后,如何在Rust中迭代具有索引位置的Vec,现在我需要将两个动态向量与其索引位置压缩.

rust

1
推荐指数
1
解决办法
2732
查看次数

标签 统计

rust ×3

for-loop ×1

go ×1

gob ×1

iterator ×1

serialization ×1

struct ×1