["1", ".", "1", ".", "1", ".", "1"]该字符串是一个ip,因此没有常用字符。 我尝试做try_i-6ren">
gpt4 book ai didi

rust - 如何在Rust中将字符串更改为数组

转载 作者:行者123 更新时间:2023-12-03 11:37:20 25 4
gpt4 key购买 nike

我将如何将str更改为字节或字符数组?
例如:"1.1.1.1" -> ["1", ".", "1", ".", "1", ".", "1"]该字符串是一个ip,因此没有常用字符。
我尝试做try_into()但得到了

expected array `[u8; 10]`
found struct `std::slice::Iter<'_, u8>`
任何指导将不胜感激。
编辑:
在我的用例中,我有一个名为Player的结构:
struct Player {
cards: [i32, 2],
chips: u32,
ip: [u8; 10],
folded: bool,
hand: u8,
}
我想将id设置为将要接收的字符串,并将其存储为数组。理想情况下,该结构将 impl复制,因此不能使用 vec
一个被制造的球员:
Player {
cards: [4,5],
chips: 500,
ip: "localhost", // how to change this to an array
folded: false,
hand: 0,
}

最佳答案

str slice 类型的特殊情况。并且与数组不同,它在编译时没有已知的大小(即在程序执行期间动态计算的大小),因此没有可靠的转换。但是您可以手动创建数组并遍历str以获得字节:

let s = "1.1.1.1";

let mut your_array = [0u8; 10];

if s.len() != your_array.len() {
// handle this somehow
}

s.bytes()
.zip(your_array.iter_mut())
.for_each(|(b, ptr)| *ptr = b);

关于rust - 如何在Rust中将字符串更改为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62480743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com