테스트는 한 줄만 반환되는지 고정한다.
search 함수는 원본 줄을 빌려 반환하는 계약이다
테스트가 붙잡는 핵심은 query를 포함한 줄만 골라내되, 반환되는 슬라이스의 원본이 contents라는 점이다.
부분
코드
의미
검색어
query: &str
찾을 기준이지만 반환값이 빌리는 원본은 아니다.
원본
contents: &'a str
반환되는 각 줄 슬라이스가 실제로 빌려 오는 대상이다.
출력
Vec<&'a str>
문자열을 새로 만들지 않고 contents 내부의 줄을 모은다.
lines
contents를 줄 단위 반복자로 바꾼다.
contains
현재 줄이 query를 포함하는지 본다.
collect
일치한 줄의 참조만 결과에 담는다.
return
호출자는 원본이 살아 있는 동안 읽는다.
시에서 일치하는 한 줄이 출력된다.
여러 줄 결과가 순서대로 유지된다.
일치 없음은 빈 결과가 올바른 동작이다.
테스트 기준
동작은 검색 결과 줄 목록으로 검증한다.
라이프타임 기준
반환 참조는 contents보다 오래 살 수 없다.
구현 기준
반복자 리팩터링 후에도 계약은 유지된다.