기타 Lobsters · 2026-09-24

"러스트에 이름 있는 인자 문법 없어도 되는 이유"

핵심 요약
  • 러스트 개발자들 사이에서 파이썬처럼 '이름 있는 인자' 문법을 언어에 추가해야 하는지에 대한 논쟁이 이어졌습니다.
  • 작성자는 새로운 문법을 추가하는 대신 러스트의 기존 구조체(struct)를 활용하면 복잡한 언어 설계 문제 없이 80%의 편리함을 누릴 수 있다고 주장했습니다.
  • 인자 묶음을 타입 시스템으로 다룸으로써 함수 포인터 명세나 인자 평가 순서 등의 골치 아픈 문제를 깔끔하게 회피할 수 있다는 분석입니다.
요약 러스트(Rust) 언어에 '이름 있는 인자(named arguments)'나 '기본값 인자(default arguments)' 문법을 도입해야 할지를 두고 개발자들 사이에서 흥미로운 논쟁이 이어지고 있습니다. 유명 개발자 스티브 클랍닉(Steve Klabnik)이 함수 오버로딩과 이름 있는 인자 도입에 대해 신중한 입장을 밝힌 데 이어, corrode의 러스트 컨설턴트 역시 이에 적극 공감하며 "새로운 문법 없이도 기존 러스트의 타입 시스템만으로 80% 이상의 사용성을 얻을 수 있다"는 글을 공유했습니다. 파이썬이나 코틀린 같은 언어에서는 함수를 호출할 때 매개변수 이름을 직접 명시할 수 있어 편리하지만, 글쓴이는 러스트에서 이미 지원하는 '구조체(struct)'가 사실상 더 우수한 대체재 역할을 한다고 설명합니다. 예를 들어 이미지 크롭 함수처럼 `u32` 타입 인자가 4개 연속으로 이어지는 혼란스러운 API는, `Crop { x, y, width, height }` 형태의 구조체를 넘기도록 설계하면 즉시 해결됩니다. 이렇게 하면 필드 순서를 자유롭게 바꿀 수 있고 오타 검사, 자동완성, 문서화 혜택까지 공짜로 얻을 수 있습니다. 무엇보다 매개변수 이름을 함수의 호출 규약(calling convention)에 얽매이게 만드는 대신 '타입'에 속하게 만듦으로써 함수 포인터 타입 정의의 모호함이나 인자 평가 순서(evaluation order) 같은 복잡한 언어 설계 문제를 자연스럽게 회피할 수 있습니다. 글쓴이는 모든 함수에 억지로 구조체를 만들 필요는 없지만, 여러 개의 인자가 묶여 의미를 갖거나 옵션이 많아지는 순간이 바로 도메인 개념을 구조체로 모델링해야 할 타이밍이라고 짚었습니다. 결국 다른 언어들이 함수 호출 문법의 마법으로 해결하려는 문제를 러스트는 강력한 타입 시스템과 데이터 값으로 깔끔하게 풀어내고 있다는 분석입니다.
Sponsored · 광고