argv order

cargo run -- 뒤의 두 값이 Vec의 1번, 2번 칸으로 들어간다

args[0]은 실행 파일 이름이므로 검색어와 파일 경로는 그 다음 위치에서 꺼내 변수에 연결한다.

cargo run -- needle haystack
명령 분리 Vec 참조

dbg! 출력으로 보는 위치

args[0] program
"target/debug/minigrep"

호출된 바이너리 이름이다. 이 예제에서는 검색 입력으로 쓰지 않는다.

args[1] query
"needle"

파일 안에서 찾을 문자열이며 다음 절에서 query 변수로 빌린다.

args[2] path
"haystack"

검색할 파일 경로이며 file_path 변수에 연결할 값이다.

검색어 변수

let query = &args[1];

소유권을 옮기지 않고 벡터 안의 문자열을 참조한다.

파일 경로 변수

let file_path = &args[2];

나중에 파일 읽기 단계에서 사용할 경로 문자열을 분리한다.

읽는 순서

cargo run 자체가 아니라 하이픈 두 개 뒤의 값이 minigrep으로 전달된다. 따라서 벡터 위치를 확인한 뒤 필요한 두 값만 변수로 저장한다.