TDD search board

실패 테스트가 검색 함수의 시그니처와 구현 범위를 정한다

minigrep의 `search`는 입력 텍스트에서 query를 포함한 라인만 빌려 반환하므로, 테스트와 라이프타임이 함께 설계 기준이 된다.

Fail first

테스트가 기대 라인을 고정

`duct`가 들어 있는 한 줄만 반환해야 한다고 먼저 선언한다.

Lifetime

반환값은 contents를 빌림

`'a`는 query가 아니라 contents와 `Vec<&'a str>`를 연결한다.

Implement

lines와 contains로 좁힘

각 줄을 순회하고 query 포함 여부가 참인 줄만 results에 넣는다.

Run

cargo run으로 실제 입력 확인

`frog`, `body`, 없는 단어까지 확인해 검색 결과의 모양을 본다.

테스트 기준 assert_eq!(vec!["safe, fast, productive."], search(query, contents));
구현 기준 for line in contents.lines() { if line.contains(query) { results.push(line); } }
1. Spec기대 라인 작성
2. Red예상 실패 확인
3. Green최소 구현 통과
4. Refactor반복자 개선 여지
5. CLI실제 실행 검증