검색 기능은 실패하는 테스트에서 출발한다
minigrep의 핵심 로직을 테스트로 먼저 고정한 뒤, 컴파일 가능한 최소 코드와 실제 구현으로 좁혀간다.
최소 함수 추가
빈 벡터라도 반환해 테스트가 컴파일되고 실패 이유가 분명해지게 만든다.lines와 contains
contents의 각 줄을 검사해 조건에 맞는 문자열 슬라이스를 모은다.핵심 시그니처: pub fn search<'a>(query: &str, contents: &'a str) -> Vec<&'a str>