我刚刚开始学习铁 rust ,不能理解如何得到切片。
let word = "Хороший"; // I want to get last two symbols.
// word[word.len()-2..] // I understand that is not working because it is not byte array.
let chars = word.chars();
let v = chars.skip(chars.count() - i).map(|x| x).collect();
// But I don't know how to convert 'v' to &str type and do I need it at all?
rust 中的任务是如何解决的?谢谢!
2条答案
按热度按时间anauzrmj1#
您可以使用
char_indices
获取正确的偏移。(playground)ibrsph3r2#
你不能把
v
转换成一个&str
,它是char
的一个拥有的东西(向量?),char
是32 b的unicode标量值。第一次尝试接近成功,但是由于索引的工作方式,
word[word.len()-2..]
将返回一个str
,这是一个 *unsized类型 *,使用起来很复杂。但是您所要做的就是引用它,如文档中所示。
同样如文件所示,同样如文件所示:
й
在UTF8(d0b9
)中是两个字节,索引为-2将返回它所以一般来说,直接使用硬编码偏移量进行索引并不是最好的方法,通常更好的方法是模式搜索(匹配和朋友),使用
char_indices
以便知道在哪里切片,也可以使用chars
或char_indices
的as_str
方法。