3 回答

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個贊
在 Rust 中,這取決于您要將這些值用于什么目的。我喜歡這個創(chuàng)建重復(fù)字符串的答案?!靶小比Q于您是否需要在 rust 中明確表示的引用或復(fù)制語義。borrows向量是一堆借來的字符串,它們引用x_s. 向量是原始字符串的copies一堆內(nèi)存副本。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];
}
最后一行中的調(diào)用clone是因?yàn)関ec宏將發(fā)送的值移動到其中。在. vec_ num_rows_ copies請注意,clone在大多數(shù)用例中這可能不是必需的,因?yàn)槟ǔ2粫orrows同時copies在同一范圍內(nèi)。
作為警告,我對生銹還很陌生,但相信這是一個不錯的答案。我很高興接受更正。

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超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貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個贊
一個非常簡單的 rust 在線示例:
fn main() {
let data: Vec<String> = (0..1000).map(|n| (0..n).map(|_| 'x').collect()).collect();
println!("{:?}", data);
}
- 3 回答
- 0 關(guān)注
- 379 瀏覽
添加回答
舉報