3 回答

TA贡献1809条经验 获得超8个赞
在 Rust 中,这取决于您要将这些值用于什么目的。我喜欢这个创建重复字符串的答案。“行”取决于您是否需要在 rust 中明确表示的引用或复制语义。borrows向量是一堆借来的字符串,它们引用x_s. 向量是原始字符串的copies一堆内存副本。x_s
use std::iter;
fn main() {
let num_rows = 1000;
let num_cols = 1000;
let x_s : String = iter::repeat('x').take(num_cols).collect();
// pick one of the below
let borrows : Vec<&str> = vec![&*x_s ; num_rows];
let copies : Vec<String> = vec![x_s.clone() ; num_rows];
}
最后一行中的调用clone是因为vec宏将发送的值移动到其中。在. vec_ num_rows_ copies请注意,clone在大多数用例中这可能不是必需的,因为您通常不会borrows同时copies在同一范围内。
作为警告,我对生锈还很陌生,但相信这是一个不错的答案。我很高兴接受更正。

TA贡献1865条经验 获得超7个赞
你可以使用切片。这可能不是最短的解决方案,但它对我有用。
package main
import (
"fmt"
"strings"
)
func main() {
xs := strings.Repeat("x", 1000)
num_rows := 5
num_cols := 5
data := make([][]string, num_rows)
for y := 0; y < num_rows; y++ {
data[y] = make([]string, num_cols)
for x := 0; x < num_cols; x++ {
data[y][x] = xs
}
}
fmt.Printf("%T", data)
fmt.Print(data)
}

TA贡献1825条经验 获得超6个赞
一个非常简单的 rust 在线示例:
fn main() {
let data: Vec<String> = (0..1000).map(|n| (0..n).map(|_| 'x').collect()).collect();
println!("{:?}", data);
}
- 3 回答
- 0 关注
- 378 浏览
添加回答
举报