TDD

검색 기능은 실패하는 테스트에서 출발한다

minigrep의 핵심 로직을 테스트로 먼저 고정한 뒤, 컴파일 가능한 최소 코드와 실제 구현으로 좁혀간다.

Fail

기대 동작 작성

query와 contents를 넣고 포함된 라인만 반환해야 한다고 테스트로 선언한다.
Compile

최소 함수 추가

빈 벡터라도 반환해 테스트가 컴파일되고 실패 이유가 분명해지게 만든다.
Pass

lines와 contains

contents의 각 줄을 검사해 조건에 맞는 문자열 슬라이스를 모은다.

핵심 시그니처: pub fn search<'a>(query: &str, contents: &'a str) -> Vec<&'a str>