Lorsqu’on execute le test, on obtient cette erreur, qui est assez indigeste.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
error[E0277]:thetraitbound`&str:Borrow<String>`isnotsatisfied-->src\main.rs:8:34|8|assert_that!(v).contains("abc");|-------- ^^^^^ the trait `Borrow<String>` is not implemented for `&str`
|||requiredbyaboundintroducedbythiscall|note:requiredbyaboundin`spectral::prelude::ContainingIntoIterAssertions::contains`-->C:\Users\pasde\.cargo\registry\src\github.com-1ecc6299db9ec823\spectral-0.6.0\src\iter.rs:22:1|22|generate_iter_spec_trait!(ContainingIntoIterAssertions);|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^requiredbythisboundin`spectral::prelude::ContainingIntoIterAssertions::contains`=note:thiserrororiginatesinthemacro`generate_iter_spec_trait`(inNightlybuilds,runwith-Zmacro-backtraceformoreinfo)
La raison est toute simple, on recherche dans un Vec<String> une valeur de type &str ce qui n’est pas très compatible. Il faut bien penser à convertir la valeur recherchée en String.
Exemple de code qui fonctionne :
1
2
3
4
5
6
7
8
9
10
#[cfg(test)]modtest{usespectral::prelude::*;#[test]fntest_spectral_with_vec(){letv=vec!["abc".to_string(),"def".to_string()];assert_that!(v).contains("abc".to_string());// convertir en string ici
}}