Я хотел бы проверить определенные операции в Rust, но у меня, похоже, возникают проблемы:
fn main(){
let needle = (0..100).map(|_| "b").collect::<String>();
let haystack = (0..100_000).map(|_| "a").collect::<String>();
println!("Data ready.");
for _ in 0..1_000_000 {
if haystack.contains( &needle ) {
// Stuff...
}
}
}
Вышеупомянутое занимает очень много времени, чтобы завершить ту же операцию в Ruby за 4,5 секунды:
needle = 'b' * 100
haystack = 'a' * 100_000
puts 'Data ready.'
1_000_000.times do
haystack.include? needle
end
Я не могу не думать, что я делаю что-то принципиально неправильно. Каким будет правильный способ сделать это в Rust?
rustc 1.0.0 (a59de37e9 2015-05-13) (built 2015-05-14)
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]