Booil Jung

Rust 언어에 대한 심층 고찰

시스템 프로그래밍의 역사는 오랫동안 풀기 어려운 딜레마에 직면해왔다. 한편에는 C나 C++와 같이 하드웨어에 대한 직접적인 제어와 최고 수준의 성능을 제공하지만, 메모리 관리의 책임이 전적으로 개발자에게 있어 버퍼 오버플로우, 댕글링 포인터(dangling pointer)와 같은 치명적인 메모리 안전성 문제에 취약한 언어들이 있다.1 이러한 유형의 오류는 단순한 버그를 넘어 심각한 보안 취약점의 근원이 되어왔다.2 다른 한편에는 Java, Go, Python과 같이 가비지 컬렉터(Garbage Collector, GC)를 통해 메모리를 자동으로 관리하여 안전성을 높인 언어들이 있다. 그러나 이러한 편리함은 예측 불가능한 성능 저하(GC pauses)와 추가적인 런타임 오버헤드라는 대가를 치르며, 이는 실시간 시스템이나 극도의 성능이 요구되는 환경에서는 수용하기 어려운 제약이 된다.4

이러한 고전적인 ‘성능이냐, 안전성이냐’의 트레이드오프 구도 속에서, Rust는 이분법 자체에 근본적인 의문을 제기하며 등장했다. Rust의 핵심 명제는 C++ 수준의 성능과 저수준 제어 능력을 제공하는 동시에, 가비지 컬렉터 없이도 컴파일 시점에 메모리 및 스레드 안전성을 보장하는 것이다.6 이는 단순한 개선이 아닌, 프로그래밍 언어 설계의 패러다임 전환을 의미한다. Rust는 개발자와 컴파일러 간의 관계를 재정립한다. 기존 C/C++ 모델이 개발자의 규율과 광범위한 테스트에 의존하여 안전성을 확보하려 했다면, Rust는 정적 분석(static analysis)을 통해 컴파일러가 메모리 안전성을 수학적으로 증명하도록 책임을 전환한다.

본 보고서는 Rust가 어떻게 이러한 혁신적인 목표를 달성했는지 심층적으로 고찰하고자 한다. 보고서의 핵심 논지는 Rust가 ‘소유권(ownership)’이라는 독창적인 개념을 통해 시스템 프로그래밍의 오랜 딜레마를 해결하고, 안전성과 성능, 그리고 동시성을 타협 없이 달성하는 새로운 길을 제시했다는 것이다. 이를 증명하기 위해, 본 보고서는 Rust의 탄생 배경과 역사적 발전 과정을 추적하고, 그 이면에 있는 핵심 설계 철학을 분석할 것이다. 나아가 소유권, 빌림(borrowing), 생명주기(lifetimes)로 대표되는 핵심 메커니즘을 기술적으로 해부하고, 이것이 어떻게 ‘두려움 없는 동시성(fearless concurrency)’으로 이어지는지 탐구한다. 마지막으로 Cargo와 Crates.io를 중심으로 한 강력한 생태계, 주요 산업 분야에서의 실제 적용 사례, 그리고 C++, Go, Python과 같은 다른 주요 언어와의 비교 분석을 통해 Rust의 현재 위상과 미래 전망을 종합적으로 제시할 것이다.\

Rust의 역사는 2006년, 모질라(Mozilla)의 개발자였던 그레이던 호어(Graydon Hoare)의 개인적인 불만에서 시작되었다. 그는 자신이 살던 아파트의 엘리베이터 소프트웨어가 반복적으로 충돌하는 문제에 좌절감을 느꼈고, 이러한 시스템 소프트웨어의 불안정성이 대부분 메모리 관리 문제에서 비롯된다는 점을 간파했다.2 이 경험은 그에게 안전하고 신뢰할 수 있는 시스템을 만들 수 있는 새로운 프로그래밍 언어에 대한 영감을 주었다.6

호어는 이 프로젝트의 이름을 “생존을 위해 과도하게 설계된(over-engineered for survival)” 특성을 지닌 균류(fungi)의 한 종류인 ‘녹(Rust)’에서 따왔다고 밝혔는데, 이는 언어가 추구하는 견고함과 생존력을 상징한다.6 초기 개발 단계에서 Rust 컴파일러는 함수형 프로그래밍 언어인 OCaml로 작성되었으며, 이는 Rust가 초기부터 함수형 패러다임의 영향을 받았음을 시사한다.6 이 시기의 Rust는 외부에 거의 알려지지 않은 채 호어의 개인적인 탐구 프로젝트로 진행되었다.

전환점은 2009년 모질라가 Rust 프로젝트를 공식적으로 후원하기 시작하면서 찾아왔다.6 당시 모질라는 기존 웹 브라우저 엔진이 가진 고질적인 메모리 안전성 취약점과 성능 한계를 극복할 차세대 병렬 브라우저 엔진 ‘Servo’ 프로젝트를 구상하고 있었다.2 안전하고 효율적인 동시성 처리가 가능한 새로운 언어가 절실했고, Rust는 이 목적에 완벽하게 부합하는 후보였다.

Servo라는 구체적이고 까다로운 목표는 Rust의 발전에 결정적인 영향을 미쳤다. 언어의 설계는 더 이상 이론에 머무르지 않고, 세계에서 가장 복잡한 소프트웨어 중 하나인 웹 브라우저를 만든다는 실용적인 과제를 해결하는 과정에서 단련되었다. 이 시기에 컴파일러는 OCaml에서 벗어나 Rust 자체로 재작성되는 ‘자기 자신을 컴파일하는(self-hosting)’ 단계에 이르렀고, 언어의 핵심인 소유권 시스템이 자리를 잡았다.6 수많은 시행착오와 공개적인 재설계를 거친 끝에, Rust는 2015년 5월 15일, 마침내 첫 번째 안정 버전인 Rust 1.0을 출시하며 산업계에서 사용할 준비가 되었음을 선언했다.6

2020년 모질라가 대규모 구조조정을 단행하면서 Rust의 미래에 대한 우려가 제기되었으나, 이는 오히려 언어가 한 단계 더 성숙하는 계기가 되었다. 2021년 2월, AWS, Google, Huawei, Microsoft, Mozilla 등 거대 기술 기업들이 창립 멤버로 참여하여 독립적인 비영리 조직인 ‘Rust 재단(Rust Foundation)’이 출범했다.6 이는 Rust의 관리 주체가 단일 기업에서 산업 컨소시엄으로 확장되었음을 의미하며, 언어의 장기적인 발전과 안정적인 거버넌스를 보장하는 중요한 이정표가 되었다.

이후 Rust의 영향력은 더욱 확대되었다. 2022년에는 C와 어셈블리어를 제외하고는 최초로 리눅스 커널(Linux kernel) 개발에 공식적으로 채택되는 역사적인 성과를 이루었다.6 이는 운영체제 핵심부와 같이 최고의 안정성과 성능이 요구되는 영역에서도 Rust가 신뢰받는 언어임을 입증한 사건이다. 한편, 2023년 상표권 정책 변경안을 둘러싼 논란과 이에 대한 항의의 표시로 등장한 ‘CrabLang’ 포크는 Rust 커뮤니티의 강력한 영향력과 프로젝트의 개방적이고 협력적인 정신을 다시 한번 확인시켜 주었다.12 이 사건은 비록 갈등이었지만, 최종적으로 재단이 커뮤니티의 의견을 수용하여 정책을 수정하는 과정으로 이어지며 Rust의 건강한 거버넌스 구조를 보여주었다.

이처럼 Rust의 발전 과정은 특정 문제를 해결하기 위한 실용적인 요구가 언어 설계를 이끌고, 그 결과물이 다시 더 넓은 산업 분야의 채택을 유도하며, 이것이 다시 언어의 지속가능성을 담보하는 선순환 구조를 보여준다. Servo라는 거대한 도전 과제는 Rust의 핵심 기능들을 단련시켰고, 그렇게 검증된 언어의 가치는 Cloudflare, Dropbox와 같은 다른 기업들이 직면한 유사한 문제를 해결하는 데 매력적인 해법이 되었다.2 그리고 이 광범위한 채택이 Rust 재단의 설립으로 이어져 언어의 미래를 공고히 한 것이다.

Rust의 설계 철학은 프로그래밍 언어 설계에 존재하던 고전적인 트레이드오프를 깨뜨리려는 시도에서 출발한다. 특히 ‘안전성’과 ‘속도’라는, 양립하기 어렵다고 여겨졌던 두 가치를 동시에 달성하는 것을 핵심 목표로 삼는다.14 Rust는 이를 위해 강력한 타입 시스템을 적극적으로 활용하며, 기술적으로는 유효하지만 잠재적으로 위험한 일부 프로그램을 컴파일 시점에서 과감히 거부하는 방식을 택한다.14 이러한 대원칙은 ‘희생 없는 안전성’, ‘두려움 없는 동시성’, ‘제로 비용 추상화’라는 세 가지 구체적인 기둥으로 구현된다.

Rust의 가장 근본적인 철학은 성능 저하 없이 메모리 안전성을 보장하는 것이다.6 C/C++가 개발자의 주의력에 의존하고, Java나 Go가 런타임에 가비지 컬렉터의 비용을 지불하는 것과 달리, Rust는 컴파일 시점에 모든 메모리 관련 오류를 원천적으로 차단하는 길을 선택했다.16

이를 가능하게 하는 핵심 메커니즘이 바로 ‘소유권(ownership)’ 시스템이다. 컴파일러의 일부인 ‘빌림 검사기(borrow checker)’는 코드 내 모든 참조(reference)의 생명주기를 추적하여, 데이터가 해제된 후에 접근하려는 시도(댕글링 포인터)나 동일한 메모리를 두 번 해제하려는 시도(이중 해제)와 같은 고질적인 버그들을 컴파일 오류로 만들어 버린다.6 이 모든 검사는 런타임에 어떠한 오버헤드도 발생시키지 않으면서 이루어지므로, ‘희생 없는 안전성’이라는 이름에 걸맞은 결과를 낳는다.

동시성 프로그래밍은 전통적으로 데이터 경쟁(data race)과 같은 미묘하고 재현하기 어려운 버그들로 가득한 영역이었다. Rust는 이러한 동시성 프로그래밍을 안전하고 쉽게 만들고자 한다.7 놀랍게도 그 해법은 전혀 새로운 것이 아니었다. Rust 개발팀은 메모리 안전성을 위해 고안된 소유권 시스템이 스레드 안전성을 보장하는 데에도 완벽하게 적용될 수 있음을 발견했다.17

소유권 규칙, 즉 ‘하나의 데이터에는 단 하나의 수정 가능한(mutable) 참조만 존재하거나, 여러 개의 읽기 전용(immutable) 참조만 존재할 수 있다’는 원칙은 여러 스레드에 걸쳐서도 동일하게 강제된다.7 이로 인해 여러 스레드가 동기화 없이 동일한 데이터에 접근하여 수정하려는 ‘데이터 경쟁’ 상황이 컴파일 시점에 원천적으로 차단된다.19 따라서 개발자는 런타임에 발생할지 모를 동시성 버그에 대한 두려움 없이, 복잡한 병렬 코드를 자신감 있게 작성하고 리팩토링할 수 있다. 이것이 바로 ‘두려움 없는 동시성’의 핵심이다.17

시스템 프로그래밍 언어는 성능이 생명이다. 따라서 고수준의 편리한 기능을 도입하더라도 이것이 런타임 성능 저하로 이어져서는 안 된다. Rust는 ‘제로 비용 추상화’ 원칙을 통해, 개발자가 작성한 고수준의 표현력 있는 코드가 저수준에서 직접 작성한 코드와 동일한 성능을 내도록 보장한다.7

여기서 핵심적인 역할은 컴파일러가 담당한다. 예를 들어, Rust의 이터레이터(iterator)와 클로저(closure)를 사용한 코드는 매우 선언적이고 가독성이 높다.7

// [7]
let numbers = vec!;
let doubled: Vec<_> = numbers.iter().map(|&x| x * 2).collect();

이 코드는 다른 언어에서는 여러 중간 객체 생성과 함수 호출로 인해 오버헤드를 유발할 수 있지만, Rust 컴파일러는 이 전체 체인을 최적화하여 C 프로그래머가 직접 작성했을 법한 단일하고 효율적인 for 루프로 변환한다.20 제네릭(generics) 또한 컴파일 시점에 사용된 각 구체적인 타입에 맞춰 코드를 특수화하는 단형성(monomorphization)을 통해 런타임 오버헤드 없이 다형성을 구현한다.20 이처럼 Rust는 개발자에게 높은 생산성과 표현력을 제공하면서도 성능이라는 가치를 절대 타협하지 않는다.

이 세 가지 철학적 기둥은 서로 독립적이지 않고 유기적으로 연결되어 있다. ‘희생 없는 안전성’이라는 목표를 달성하기 위해 소유권 시스템이 탄생했고, 이 소유권 시스템이 자연스럽게 ‘두려움 없는 동시성’을 보장하는 기반이 되었다. 그리고 이러한 엄격한 규칙들을 개발자가 편안하게 사용할 수 있도록 만들기 위해 고수준의 추상화가 필요했으며, 시스템 언어로서의 정체성을 지키기 위해 이 추상화는 반드시 ‘제로 비용’이어야만 했다. 결국 이 세 기둥은 Rust라는 언어의 정체성을 구성하는, 상호 보완적이고 필연적인 하나의 통일된 철학 체계를 이룬다.

Rust의 메모리 안전성은 가비지 컬렉터가 아닌, 컴파일 시점에 적용되는 정교한 규칙들의 집합에 의해 보장된다. 이 시스템의 심장부에는 소유권(Ownership), 빌림(Borrowing), 그리고 생명주기(Lifetimes)라는 세 가지 핵심 개념이 자리 잡고 있다. 이들은 독립된 기능이 아니라, 메모리를 안전하게 관리하기 위한 하나의 통합된 정적 분석 엔진으로 작동한다.

이 개념들을 이해하기 위해서는 먼저 프로그램이 메모리를 사용하는 두 가지 방식, 즉 스택(stack)과 힙(heap)에 대한 이해가 필요하다.

C/C++의 메모리 오류는 대부분 이 힙 메모리를 부정확하게 관리할 때 발생한다. Rust의 소유권 시스템은 바로 이 힙 데이터 관리를 주된 목표로 한다.23

소유권은 Rust 메모리 관리의 가장 기본적인 규칙이다.23 이는 세 가지 명확한 원칙으로 요약된다 23:

  1. Rust의 모든 값은 ‘소유자(owner)’라고 불리는 변수를 갖는다.
  2. 한 번에 단 하나의 소유자만 존재할 수 있다.
  3. 소유자가 스코프(scope)를 벗어나면 값은 ‘버려진다(dropped)’.

세 번째 규칙은 Rust가 자원을 해제하는 방식을 설명한다. 변수가 유효한 범위를 벗어나는 시점에, Rust 컴파일러는 해당 변수가 소유한 자원(예: 힙 메모리, 파일 핸들, 네트워크 소켓)을 자동으로 해제하는 코드를 삽입한다. 이 결정론적인 자원 해제 방식을 ‘RAII(Resource Acquisition Is Initialization)’ 패턴이라고도 부른다.28

이 규칙들이 실제 코드에서 어떻게 작동하는지는 데이터가 스택에 저장되는지 힙에 저장되는지에 따라 달라진다.

소유권 이동은 안전성을 보장하지만, 함수에 값을 전달할 때마다 소유권을 넘겨주고 다시 돌려받아야 한다면 매우 번거로울 것이다. ‘빌림’은 이러한 불편함을 해결하기 위해 소유권을 이전하지 않고 데이터에 접근할 수 있게 해주는 메커니즘이다.32 이는 참조(&)를 통해 이루어진다.31

빌림에는 두 종류가 있으며, 이 둘 사이에는 매우 엄격한 규칙이 존재한다.

이 두 규칙을 종합하면 Rust의 가장 중요한 안전성 규칙이 도출된다. “하나의 데이터는 (A) 여러 개의 불변 참조를 갖거나, (B) 단 하나의 가변 참조를 가질 수 있지만, 둘을 동시에 가질 수는 없다”.3

// [32]
let mut s = String::from("hello");

let r1 = &s; // 불변 빌림 1
let r2 = &s; // 불변 빌림 2 (문제 없음)

// let r3 = &mut s; // 컴파일 오류! 불변 참조가 존재하는 동안에는 가변 참조를 만들 수 없음
// println!("{}, {}, and {}", r1, r2, r3);

이 규칙은 컴파일러가 데이터의 상태가 예기치 않게 변하는 것을 막아주므로, 개발자는 코드가 예측 가능하게 동작할 것이라는 확신을 가질 수 있다.

소유권과 빌림만으로는 모든 참조의 안전성을 보장할 수 없다. 컴파일러는 참조가 자신이 가리키는 데이터보다 더 오래 살아남아, 이미 해제된 메모리를 가리키는 ‘댕글링 참조(dangling reference)’가 되지 않음을 증명해야 한다.34

// [34]: 댕글링 참조의 예
let r;                // r의 생명주기 시작
{                     // 새로운 스코프 시작
    let x = 5;        // x의 생명주기 시작
    r = &x;           // r은 x를 참조함
}                     // x는 스코프를 벗어나 해제됨. x의 생명주기 끝
// println!("r: {}", r); // 컴파일 오류! r은 더 이상 유효하지 않은 메모리를 가리킴

대부분의 경우, 컴파일러는 함수 내에서 참조의 유효 범위를 추론할 수 있다. 하지만 함수가 참조를 인자로 받아서 참조를 반환하거나, 구조체가 참조를 필드로 가질 때, 컴파일러는 이 참조들 간의 생명주기 관계를 알 수 없어 모호함에 빠진다.34

‘생명주기 애노테이션('a)’은 바로 이 모호함을 해결하기 위해 개발자가 컴파일러에게 추가적인 정보를 제공하는 도구다.36 생명주기는 참조가 얼마나 오래 살지를 바꾸는 것이 아니라, 여러 참조의 생명주기가 어떻게 관련되어 있는지를

설명하여 컴파일러의 검증을 돕는다.36

결론적으로, 소유권은 값의 생명에 대한 절대적인 기준을 설정한다. 빌림은 이 기준을 깨지 않는 선에서 데이터에 접근하는 통제된 방법을 제공한다. 그리고 생명주기는 복잡한 코드 구조 속에서 컴파일러가 이 통제가 유효함을 증명할 수 있도록 돕는 형식 언어다. 개발자가 ‘빌림 검사기와 싸운다’고 느끼는 순간은, 사실 컴파일러가 메모리 안전성에 대한 정적 증명을 완성하기 위해 더 많은 정보(생명주기 애노테이션)를 요청하는 대화의 과정인 셈이다.

Rust의 동시성 모델은 ‘두려움 없는 동시성(Fearless Concurrency)’이라는 약속 위에 세워져 있다.17 이는 단순히 동시성 기능을 제공하는 것을 넘어, 동시성 프로그래밍에서 가장 골치 아픈 문제인 데이터 경쟁(data race)과 같은 버그들을 컴파일 시점에 원천적으로 제거하는 것을 목표로 한다. 흥미롭게도 Rust는 이를 위해 완전히 새로운 메커니즘을 발명한 것이 아니라, 메모리 안전성을 위해 설계된 소유권 시스템을 동시성 영역으로 확장하여 적용했다.17

Rust의 동시성 안전성은 SendSync라는 두 가지 핵심 마커 트레이트(marker trait)에 의해 강제된다. 이 트레이트들은 특정 타입이 스레드 간에 어떻게 사용될 수 있는지를 명시하며, 컴파일러는 이 규칙을 엄격하게 검사한다.18

컴파일러는 스레드를 생성하거나 채널을 통해 데이터를 보낼 때, 해당 데이터 타입이 SendSync를 만족하는지 확인한다. 만약 규칙을 위반하면 코드는 컴파일되지 않는다. 이로써 잠재적인 데이터 경쟁이 런타임이 아닌 개발 단계에서 발견되고 수정될 수 있다.17

Rust는 특정 동시성 모델을 강요하지 않고, 문제 상황에 가장 적합한 해결책을 선택할 수 있도록 다양한 패러다임을 지원한다.17

이 패러다임은 “메모리를 공유하여 통신하지 말고, 통신을 통해 메모리를 공유하라”는 철학을 따른다. 스레드들은 공유된 상태를 직접 수정하는 대신, 채널(channel)을 통해 서로 메시지를 주고받으며 통신한다.18

Rust 표준 라이브러리는 std::sync::mpsc (multiple producer, single consumer) 채널을 제공한다. 채널을 통해 값을 보내면, 그 값의 소유권이 수신 스레드로 완전히 이전된다. 이는 Rust의 소유권 시스템이 자연스럽게 메시지 전달 모델과 결합하여 데이터의 안전한 전송을 보장하는 훌륭한 예시다.7

// [7, 18]
use std::sync::mpsc;
use std::thread;

fn main() {
    let (tx, rx) = mpsc::channel();

    thread::spawn(move |

| {
        let val = String::from("hello");
        tx.send(val).unwrap();
        // println!("val is {}", val); // 컴파일 오류: val의 소유권이 이동되었음
    });

    let received = rx.recv().unwrap();
    println!("Got: {}", received);
}

모든 문제를 메시지 전달로 해결할 수는 없다. 때로는 여러 스레드가 동일한 데이터를 직접 접근해야 할 필요가 있다. 이는 전통적으로 데이터 경쟁이 가장 빈번하게 발생하는 지점이다.18

Rust는 이러한 상황을 위해 Mutex<T>(Mutual Exclusion, 상호 배제)를 제공한다. Mutex는 데이터를 잠금(lock)으로 감싸, 한 번에 단 하나의 스레드만이 데이터에 접근할 수 있도록 보장한다.19 여러 스레드가 Mutex 자체를 공유하기 위해서는 Arc<T>(Atomically Reference Counted) 포인터를 사용한다. Arc<T>Rc<T>의 스레드 안전 버전으로, 여러 스레드가 안전하게 데이터의 소유권을 공유할 수 있게 해준다.38

Arc<Mutex<T>>는 Rust에서 스레드 간에 가변 상태를 안전하게 공유하는 가장 대표적인 패턴이다.

// [19]
use std::sync::{Arc, Mutex};
use std::thread;

fn main() {
    let counter = Arc::new(Mutex::new(0));
    let mut handles = vec!;

    for _ in 0..10 {
        let counter = Arc::clone(&counter);
        let handle = thread::spawn(move |

| {
            let mut num = counter.lock().unwrap(); // 락을 획득
            *num += 1;
        }); // 이 스코프를 벗어나면서 락이 자동으로 해제됨
        handles.push(handle);
    }

    for handle in handles {
        handle.join().unwrap();
    }

    println!("Result: {}", *counter.lock().unwrap());
}

counter.lock()을 호출하면 MutexGuard라는 스마트 포인터가 반환되는데, 이는 데이터에 대한 가변 참조처럼 동작한다. 이 MutexGuard가 스코프를 벗어날 때 락은 자동으로 해제된다. 이 역시 RAII 패턴의 일종으로, 개발자가 락을 해제하는 것을 잊어버려 발생하는 교착 상태(deadlock)의 가능성을 줄여준다.

네트워크 서버와 같이 I/O 대기 작업이 많은 애플리케이션을 위해 Rust는 async/await 문법을 통한 비동기 프로그래밍 모델을 제공한다.7

async 함수는 즉시 실행되지 않고, Future라는, 미래에 완료될 작업을 나타내는 값을 반환한다.40

Future들을 실행하고 관리하는 것이 비동기 런타임의 역할이며, Tokio는 Rust 생태계에서 사실상의 표준으로 사용되는 비동기 런타임이다.41 Tokio와 같은 런타임은 Future가 I/O 작업을 기다리며 블로킹될 때, 해당 작업을 잠시 내려놓고 다른 준비된 작업을 실행하는 방식으로 단일 스레드에서도 수많은 동시 작업을 효율적으로 처리한다.40 이 async/await 모델 역시 제로 비용 추상화의 일환으로, 컴파일 시점에 매우 효율적인 상태 머신(state machine)으로 변환된다.40

결론적으로, Rust의 동시성 모델은 메모리 안전성 철학의 자연스러운 확장이다. 데이터 경쟁은 본질적으로 잘못된 메모리 접근의 한 형태이며, Rust는 이를 방지하기 위해 설계된 소유권과 빌림 규칙을 동시성 영역에도 일관되게 적용한다. 이로 인해 Rust에서는 안전한 동시성 코드를 작성하는 것이 언어의 기본 규칙을 따르는 것과 동일한 행위가 된다. 이것이 바로 Rust가 ‘두려움 없는 동시성’을 자신 있게 내세울 수 있는 근본적인 이유다.

어떤 프로그래밍 언어의 성공은 언어 자체의 우수성뿐만 아니라, 개발자의 생산성을 뒷받침하는 생태계와 도구의 성숙도에 크게 좌우된다. Rust는 이 점에서 매우 강력한 기반을 갖추고 있으며, 특히 통합 빌드 시스템인 Cargo와 중앙 패키지 저장소인 Crates.io는 Rust 개발 경험의 핵심적인 부분으로 평가받는다.

Cargo는 단순한 패키지 관리자를 넘어 Rust의 빌드 시스템, 테스트 러너, 문서 생성기를 모두 포함하는 통합 도구다.7 Rust 개발자들은 cargo new로 프로젝트를 시작하고, cargo build로 컴파일하며, cargo run으로 실행하고, cargo test로 테스트를 수행한다.42 이처럼 일관되고 표준화된 워크플로우는 다른 언어에서 흔히 겪는 복잡한 빌드 시스템 설정의 고통을 없애주며, 개발자가 오롯이 코드 자체에 집중할 수 있도록 돕는다.44

프로젝트의 모든 설정은 Cargo.toml이라는 매니페스트 파일 하나로 관리된다.45 이 파일에는 프로젝트의 이름, 버전과 같은 기본 정보부터 시작하여 의존성 라이브러리 목록, 그리고 조건부 컴파일을 위한 ‘피처(features)’ 설정 등이 명시된다.

특히 Cargo의 ‘피처’ 시스템은 Rust 생태계의 건강성을 유지하는 핵심적인 기능이다.45 라이브러리 개발자는 피처를 통해 자신의 라이브러리 기능을 여러 개의 선택적 모듈로 분리할 수 있다. 예를 들어, 어떤 라이브러리가 비동기 기능을 지원하지만 모든 사용자가 그 기능을 필요로 하지는 않을 때,

async라는 피처를 만들어 해당 기능을 선택적으로 포함시킬 수 있다. 사용자는 자신의 Cargo.toml 파일에서 필요한 피처만 활성화함으로써, 불필요한 코드와 의존성을 프로젝트에서 제외하고 컴파일 시간을 단축하며 최종 바이너리의 크기를 줄일 수 있다.45 이는 라이브러리가 불필요하게 비대해지는 것을 막고, 작고 조합 가능한(composable) 라이브러리들이 발전하는 문화를 촉진한다.

Crates.io는 Rust 커뮤니티의 공식 패키지(크레이트, crate) 저장소이다.42 Cargo와의 완벽한 연동을 통해 개발자는 단 한 줄의 Cargo.toml 설정만으로 전 세계 개발자들이 만든 수많은 라이브러리를 자신의 프로젝트에 손쉽게 가져와 사용할 수 있다. 현재 18만 개가 넘는 크레이트가 등록되어 있으며, 웹 프로그래밍, 커맨드 라인 유틸리티, 암호학 등 다양한 분야에서 활발하게 생태계가 성장하고 있다.47

Rust 생태계는 여러 핵심적인 라이브러리를 중심으로 발전해왔다.47

이러한 핵심 라이브러리들을 기반으로 특정 목적을 위한 프레임워크들도 활발히 개발되고 있다.

이처럼 Rust의 생태계는 Cargo라는 강력한 중심축을 바탕으로, 작고 품질 높은 라이브러리들이 서로 조합되어 더 큰 시스템을 만들어가는 건강한 문화를 형성하고 있다. 이는 개발자에게 높은 생산성과 함께 프로젝트의 요구사항에 맞춰 필요한 부분만 선택적으로 사용할 수 있는 유연성을 제공한다.

Rust는 더 이상 학문적인 언어나 소수의 열광자가 사용하는 언어가 아니다. 오늘날 Rust는 세계 유수의 기술 기업들이 가장 중요하고 민감한 시스템을 구축하는 데 사용하는 핵심 도구로 자리 잡았다. Rust의 산업적 채택 사례를 분석하면, 이 언어가 어떤 문제들을 해결하고 있으며 어떤 가치를 인정받고 있는지 명확히 알 수 있다.

글로벌 기술 산업을 선도하는 기업들은 Rust의 잠재력을 일찍이 파악하고 자사의 핵심 제품과 인프라에 적극적으로 도입하고 있다.

Rust의 영향력은 특정 기업에 국한되지 않고, 다양한 산업 분야로 빠르게 확산되고 있다.

이러한 산업 적용 사례들은 일관된 경향을 보여준다. Rust는 성능, 안정성, 보안이 타협 불가능한 가치이며 실패 비용이 매우 큰 시스템을 위해 선택되고 있다. 이는 Rust가 단순히 ‘더 나은 C++’가 아니라, 치명적인 소프트웨어 인프라의 리스크를 근본적으로 줄이기 위한 전략적 도구로 인식되고 있음을 시사한다. 기업들은 Rust의 가파른 학습 곡선이라는 초기 비용을 감수하더라도, 장기적인 안정성과 보안, 유지보수 비용 절감이라는 더 큰 이익을 얻을 수 있다고 판단하고 있는 것이다.

Rust의 가치와 특징을 더 명확히 이해하기 위해서는 현대 프로그래밍 언어 생태계 속에서 다른 주요 언어들과의 관계를 살펴보는 것이 필수적이다. 본 장에서는 시스템 프로그래밍의 전통적 강자인 C++, 현대적 경쟁자인 Go, 그리고 생산성의 대명사인 Python과의 비교를 통해 Rust의 상대적 위치와 트레이드오프를 분석한다.

72

C++는 수십 년간 고성능 컴퓨팅 영역을 지배해 온 언어이며, Rust는 종종 C++의 대안으로 거론된다.

79

Go는 Rust와 비슷한 시기에 등장하여 C/C++를 대체하려는 목표를 가졌다는 점에서 자주 비교 대상이 된다.

Python과 Rust는 프로그래밍 언어 스펙트럼의 양 극단에 위치한 것처럼 보인다.

아래 표는 네 가지 언어의 핵심적인 특징과 트레이드오프를 종합적으로 요약한 것이다. 이는 특정 프로젝트에 적합한 기술 스택을 선택해야 하는 시스템 아키텍트나 기술 리더에게 전략적인 통찰을 제공할 수 있다.

특징 Rust C++ Go Python
메모리 모델 컴파일 타임 (소유권 & 빌림), GC 없음 수동 관리 (스마트 포인터 보조), 기본적으로 Unsafe 런타임 (가비지 컬렉터) 런타임 (가비지 컬렉터)
안전성 보장 컴파일 시점 보장 (메모리 & 스레드) 개발자 책임, 도구 보조 런타임 보장 (메모리) 런타임 보장 (메모리)
동시성 모델 소유권 기반 (async/await, Send/Sync) 수동 스레딩, 라이브러리 기반 고루틴 & 채널 GIL로 인한 병렬 처리 제약, asyncio
성능 프로파일 최상급, 예측 가능 (C++와 동급) 최상급, 하드웨어 제어 매우 높음, GC로 인한 약간의 비결정성 상대적으로 느림 (인터프리터)
에러 핸들링 Result/Option 열거형 (명시적 처리 강제) 예외 처리 (Exceptions), 에러 코드 다중 반환 값 (, err) 예외 처리 (Exceptions)
주요 사용 사례 시스템 프로그래밍, 임베디드, 웹 어셈블리, 고성능 백엔드 게임 엔진, 고성능 컴퓨팅, OS, 금융 클라우드/네트워크 서비스, DevOps, CLI 웹 개발, 데이터 과학/AI, 스크립팅
개발자 경험 가파른 학습 곡선, 매우 강력한 툴링(Cargo) 복잡함, 파편화된 빌드 시스템 배우기 쉬움, 단순함, 빠른 컴파일 매우 배우기 쉬움, 높은 생산성

이 비교를 통해 Rust가 차지하는 독특한 위치가 드러난다. Rust는 C++의 성능과 제어 능력, Go와 Python의 안전성 및 현대적인 개발 경험이라는 각기 다른 세계의 장점들을 하나의 언어 안에 통합하려는 야심 찬 시도이며, 그 목표를 상당 부분 성공적으로 달성했음을 알 수 있다.

Rust는 시스템 프로그래밍 분야에서 오랫동안 당연하게 여겨졌던 ‘성능과 안전성의 트레이드오프’라는 패러다임을 성공적으로 깨뜨렸다. 독창적인 소유권 시스템을 통해 가비지 컬렉터 없이도 컴파일 시점에 메모리 안전성과 스레드 안전성을 보장함으로써, C++의 성능과 제어 능력, 그리고 관리형 언어(managed language)의 신뢰성을 동시에 제공할 수 있음을 증명했다. Rust의 진정한 가치는 단순히 빠른 코드를 만드는 것을 넘어, 설계 단계에서부터 잠재적인 버그와 보안 취약점의 상당 부분을 제거하여 근본적으로 더 신뢰할 수 있는 소프트웨어를 구축하도록 돕는 데 있다.

이러한 혁신적인 성과에도 불구하고, Rust가 더 넓은 영역으로 확산되기 위해 해결해야 할 과제들은 여전히 존재한다.

이러한 과제에도 불구하고 Rust의 미래는 매우 밝게 전망된다. 언어와 커뮤니티는 명확한 방향성을 가지고 끊임없이 진화하고 있다.

결론적으로, Rust는 신뢰성과 보안, 성능이 최우선시되는 새로운 시스템 프로그래밍 프로젝트에서 기본 선택지(default choice)로 자리매김하고 있다. 모든 레거시 C++ 코드를 단기간에 대체하지는 못하겠지만, 안전하고 효율적인 소프트웨어를 어떻게 설계해야 하는지에 대한 우리의 사고방식에 이미 지대한 영향을 미쳤다. Rust는 앞으로도 시스템 개발의 미래를 형성하는 데 있어 가장 중요한 언어 중 하나로 남을 것이다.

  1. How Rust Was Born: The Story Of A Mistake - HackerNoon, accessed July 8, 2025, https://hackernoon.com/how-rust-was-born-the-story-of-a-mistake
  2. Rust – a concise overview of the modern programming language coders love - K&C, accessed July 8, 2025, https://kruschecompany.com/rust-language-concise-overview/
  3. Rust vs. C/C++: Ensuring Memory Safety & Security - Peter Girnus, accessed July 8, 2025, https://www.petergirnus.com/blog/rust-vs-cc-ensuring-memory-safety-and-security
  4. What is Rust and why is it so popular? - Stack Overflow, accessed July 8, 2025, https://stackoverflow.blog/2020/01/20/what-is-rust-and-why-is-it-so-popular/
  5. Ownership Recap - The Rust Programming Language - Brown University, accessed July 8, 2025, https://rust-book.cs.brown.edu/ch04-05-ownership-recap.html
  6. Rust (programming language) - Wikipedia, accessed July 8, 2025, https://en.wikipedia.org/wiki/Rust_(programming_language)
  7. Rust design philosophy - Mastering Rust: A Comprehensive …, accessed July 8, 2025, https://app.studyraid.com/en/read/1775/26544/rust-design-philosophy
  8. 러스트 (프로그래밍 언어) - 위키백과, 우리 모두의 백과사전, accessed July 8, 2025, https://ko.wikipedia.org/wiki/%EB%9F%AC%EC%8A%A4%ED%8A%B8(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%96%B8%EC%96%B4)
  9. Why Rust is the most admired language among developers - The GitHub Blog, accessed July 8, 2025, https://github.blog/developer-skills/programming-languages-and-frameworks/why-rust-is-the-most-admired-language-among-developers/
  10. en.wikipedia.org, accessed July 8, 2025, https://en.wikipedia.org/wiki/Rust_(programming_language)#:~:text=Rust%20began%20as%20a%20personal,over%2Dengineered%20for%20survival%22.
  11. Rust(프로그래밍 언어) - 나무위키, accessed July 8, 2025, https://namu.wiki/w/Rust(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%20%EC%96%B8%EC%96%B4)
  12. The Fascinating Story of Rust - YouTube, accessed July 8, 2025, https://www.youtube.com/watch?v=rNROsljsI6U
  13. A brief introduction to the Rust programming language - adesso SE, accessed July 8, 2025, https://www.adesso.de/en/news/blog/a-brief-introduction-to-the-rust-programming-language-2.jsp
  14. What is the overall design philosophy of rust as a language compared to C++ for instance? - Reddit, accessed July 8, 2025, https://www.reddit.com/r/rust/comments/lsgbs7/what_is_the_overall_design_philosophy_of_rust_as/
  15. 왜 많은 개발자들이 Rust(러스트)로 이동할까? I 이랜서 블로그, accessed July 8, 2025, https://www.elancer.co.kr/blog/detail/808
  16. Rust: The Modern Programming Language for Safety and Performance by Make Computer Science Great Again Medium, accessed July 8, 2025, https://medium.com/@MakeComputerScienceGreatAgain/rust-the-modern-programming-language-for-safety-and-performance-b003774d7166
  17. Fearless Concurrency - The Rust Programming Language, accessed July 8, 2025, https://doc.rust-lang.org/book/ch16-00-concurrency.html
  18. Rust Concurrency: Fearless Concurrency - DEV Community, accessed July 8, 2025, https://dev.to/leapcell/rust-concurrency-fearless-concurrency-24h
  19. Rust Safety: Writing Secure Concurrency without Fear PullRequest Blog, accessed July 8, 2025, https://www.pullrequest.com/blog/rust-safety-writing-secure-concurrency-without-fear/
  20. Zero-Cost Abstractions in Rust: Unlocking High Performance and Expressiveness, accessed July 8, 2025, https://davide-ceschia.medium.com/zero-cost-abstractions-in-rust-unlocking-high-performance-and-expressiveness-75c1c0d27291
  21. Zero-Cost Abstractions in Rust: Power Without the Price - DockYard, accessed July 8, 2025, https://dockyard.com/blog/2025/04/15/zero-cost-abstractions-in-rust-power-without-the-price
  22. What does ‘Zero Cost Abstraction’ mean? - Stack Overflow, accessed July 8, 2025, https://stackoverflow.com/questions/69178380/what-does-zero-cost-abstraction-mean
  23. What is Ownership? - The Rust Programming Language, accessed July 8, 2025, https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html
    1. Rust - 소유권 이해하기 - velog, accessed July 8, 2025, https://velog.io/@wkfwktka/2.-Rust-%EC%86%8C%EC%9C%A0%EA%B6%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0
  24. 소유권이 뭔가요? - The Rust Programming Language, accessed July 8, 2025, https://doc.rust-kr.org/ch04-01-what-is-ownership.html
  25. 소유권이 뭔가요? - The Rust Programming Language, accessed July 8, 2025, https://rinthel.github.io/rust-lang-book-ko/ch04-01-what-is-ownership.html
  26. Understanding ownership in Rust - Luca - Medium, accessed July 8, 2025, https://lucacorbucci.medium.com/understanding-ownership-in-rust-5baf5b919246
  27. Ownership - The Rust Programming Language - MIT, accessed July 8, 2025, https://web.mit.edu/rust-lang_v1.25/arch/amd64_ubuntu1404/share/doc/rust/html/book/first-edition/ownership.html
  28. Go vs Rust: How can you determine which language is better for your next project?, accessed July 8, 2025, https://yalantis.com/blog/rust-vs-go-comparison/
  29. Ownership in Rust - DEV Community, accessed July 8, 2025, https://dev.to/francescoxx/ownership-in-rust-57j2
  30. Rust Ownership, Borrowing, and Lifetimes - Integralist, accessed July 8, 2025, https://www.integralist.co.uk/posts/rust-ownership/
  31. References and Borrowing - The Rust Programming Language, accessed July 8, 2025, https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html
  32. Mastering Lifetimes in Rust: Memory Safety and Borrow Checking by Leapcell Medium, accessed July 8, 2025, https://leapcell.medium.com/mastering-lifetimes-in-rust-memory-safety-and-borrow-checking-4a8c082a54ee
  33. Validating References with Lifetimes - The Rust Programming Language, accessed July 8, 2025, https://doc.rust-lang.org/book/ch10-03-lifetime-syntax.html
  34. 30-Days-Of-Rust/21_Rust Lifetimes/21_rust_lifetimes.md at main - GitHub, accessed July 8, 2025, https://github.com/Hunterdii/30-Days-Of-Rust/blob/main/21_Rust%20Lifetimes/21_rust_lifetimes.md
  35. Lifetimes - The Rust Programming Language - MIT, accessed July 8, 2025, https://web.mit.edu/rust-lang_v1.26.0/arch/amd64_ubuntu1404/share/doc/rust/html/book/first-edition/lifetimes.html
  36. Lifetime Annotations - Comprehensive Rust - Google, accessed July 8, 2025, https://google.github.io/comprehensive-rust/lifetimes/lifetime-annotations.html
  37. Mastering Rust Concurrency & Parallelism: Ultimate Guide 2024 - Rapid Innovation, accessed July 8, 2025, https://www.rapidinnovation.io/post/concurrent-and-parallel-programming-with-rust
  38. What is Thread Safety - Rustfinity, accessed July 8, 2025, https://www.rustfinity.com/blog/what-is-thread-safety
  39. Zero-Cost Abstractions in Rust: Asynchronous Programming Without Breaking a Sweat, accessed July 8, 2025, https://dev.to/pranta/zero-cost-abstractions-in-rust-asynchronous-programming-without-breaking-a-sweat-221b
  40. Tutorial Tokio - An asynchronous Rust runtime, accessed July 8, 2025, https://tokio.rs/tokio/tutorial
  41. Rust Cargo (With Examples) - Programiz, accessed July 8, 2025, https://www.programiz.com/rust/cargo
  42. Understanding Rust’s Package Manager, Cargo: A Comprehensive Guide - Medium, accessed July 8, 2025, https://medium.com/@TechSavvyScribe/understanding-rusts-package-manager-cargo-a-comprehensive-guide-fe5acddd0846
  43. Is Rust a good choice for business apps?, accessed July 8, 2025, https://www.bartoszsypytkowski.com/is-rust-a-good-fit-for-business-apps/
  44. Introduction to Cargo and cargo.toml - DEV Community, accessed July 8, 2025, https://dev.to/alexmercedcoder/introduction-to-cargo-and-cargotoml-2l86
  45. Features - The Cargo Book - Rust Documentation, accessed July 8, 2025, https://doc.rust-lang.org/cargo/reference/features.html
  46. crates.io: Rust Package Registry, accessed July 8, 2025, https://crates.io/
  47. Tokio - An asynchronous Rust runtime, accessed July 8, 2025, https://tokio.rs/
  48. Overview / Serde, accessed July 8, 2025, https://serde.rs/
  49. serde-rs/serde: Serialization framework for Rust - GitHub, accessed July 8, 2025, https://github.com/serde-rs/serde
  50. Most popular Rust libraries - Lib.rs, accessed July 8, 2025, https://lib.rs/std
  51. clap-rs/clap: A full featured, fast Command Line Argument Parser for Rust - GitHub, accessed July 8, 2025, https://github.com/clap-rs/clap
  52. sqlx - crates.io: Rust Package Registry, accessed July 8, 2025, https://crates.io/crates/sqlx
  53. sqlx - crates.io: Rust Package Registry, accessed July 8, 2025, https://crates.io/crates/sqlx/dependencies
  54. Actix (Rust) vs Axum (Rust) vs Rocket (Rust): Performance Benchmark in Kubernetes #206, accessed July 8, 2025, https://www.youtube.com/watch?v=KA_w_jOGils&pp=0gcJCfwAo7VqN5tD
  55. Which framework is best Rocket or Actix - help - The Rust Programming Language Forum, accessed July 8, 2025, https://users.rust-lang.org/t/which-framework-is-best-rocket-or-actix/91668
  56. rocket or actix-web? : r/rust - Reddit, accessed July 8, 2025, https://www.reddit.com/r/rust/comments/1jonizs/rocket_or_actixweb/
  57. Rocket vs Actix Web vs others - help - The Rust Programming …, accessed July 8, 2025, https://users.rust-lang.org/t/rocket-vs-actix-web-vs-others/36560
  58. Bevy Engine, accessed July 8, 2025, https://bevy.org/
  59. bevyengine/bevy: A refreshingly simple data-driven game engine built in Rust - GitHub, accessed July 8, 2025, https://github.com/bevyengine/bevy
  60. Companies That Use Rust Language: Real-World Examples from Leading Businesses, accessed July 8, 2025, https://litslink.com/blog/companies-that-use-rust-language
  61. ImplFerris/rust-in-production - GitHub, accessed July 8, 2025, https://github.com/ImplFerris/rust-in-production
  62. Big Moments in Rust 2024 - The New Stack, accessed July 8, 2025, https://thenewstack.io/big-moments-in-rust-2024/
  63. Rust - What is the programming language used for and which companies use it? - K&C, accessed July 8, 2025, https://kruschecompany.com/rust-programming-language-use-cases/
  64. Given the case studies of Cloudflare, AWS, and Microsoft using Rust, do you foresee Rust overtaking C++ in system programming? ResearchGate, accessed July 8, 2025, https://www.researchgate.net/post/Given_the_case_studies_of_Cloudflare_AWS_and_Microsoft_using_Rust_do_you_foresee_Rust_overtaking_C_in_system_programming
  65. Oxy is Cloudflare’s Rust-based next generation proxy framework, accessed July 8, 2025, https://blog.cloudflare.com/introducing-oxy/
  66. Why Discord is switching from Go to Rust - Changelog, accessed July 8, 2025, https://changelog.com/news/why-discord-is-switching-from-go-to-rust-agam
  67. Why Discord is switching from Go to Rust, accessed July 8, 2025, https://discord.com/blog/why-discord-is-switching-from-go-to-rust
  68. Top Rust Development Companies You Should Know - SCAND, accessed July 8, 2025, https://scand.com/company/blog/top-rust-development-companies-you-should-know/
  69. Build a Blockchain with Rust: A Step-by-Step Guide - Rapid Innovation, accessed July 8, 2025, https://www.rapidinnovation.io/post/how-to-build-a-blockchain-with-rust
  70. WHY IS RUST THE BEST CHOICE FOR THE POLKADOT BLOCKCHAIN PROJECT? by Jai AP Medium, accessed July 8, 2025, https://medium.com/@jaiapp/why-is-rust-the-best-choice-for-the-polkadot-blockchain-project-78fa33ef8914
  71. accessed January 1, 1970, https.www.bairesdev.com/blog/when-speed-matters-comparing-rust-and-c/
  72. Rust Vs C++ Performance: When Speed Matters - BairesDev, accessed July 8, 2025, https://www.bairesdev.com/blog/when-speed-matters-comparing-rust-and-c/
  73. Rust Vs C++: Which One To Choose? - Hashe Computer Solutions, accessed July 8, 2025, https://www.hashe.com/coding/rust-vs-cpp-which-to-choose/
  74. Is C++ more performant than Rust?? : r/cpp - Reddit, accessed July 8, 2025, https://www.reddit.com/r/cpp/comments/17zaiu6/is_c_more_performant_than_rust/
  75. How can Rust be “safer” and “faster” than C++ at the same time?, accessed July 8, 2025, https://softwareengineering.stackexchange.com/questions/446992/how-can-rust-be-safer-and-faster-than-c-at-the-same-time
  76. What are the differences between Rust and C++ in terms of performance and memory usage? - Quora, accessed July 8, 2025, https://www.quora.com/What-are-the-differences-between-Rust-and-C-in-terms-of-performance-and-memory-usage
  77. Rust(프로그래밍 언어) (r813 판) - 나무위키, accessed July 8, 2025, https://namu.wiki/w/Rust(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%20%EC%96%B8%EC%96%B4)?uuid=b9ecc8cf-a6b3-4205-8304-d2d216e11248
  78. Rust vs Go: Which one to choose in 2025 The RustRover Blog, accessed July 8, 2025, https://blog.jetbrains.com/rust/2025/06/12/rust-vs-go/
  79. Rust vs Go in 2025 - Bitfield Consulting, accessed July 8, 2025, https://bitfieldconsulting.com/posts/rust-vs-go
  80. Day 2: Rust Ownership vs Garbage Collector: A Detailed Comparison with Code, accessed July 8, 2025, https://dev.to/devratapuri/day-2-rust-ownership-vs-garbage-collector-a-detailed-comparison-with-code-52ad
  81. Speed of Go vs Rust in practice/real world experience? - Reddit, accessed July 8, 2025, https://www.reddit.com/r/rust/comments/14gullp/speed_of_go_vs_rust_in_practicereal_world/
  82. Python vs Rust: Key Differences, Speed & Performance 2025 - OLIANT, accessed July 8, 2025, https://www.oliant.io/articles/python-vs-rust-differences
  83. Which is easy to learn between Rust or Python? - help, accessed July 8, 2025, https://users.rust-lang.org/t/which-is-easy-to-learn-between-rust-or-python/106272
  84. Rust vs Python: Choosing the Right Language for Your Project - Shakuro, accessed July 8, 2025, https://shakuro.com/blog/rust-vs-python-comparison
  85. How is Rust productivity when compared with dynamic languages like Python or Elixir?, accessed July 8, 2025, https://www.reddit.com/r/rust/comments/1ktp8tz/how_is_rust_productivity_when_compared_with/
  86. Why I Like Rust Better Than Python - YouTube, accessed July 8, 2025, https://www.youtube.com/watch?v=jtv5sNoSc-M
  87. A Data Scientist’s Perspective: Rust vs Python by Karun Thankachan CodeX - Medium, accessed July 8, 2025, https://medium.com/codex/a-data-scientists-perspective-rust-vs-python-a0213ebfa82a
  88. Rust 2024 Wrap-Up: Biggest Changes and Future Outlook, accessed July 8, 2025, https://rust-dd.com/post/rust-2024-wrap-up-biggest-changes-and-future-outlook
  89. A Journey Through Rust Lifetimes - Richard Anaya - Medium, accessed July 8, 2025, https://richardanaya.medium.com/a-journey-through-rust-lifetimes-5a08782c7091