查找字符串中的所有子字符串索引
Find all substring indices in string
我对 Rust 很陌生,(仍在努力阅读本书)并且正在用 Rust 重写我在 node.js 中编写的 DNA 搜索算法。到目前为止,我遇到的每个错误我都能够解决,除了这个错误。我正在尝试编写一个函数,它接受一个 DNA 序列和一个 3 个字母的标志,以及 returns 在输入序列中找到该标志的所有索引。
fn get_termination_flag_indices (input_sequence: String, flag: String) -> Vec<(usize, &'static str)> {
let flag_indices: Vec<_> = input_sequence.match_indices(&flag).into_iter().collect();
println!("{:?}", flag_indices);
flag_indices
}
我无法理解我收到的错误:
returns a value referencing data owned by the current function
我从一个非常高的层次理解它告诉我的是什么,但我不知道如何修复它。老实说,我还远远不够真正了解这里发生的事情。任何解释引擎盖下发生的事情的帮助都会非常有帮助。
这是我的解决方法(您可以将 flag
改成 &str
以使其变得更好,但这不是解决错误所必需的):
fn get_termination_flag_indices (input_sequence: &str, flag: String) -> Vec<(usize, &str)> {
let flag_indices: Vec<_> = input_sequence.match_indices(&flag).into_iter().collect();
println!("{:?}", flag_indices);
flag_indices
}
以下是我认为导致错误的原因:
不幸的是,我的知识还不够确定,但这里是:
调用 match_indices
时,会在后台创建 input_sequence
的引用(match_indices
引用 self
)。让我们给它一个 'a
的生命周期
之后,flag_indices
收集的 &str
具有相同的生命周期 'a
。问题是一旦函数 returns 和 flag_indices
,在函数内部创建的引用(生命周期 'a
)也会被删除。因此 flag_indices
现在包含已删除的引用。
我对 Rust 很陌生,(仍在努力阅读本书)并且正在用 Rust 重写我在 node.js 中编写的 DNA 搜索算法。到目前为止,我遇到的每个错误我都能够解决,除了这个错误。我正在尝试编写一个函数,它接受一个 DNA 序列和一个 3 个字母的标志,以及 returns 在输入序列中找到该标志的所有索引。
fn get_termination_flag_indices (input_sequence: String, flag: String) -> Vec<(usize, &'static str)> {
let flag_indices: Vec<_> = input_sequence.match_indices(&flag).into_iter().collect();
println!("{:?}", flag_indices);
flag_indices
}
我无法理解我收到的错误:
returns a value referencing data owned by the current function
我从一个非常高的层次理解它告诉我的是什么,但我不知道如何修复它。老实说,我还远远不够真正了解这里发生的事情。任何解释引擎盖下发生的事情的帮助都会非常有帮助。
这是我的解决方法(您可以将 flag
改成 &str
以使其变得更好,但这不是解决错误所必需的):
fn get_termination_flag_indices (input_sequence: &str, flag: String) -> Vec<(usize, &str)> {
let flag_indices: Vec<_> = input_sequence.match_indices(&flag).into_iter().collect();
println!("{:?}", flag_indices);
flag_indices
}
以下是我认为导致错误的原因:
不幸的是,我的知识还不够确定,但这里是:
调用 match_indices
时,会在后台创建 input_sequence
的引用(match_indices
引用 self
)。让我们给它一个 'a
之后,flag_indices
收集的 &str
具有相同的生命周期 'a
。问题是一旦函数 returns 和 flag_indices
,在函数内部创建的引用(生命周期 'a
)也会被删除。因此 flag_indices
现在包含已删除的引用。