Search Contract

search 함수는 원본 줄을 빌려 반환하는 계약이다

테스트가 붙잡는 핵심은 query를 포함한 줄만 골라내되, 반환되는 슬라이스의 원본이 contents라는 점이다.

부분 코드 의미
검색어 query: &str 찾을 기준이지만 반환값이 빌리는 원본은 아니다.
원본 contents: &'a str 반환되는 각 줄 슬라이스가 실제로 빌려 오는 대상이다.
출력 Vec<&'a str> 문자열을 새로 만들지 않고 contents 내부의 줄을 모은다.
lines

contents를 줄 단위 반복자로 바꾼다.

contains

현재 줄이 query를 포함하는지 본다.

collect

일치한 줄의 참조만 결과에 담는다.

return

호출자는 원본이 살아 있는 동안 읽는다.

unit duct

테스트는 한 줄만 반환되는지 고정한다.

CLI frog

시에서 일치하는 한 줄이 출력된다.

CLI body

여러 줄 결과가 순서대로 유지된다.

empty monomorphization

일치 없음은 빈 결과가 올바른 동작이다.

테스트 기준

동작은 검색 결과 줄 목록으로 검증한다.

라이프타임 기준

반환 참조는 contents보다 오래 살 수 없다.

구현 기준

반복자 리팩터링 후에도 계약은 유지된다.