Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在Rust中创建一个包含字符串和该字符串片段的结构吗?_Rust_Borrow Checker_Borrowing - Fatal编程技术网

我可以在Rust中创建一个包含字符串和该字符串片段的结构吗?

我可以在Rust中创建一个包含字符串和该字符串片段的结构吗?,rust,borrow-checker,borrowing,Rust,Borrow Checker,Borrowing,我试图创建一个结构,该结构接受输入字符串(并拥有它的所有权),进行一些计算,然后返回一个包含该字符串和该字符串的一些预计算片段的结构 比如: pub异步fn读取文件>{ 让contents=tokio::fs::读取字符串(路径)。等待?; let slice=昂贵的搜索(&内容); Ok(MyString::new(内容,片段)) } 发布结构MyString{ pub fn new(string:string,slice:&'a str)->MyString你能让搜索变得昂贵吗?将开始和结束

我试图创建一个结构,该结构接受输入字符串(并拥有它的所有权),进行一些计算,然后返回一个包含该字符串和该字符串的一些预计算片段的结构

比如:

pub异步fn读取文件>{
让contents=tokio::fs::读取字符串(路径)。等待?;
let slice=昂贵的搜索(&内容);
Ok(MyString::new(内容,片段))
}
发布结构MyString{

pub fn new(string:string,slice:&'a str)->MyString你能让搜索变得昂贵吗?
将开始和结束索引返回到字符串中,并将它们传递给
MyString::new()
?然后你可以像这样每次都创建一个新的片段

fn获取切片(&self)->&str{
&self.contents[self.start..self.end]
}

谢谢,我会试试。每次调用方想要访问这样的切片时,创建这样的切片是否“便宜”?一个切片基本上就是两个“usize”调整了变量的大小,因此它非常便宜。freenode irc网络上尼斯###锈频道的一位朋友通风报信说,您可以使用
std::ops::Range
而不是两个单独的开始和结束字段。然后您可以改为使用
&self.contents[self.Range]
`contents` does not live long enough

borrowed value does not live long enough
utils.rs(43, 31): borrowed value does not live long enough
utils.rs(45, 1): `contents` dropped here while still borrowed