Jump to content

Rust (programming language)

This is a fully translated article. Click here for more information.
From DawoumWiki, the free Mathematics self-learning
Rust
A capitalized letter R set into a sprocket
The official Rust logo
ParadigmsMulti-paradigm: concurrent, functional, generic, imperative, structured
Designed byGraydon Hoare
First appeared2006; 18 years ago (2006)
Stable release
1.67.1 / February 9, 2023; 16 months ago (2023-02-09)
Typing disciplineAffine, inferred, nominal, static, strong
Implementation languageRust
PlatformCross-platform[note 1]
OSCross-platform[note 2]
LicenseMIT and Apache 2.0 (dual-licensed)[note 3]
Filename extensions.rs, .rlib
Websitewww.rust-lang.org
Influenced by
Influenced
Idris,[6] Spark,[7] Swift,[8] Project Verona,[9] Zig[10]

러스트(Rust)는 성능과 안전성, 특히 안전한 동시성을 위해 설계된 다중-패러다임, 범용 프로그래밍 언어입니다.[11][12] 그것은 구문적으로 C++와 유사하지만,[13] 레퍼런스를 확인하기 위해 빌림 검사기(borrow checker)를 사용함으로써 메모리 안전성을 보장할 수 있습니다.[14] 그것은 가비지 수집없이 메모리 안전성을 달성하고, 레퍼런스 카운팅은 선택 사항입니다.[15][16] 그것은 저-수준 메모리 관리를 위한 메커니즘을 갖는 시스템 프로그래밍 언어이지만,[17][18] 함수형 프로그래밍과 같은 고급 기능도 제공합니다.

2010년에 처음 등장한, 러스트는 Dave Herman, Brendan Eich, 등의 공헌으로 Mozilla Research의[19] Graydon Hoare에 의해 설계되었습니다.[20][21] 디자이너들은 Servo 실험적 브라우저 엔진과 러스트 컴파일러를 작성하면서 그 언어를 다듬었습니다.[22] 러스트의 주요 영향은 C++, OCaml, Haskell, 및 Erlang을 포함합니다.[5] 러스트는 Amazon,[23][24] Discord,[25] Dropbox,[26] Facebook (Meta),[27] Google (Alphabet),[28][29]Microsoft를 포함한 회사에 의해 업계에서 채택을 보아 왔습니다.[30][31]

러스트는 2016년부터 매년 Stack Overflow Developer Survey에서 "가장 사랑받는 프로그래밍 언어"로 선정되어 왔고, 2021년에는 응답자의 7%에 의해 사용되었습니다.[32]

Installation

데비안 저장소에서 설치할 수 있습니다:

  • sudo apt install rustc

Install latest version

간혹, 러스트와 관련된 프로그램을 컴파일하려면, 현재 시스템에 설치된 것보다 높은 버전을 요구하기도 합니다. 아래와 같이 최신 버전을 설치할 수 있습니다:

  • sudo apt purge rustc
  • sudo apt autoremove
  • curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
1+↵ Enter

이제 터미널 닫고 새롭게 실행해서, 아래와 같이 버전을 확인할 수 있습니다:

  • rustc -V

제거하려면,

  • rustup self uninstall

Rebuild

위와 같이 사용자의 홈디렉토리 아래에 설치하는 것이 아니라, 시스템에 설치하기 위해, 시드의 패키지를 빌드하기 위해 다음의 과정을 참조할 수 있습니다: 더 나은 방법을 알려주세요!!

먼저, 위의 방법으로 최신 버전을 설치합니다. 그런-다음 컴파일 과정에서 정확한 버전을 요구하기 때문에, 아래와 같이 해당 버전을 설치합니다:

  • rustup install 1.59.0

그런-다음 설치에 필요한 바이너리와 라이브러리 등을 시스템 아래에 심볼릭 링크를 걸어줍니다. 사용자의 홈디렉토리 아래에 ~/.rustup/toolchains/1.59.0-x86_64-unknown-linux-gnu/ 있는 다음 디렉토리 아래의 파일들을 전부 심볼릭 링크로 만듭니다:

  • bin
  • lib
  • libexec

게다가, 위와 같이 했음에도 불구하고 컴파일 중에 internal 오류가 발생하면, DEB_BUILD_OPTIONS="notest nocheck"을 정의해서 컴파일 시도할 수 있습니다.

기본 버전을 바꾸고 싶을 때에는

  • rustup default 1.59.0

그런-다음 cargo를 컴파일할 수 있습니다.

Cargo 컴파일 중에 anyhow 같은 vendor 오류가 생길 수 있는데, 해당 디렉토리에서 cargo vendor를 입력해서 vendor를 업데이트할 수 있습니다.

만약 파이어폭스 등을 빌드할 때, cbindgen, bindgen 등을 최신 버전으로 설치할 필요가 있습니다:

  • cargo install cbindgen --force
  • cargo install bindgen-cli

이것의 실행 파일은 ~/.cargo/bin/ 아래에 만들어지므로, ~/.bashrc 파일에 PATH 변수에 해당 디렉토리를 추가해서 해결할 수 있습니다.

  • source /home/$USER/.bashrc

Clone ubuntu source

우분투 개발 저장소에서 소스를 가져오기 위해,

Features

러스트는 높은 동시성과 매우 안전한 시스템,[33] 대규모 프로그래밍, 즉, 대규모 시스템 무결성을 보존하는 경계를 만들고 유지 관리하는 언어가 되도록 의도되었습니다.[34] 이것은 안전성, 메모리 레이아웃의 제어, 및 동시성에 중점을 둔 기능 집합으로 이어져 왔습니다.

Memory safety

러스트는 메모리 안전하게 되도록 설계되었습니다. 그것은 널 포인터, 허상 포인터 또는 데이터 경쟁을 수용하지 않습니다.[35][36][37] 데이터 값은 고정된 형식의 집합을 통해서만 초기화될 수 있고, 모든 형식은 그것들의 입력에게 미리 초기화되도록 요구합니다.[38] 연결된 목록 또는 이진 트리 데이터 구조에서와 같이 유효하거나 NULL인 포인터를 복제하기 위해, 러스트 코어 라이브러리는 포인터가 Some 값 또는 None을 가지는지 테스트하기 위해 사용될 수 있는 옵션 유형을 제공합니다.[36] 러스트는 수명을 관리하기 위한 더해진 구문을 가지며, 수명은 컴파일 시간에 빌림 검사기(borrow checker)에 의해 확인됩니다. 안전하지 않은 코드는 unsafe 키워드를 사용하여 이들 제한 사항 중 일부를 파괴할 수 있습니다.[14]

Memory management

러스트는 자동화된 가비지 수집을 사용하지 않습니다. 메모리와 기타 자원은 자원 획득이 초기화 규칙을 통해 관리되며,[39] 선택적 참조 카운팅을 가집니다. 러스트는 매우 낮은 오버헤드로 자원의 결정론적 관리를 제공합니다.[40] 러스트는 값의 스택 할당을 선호하고 암시적 복싱을 수행하지 않습니다.

런타임 참조 카운팅을 포함하지 않는 참조 (& 기호 사용)의 개념이 있습니다. 그러한 포인터의 안전성은 컴파일 타임에 확인되어, 허상 포인터와 기타 정의되지 않은 동작을 방지합니다. 러스트의 유형 시스템은 &T 형식의 변경 불가능한 공유 포인터를 &mut T 형식의 고유하고, 변경할 수 있는 포인터와 분리합니다. 변경 가능한 포인터는 변경할 수 없는 포인터로 강제 변환될 수 있지만 그 반대는 불가능합니다.

Ownership

러스트는 모든 값에 고유한 소유자를 가지고, 값의 범위가 소유자의 범위와 같은 것인 소유권 시스템을 가지고 있습니다.[41][42] 값은 &T를 사용하여 변경할 수 없는 참조에 의해, &mut T를 사용하여 변경 가능한 참조에 의해, 또는 T를 사용하여 값에 의해 전달될 수 있습니다. 항상, 여러 개의 변경할 수 없는 참조 또는 하나의 변경 가능한 참조 (암시적 판독기–작성기 잠금)가 있을 수 있습니다. 러스트 컴파일러는 컴파일 타임에 이들 규칙을 강제하고 모든 참조가 유효한지 확인합니다.

Types and polymorphism

러스트의 유형 시스템Haskell 언어에서 유형 클래스에서 영감을 받은 트리트라는 메커니즘을 지원합니다. 트리트는 유형에 주석을 달고 다른 유형 사이의 공유 동작(shared behavior)을 정의하기 위해 사용됩니다. 예를 들어, float와 integer 둘 다는 그것들이 더해질 수 있기 때문에 Add 트리트를 구현합니다; 그리고 문자열로 출력될 수 있는 임의의 유형은 Display 또는 Debug 트리트를 구현합니다. 이 기능은 임시 다형성(ad hoc polymorphism)으로 알려져 있습니다.

러스트는 let 키워드로 선언된 변수에 대해 유형 추론을 사용합니다. 그러한 변수는 그것들의 유형을 결정하기 위해 초기에 값을 할당되도록 요구하지 않습니다. 코드 분기가 할당없이 변수를 남기면 컴파일 시간 오류가 초래됩니다.[43] 여러 번 할당된 변수는 키워드 mut (mutable에 대해 줄임말)로 표시되어야 합니다.

함수는 지네릭 매개변수를 제공될 수 있으며, 이것은 같은 함수를 다른 유형에 적용되는 것을 허용합니다. 지네릭 함수는 특정 트리트를 또는 트리트들을 구현하기 위해 지네릭 유형을 제한할 수 있습니다; 예를 들어, "하나 추가" 함수는 "추가"를 구현하기 위해 그 유형을 요구할 수 있습니다. 이것은 지네릭 함수가 정의되는 즉시 유형-확인될 수 있음을 의미합니다.

러스트 지네릭의 구현은 C++ 템플릿의 전형적인 구현과 유사합니다: 각 인스턴스화에 대해 별도의 코드 복사본이 생성됩니다. 이것은 단형화(monomorphization)이라고 하고 Java와 Haskell에서 전형적으로 사용되는 유형 삭제 체계와 대조됩니다. 러스트의 유형 삭제는 키워드 dyn을 사용함으로써 사용할 수 있습니다. 단형화의 이점은 각각의 특정 사용 사례에 대해 최적화된 코드입니다; 단점은 컴파일 시간과 결과 바이너리의 크기가 증가한다는 것입니다.

러스트에서, 사용자-정의 유형은 struct 또는 enum 키워드로 생성됩니다. 이들 유형은 보통 다른 언어에서 객체 또는 클래스와 같은 데이터의 필드를 포함합니다. impl 키워드는 유형에 대해 메소드를 정의하거나 (데이터와 함수는 별도로 정의됨) 유형에 대해 트리트를 구현할 수 있습니다. 트리트는 구조가 구현된 요구된 메서드를 가지는 계약입니다. 트리트는 지네릭 매개변수를 제한하기 위해 사용되고 트리트는 사용자가 정의한 것보다 더 많은 메서드를 구조체에 제공할 수 있기 때문입니다. 예를 들어, Iterator 트리트는 유형에 대해 next 메소드가 정의되어야 함을 요구합니다. 일단 next 메서드가 정의되면, 그 트리트는 map 또는 filter와 같은 반복에 걸쳐 공통 함수형 도움 메서드를 제공합니다.

지네릭 인수를 포함한 유형 별칭은 type 키워드로 정의할 수도 있습니다.

러스트 내의 객체 시스템은 구현, 트리트, 및 구조화된 유형을 기반으로 합니다. 구현은 다른 언어 내의 클래스와 유사한 역할을 수행하고 키워드 impl로 정의됩니다. 트리트는 상속과 다형성을 제공합니다; 그것들은 메서드를 정의되도록 허용하고 구현에서 혼합될 수 있습니다. 구조화된 유형은 필드를 정의하기 위해 사용됩니다. 구현과 트리트는 필드 자체를 정의할 수 없고, 오직 트리트가 상속을 제공할 수 있습니다. 다른 이점 중에서, 이것은 C++에서와 같이 다중 상속다이아몬드 문제를 방지합니다. 다시 말해서, 러스트는 인터페이스 상속을 지원하지만 구현 상속을 합성으로 대체합니다; 상속에 걸쳐 합성을 참조하십시오.

Macros for language extension

절차적 매크로 메커니즘을 사용하여 러스트 언어를 확장하는 것이 가능합니다. [44]

절차적 매크로는 컴파일러의 토큰 스트림을 수정하기 위해 컴파일 타임에 실행되는 러스트 함수를 사용합니다. 이것은 유사한 목표를 달성하기 위해 패턴 일치를 사용하는 선언적 매크로 메커니즘 (역시 예제에 의한 매크로로 알려져 있음)을 보완합니다.

절차적 매크로는 세 가지 형태로 제공됩니다:

  • 함수-계열 매크로 custom!(...)
  • 파생 매크로 #[derive(CustomDerive)]
  • 속성 매크로 #[custom_attribute]

println! 매크로는 함수-계열 매크로의 한 예제이고 serde_deriveJSON과 같은 많은 형식에서 데이터를 읽고 쓰기 위한 코드를 생성하는 데 공통적으로 사용되는 라이브러리입니다.[45] 속성 매크로는 R로의 러스트 바인딩에 대해 extendr 라이브러리와 같은 언어 바인딩에 공통적으로 사용됩니다.[46]

다음 코드는 Serialize, DeserializeDebug 파생 절차적 매크로의 사용을 JSON 읽기와 쓰기를 구현하고 마찬가지로 디버깅을 위해 구조를 형식화하는 능력을 보여줍니다.

use serde_json::{Serialize, Deserialize};

#[derive(Serialize, Deserialize, Debug)]
struct Point {
    x: i32,
    y: i32,
}

fn main() {
    let point = Point { x: 1, y: 2 };

    let serialized = serde_json::to_string(&point).unwrap();
    println!("serialized = {}", serialized);

    let deserialized: Point = serde_json::from_str(&serialized).unwrap();
    println!("deserialized = {:?}", deserialized);
}

Interface with C and C++

러스트는 러스트에서 C와 같은 언어로 작성된 코드를 호출하고 해당 언어에서 러스트 코드를 호출하는 데 모두 사용될 수 있는 외래 함수 인터페이스 (FFI)를 가집니다. 러스트는 역시 C++에서 또는 C++로의 호출을 허용하기 위해 라이브러리, CXX를 가지고 있습니다.[47]

Components

컴파일러표준 라이브러리 외에도, 러스트 생태계에는 소프트웨어 개발을 위한 추가 구성 요소를 포함하고 있습니다. 구성 요소 설치는 전형적으로 러스트 프로젝트에 의해 개발된 러스트 도구 모음 설치 프로그램, rustup에 의해 관리됩니다.[48]

Cargo

Cargo는 러스트의 빌드 시스템이자 패키지 관리자입니다. Cargo는 공식 저장소에서 관리되는, crates라고 하는 패키지를 다운로드, 컴파일, 배포, 및 업로드합니다.[49][50] Cargo는 Clippy와 기타 러스트 구성 요소도 래핑합니다.

Cargo는 프로젝트에게 어느 정도 유연성을 가지고 특정 디렉토리 구조를 따를 것을 요구합니다.[51] Cargo를 사용하는 프로젝트는 단일 크레이트이거나 서로 의존할 수 있는 여러 크레이트로 구성된 workspace일 수 있습니다.[52]

크레이트에 대한 종속성은 SemVer 버전 요구 사항과 함께 Cargo.toml 파일에 지정되며, 어떤 종속성 버전이 그것들을 사용하는 크레이트와 호환되는지를 Cargo에 알려줍니다.[53] 기본적으로 Cargo는 사용자-기여 저장소 crates.io에서 종속성을 제공하지만, 지역적 파일 시스템에서 Git 저장소와 크레이트도 종속성으로 지정될 수 있습니다.[54]

Rustfmt

Rustfmt는 Rust에 대해 코드 포맷터입니다. 그것은 러스트 소스 코드를 입력으로 취하고 러스트 스타일 가이드 또는 rustfmt.toml 파일에 지정된 규칙에 따라 형식-지정된 코드를 생성하기 위해 공백과 들여쓰기를 변경합니다. Rustfmt는 독립 실행형 프로그램으로 호출되거나 Cargo를 통해 러스트 프로젝트에서 호출될 수 있습니다.[55][56]

Clippy

Clippy는 러스트 코드의 정확성, 성능, 및 가독성을 개선하기 위한 러스트의 내장 린팅 도구입니다. 그것은 2014년에 만들어졌고[57] 동명의 Microsoft Office 특색의 이름을 따서 지어졌습니다.[58] 2021년 기준, Clippy는 450개 이상의 규칙을 가지며,[59] 온라인에서 검색되고 카테고리별로 필터링될 수 있습니다.[60] 일부 규칙은 기본적으로 비활성화되어 있습니다.

Versioning system

Rust 1.0에 이어, 새로운 특색이 매일 출시되는 nightly 버전으로 개발되었습니다. 매 6주의 출시 주기 동안, nightly 버전에서 변경 사항은 베타로 출시되고, 이전 베타 버전에서 변경 사항은 새로운 안정 버전으로 출시됩니다.[61][62]

매 2에서 3년마다, 새로운 "판"이 생성됩니다. 판은 러스트의 train release schedule의 빈번한 본성으로 인한 변경에 대해 쉬운 참조 지점을 제공하고, 제한적인 주요 변경을 수행할 수 있는 창을 제공하기 위해 출시되었습니다. 판은 대부분 호환되고 새 판으로의 이주는 자동화된 도구로 간단하게 됩니다.[63]

IDE support

러스트에 대해 가장 인기 있는 언어 서버rust-analyzer[64]RLS입니다.[65] 이들 프로젝트는 IDE텍스트 편집기에 러스트 프로젝트에 대한 추가 정보를 제공합니다. 기본 특색은 여러 기능 중에서 Clippy를 통한 린팅 검사와 Rustfmt를 통한 서식 지정을 포함합니다. RLS는 역시 Racer를 통해 자동 코드 완성을 제공하지만, Racer의 개발은 러스트-분석기를 선호하여 느려졌습니다.[66]

Performance

러스트는 "안전성 희생없이 관용적인 C++만큼 효율적이고 이식성이 있는 것"을 목표로 합니다.[67] 러스트는 LLVM을 사용하기 때문에, LLVM에서 임의의 성능 향상은 러스트에도 적용됩니다.[68]

Adoption

러스트는 주요 소프트웨어 공학 회사에 의해 채택되어 왔습니다. 예를 들어, Dropbox는 이제 Amazon,[24] Microsoft, Facebook,[69] Discord,[25]모질라 재단의 일부 구성 요소와 마찬가지로 러스트로 작성되었습니다. 러스트는 2015년 스택 오버플로 연례 설문조사에서 세 번째로 사랑받는 프로그래밍 언어였고,[70] 2016–2021년에 1위를 차지했습니다.[71][72]

Web browsers and services

Operating systems

  • Redox는 러스트로 작성된 마이크로커널을 포함하는 "본격적인 유닉스-계열 운영 시스템"입니다.[80]
  • Theseus, "intralingual design"와 함께 실험적인 OS는 러스트로 작성되었습니다.[81]
  • Google Fuchsia 기능-기반 운영 시스템은 TCP/IP 라이브러리를 포함하여 러스트로 작성된 구성 요소를 가집니다.[82][83]
  • Stratis페도라와 RHEL 8에 대해 러스트로 작성된 파일 시스템 관리자입니다.[84][85]
  • exa는 러스트로 작성된 ls에 대한 유닉스/리눅스 명령-줄 대안입니다.
  • 2021이래로, 리눅스 커널에 러스트 지원을 추가하기 위한 패치 시리즈가 있습니다.[86]

Other notable projects and platforms

See also

Explanatory notes

  1. ^ Including build tools, host tools, and standard library support for x86-64, ARM, MIPS, RISC-V, WebAssembly, i686, AArch64, PowerPC, and s390x.[1]
  2. ^ Including Windows, Linux, macOS, FreeBSD, NetBSD, and Illumos. Host build tools on Android, iOS, Haiku, Redox, and Fuchsia are not officially shipped; these operating systems are supported as targets.[1]
  3. ^ Some third-party exceptions, including LLVM, are licensed under different open source terms.[2][3]

References

  1. ^ a b "Platform Support". The rustc book. Retrieved 2022-06-27.
  2. ^ "The Rust Programming Language". The Rust Programming Language. 19 October 2022.
  3. ^ "Uniqueness Types". Rust Blog. Retrieved 2016-10-08. Those of you familiar with the Elm style may recognize that the updated --explain messages draw heavy inspiration from the Elm approach.
  4. ^ a b "The Rust Reference: Appendix: Influences". Archived from the original on January 26, 2019. Retrieved November 11, 2018.
  5. ^ "Uniqueness Types". Idris 1.3.3 documentation. Retrieved 2022-07-14. They are inspired by ... ownership types and borrowed pointers in the Rust programming language.
  6. ^ Jaloyan, Georges-Axel (19 October 2017). "Safe Pointers in SPARK 2014". arXiv:1710.07047. Bibcode:2017arXiv171007047J.
  7. ^ Lattner, Chris. "Chris Lattner's Homepage". Nondot.org. Archived from the original on 2018-12-25. Retrieved 2019-05-14.
  8. ^ "Microsoft opens up Rust-inspired Project Verona programming language on GitHub". ZDNet. Archived from the original on 2020-01-17. Retrieved 2020-01-17.
  9. ^ Yegulalp, Serdar (2016-08-29). "New challenger joins Rust to topple C language". InfoWorld. Retrieved 2022-10-19.
  10. ^ Hoare, Graydon (2016-12-28). "Rust is mostly safety". Graydon2. Dreamwidth Studios. Archived from the original on 2019-05-02. Retrieved 2019-05-13.
  11. ^ "FAQ – The Rust Project". Rust-lang.org. Archived from the original on 2016-06-09. Retrieved 27 June 2019.
  12. ^ "Rust vs. C++ Comparison". Archived from the original on 20 November 2018. Retrieved 20 November 2018.
  13. ^ a b "Unsafe Rust". Archived from the original on 2020-10-14. Retrieved 2020-10-17.
  14. ^ "Fearless Security: Memory Safety". Archived from the original on 8 November 2020. Retrieved 4 November 2020.
  15. ^ "Rc<T>, the Reference Counted Smart Pointer". Archived from the original on 11 November 2020. Retrieved 4 November 2020.
  16. ^ "Foreword - The Rust Programming Language". Retrieved April 21, 2022.
  17. ^ "What Unsafe Can Do - The Rustonomicon". doc.rust-lang.org. Retrieved 2022-04-21.
  18. ^ "Rust language". Archived from the original on 6 September 2020. Retrieved 9 Sep 2020. Mozilla was the first investor for Rust and continues to sponsor the work of the open source project. Mozilla also utilizes Rust in many of its core initiatives including Servo and key parts of Firefox.
  19. ^ Noel (2010-07-08). "The Rust Language". Lambda the Ultimate. Archived from the original on 2012-11-23. Retrieved 2010-10-30.
  20. ^ "Contributors to rust-lang/rust". GitHub. Archived from the original on 2020-05-26. Retrieved 2018-10-12.
  21. ^ Bright, Peter (2013-04-03). "Samsung teams up with Mozilla to build browser engine for multicore machines". Ars Technica. Archived from the original on 2016-12-16. Retrieved 2013-04-04.
  22. ^ "Why AWS loves Rust, and how we'd like to help". Amazon Web Services. 2020-11-24. Retrieved 2022-04-21.
  23. ^ a b "How our AWS Rust team will contribute to Rust's future successes". Amazon Web Services. 2021-03-03. Retrieved 2022-01-02.
  24. ^ a b c Howarth, Jesse (2020-02-04). "Why Discord is switching from Go to Rust". Archived from the original on 2020-06-30. Retrieved 2020-04-14.
  25. ^ The Dropbox Capture Team. "Why we built a custom Rust library for Capture". Dropbox.Tech. Retrieved 2022-04-21.
  26. ^ "A brief history of Rust at Facebook". Engineering at Meta. 2021-04-29. Retrieved 2022-04-21.
  27. ^ Amadeo, Ron (2021-04-07). "Google is now writing low-level Android code in Rust". Ars Technica. Retrieved 2022-04-21.
  28. ^ "Rust in the Android platform". Google Online Security Blog. Retrieved 2022-04-21.
  29. ^ "Why Rust for safe systems programming". Microsoft Security Response Center. Retrieved 2022-04-21.
  30. ^ Tung, Liam. "Microsoft: Why we used programming language Rust over Go for WebAssembly on Kubernetes app". ZDNet. Retrieved 2022-04-21.
  31. ^ "Stack Overflow Developer Survey 2021". Stack Overflow. Retrieved 2021-08-03.{{cite web}}: CS1 maint: url-status (link)
  32. ^ Avram, Abel (2012-08-03). "Interview on Rust, a Systems Programming Language Developed by Mozilla". InfoQ. Archived from the original on 2013-07-24. Retrieved 2013-08-17.
  33. ^ "Debian -- Details of package rustc in sid". packages.debian.org. Archived from the original on 2017-02-22. Retrieved 2017-02-21.
  34. ^ Rosenblatt, Seth (2013-04-03). "Samsung joins Mozilla's quest for Rust". Archived from the original on 2013-04-04. Retrieved 2013-04-05.
  35. ^ a b Brown, Neil (2013-04-17). "A taste of Rust". Archived from the original on 2013-04-26. Retrieved 2013-04-25.
  36. ^ "Races - The Rustonomicon". doc.rust-lang.org. Archived from the original on 2017-07-10. Retrieved 2017-07-03.
  37. ^ "The Rust Language FAQ". static.rust-lang.org. 2015. Archived from the original on 2015-04-20. Retrieved 2017-04-24.
  38. ^ "RAII – Rust By Example". doc.rust-lang.org. Archived from the original on 2019-04-21. Retrieved 2020-11-22.
  39. ^ "Abstraction without overhead: traits in Rust". Rust Blog.
  40. ^ Klabnik, Steve; Nichols, Carol (June 2018). "Chapter 4: Understanding Ownership". The Rust Programming Language. San Francisco, California: No Starch Press. p. 44. ISBN 978-1-593-27828-1. Archived from the original on 2019-05-03. Retrieved 2019-05-14.
  41. ^ "The Rust Programming Language: What is Ownership". Rust-lang.org. Archived from the original on 2019-05-19. Retrieved 2019-05-14.
  42. ^ Walton, Patrick (2010-10-01). "Rust Features I: Type Inference". Archived from the original on 2011-07-08. Retrieved 2011-01-21.
  43. ^ "Procedural Macros". The Rust Programming Language Reference. Archived from the original on 7 November 2020. Retrieved 23 Mar 2021.
  44. ^ "Serde Derive". Serde Derive documentation. Archived from the original on 17 April 2021. Retrieved 23 Mar 2021.
  45. ^ "extendr_api - Rust". Extendr Api Documentation. Retrieved 23 Mar 2021.
  46. ^ "Safe Interoperability between Rust and C++ with CXX". InfoQ. 2020-12-06. Retrieved 2021-01-03.
  47. ^ rust-lang/rustup, The Rust Programming Language, 2021-05-17, retrieved 2021-05-17
  48. ^ "Packages and Crates - The Rust Programming Language". doc.rust-lang.org. Retrieved 2022-02-04.
  49. ^ "The Cargo Book". Retrieved 19 February 2022.
  50. ^ "Why Cargo Exists". The Cargo Book. Retrieved May 18, 2021.
  51. ^ "Workspaces - The Cargo Book". doc.rust-lang.org. Retrieved 2022-02-28.
  52. ^ "Dependency Resolution - The Cargo Book". doc.rust-lang.org. Retrieved 2022-02-28.
  53. ^ "Specifying Dependencies - The Cargo Book". doc.rust-lang.org. Retrieved 2021-05-17.
  54. ^ "rust-dev-tools/fmt-rfcs". GitHub. Retrieved 2021-09-21.
  55. ^ "rustfmt". GitHub. Retrieved May 19, 2021.
  56. ^ "Create README.md · rust-lang/rust-clippy@507dc2b". GitHub. Retrieved 2021-11-22.
  57. ^ "Day 1 - cargo subcommands | 24 days of Rust". zsiciarz.github.io. Retrieved 2021-11-22.
  58. ^ "rust-lang/rust-clippy". GitHub. Retrieved 2021-05-21.
  59. ^ "ALL the Clippy Lints". Retrieved May 22, 2021.
  60. ^ "Scheduling the Trains". Archived from the original on 2017-01-02. Retrieved 2017-01-01.
  61. ^ "G - How Rust is Made and "Nightly Rust" - The Rust Programming Language". doc.rust-lang.org. Retrieved 2021-05-22.
  62. ^ "What are editions? - The Edition Guide". doc.rust-lang.org. Retrieved 2021-05-22.
  63. ^ rust-analyzer/rust-analyzer, rust-analyzer, 2022-01-02, retrieved 2022-01-02
  64. ^ "rust-lang/rls". GitHub. Retrieved 2021-05-26.
  65. ^ "racer-rust/racer". GitHub. Retrieved 2021-05-26.
  66. ^ Walton, Patrick (2010-12-05). "C++ Design Goals in the Context of Rust". Archived from the original on 2010-12-09. Retrieved 2011-01-21.
  67. ^ "How Fast Is Rust?". The Rust Programming Language FAQ. Archived from the original on 28 October 2020. Retrieved 11 April 2019.
  68. ^ "A brief history of Rust at Facebook". Engineering at Meta. April 29, 2021. Retrieved 19 January 2022.
  69. ^ "Stack Overflow Developer Survey 2015". Stackoverflow.com. Archived from the original on 2016-12-31. Retrieved 2016-11-03.
  70. ^ "Stack Overflow Developer Survey 2019". Stack Overflow. Archived from the original on 2020-10-08. Retrieved 2021-03-31.
  71. ^ "Stack Overflow Developer Survey 2021". Stack Overflow. Retrieved 2021-08-24.{{cite web}}: CS1 maint: url-status (link)
  72. ^ Yegulalp, Serdar (2015-04-03). "Mozilla's Rust-based Servo browser engine inches forward". InfoWorld. Archived from the original on 2016-03-16. Retrieved 2016-03-15.
  73. ^ Lardinois, Frederic (2015-04-03). "Mozilla And Samsung Team Up To Develop Servo, Mozilla's Next-Gen Browser Engine For Multicore Processors". TechCrunch. Archived from the original on 2016-09-10. Retrieved 2017-06-25.
  74. ^ Bryant, David (27 October 2016). "A Quantum Leap for the web". Medium. Archived from the original on 9 December 2020. Retrieved 27 October 2016.
  75. ^ Balbaert, Ivo (27 May 2015). Rust Essentials. Packt Publishing. p. 6. ISBN 978-1785285769. Retrieved 21 March 2016.
  76. ^ Frank, Denis (5 December 2013). "Using HyperLogLog to Detect Malware Faster Than Ever". OpenDNS Security Labs. Archived from the original on 14 August 2017. Retrieved 19 March 2016.
  77. ^ Denis, Frank (4 October 2013). "ZeroMQ: Helping us Block Malicious Domains in Real Time". OpenDNS Security Labs. Archived from the original on 14 August 2017. Retrieved 19 March 2016.
  78. ^ Garbutt, James (27 January 2019). "First thoughts on Deno, the JavaScript/TypeScript run-time". 43081j.com. Archived from the original on 2020-11-07. Retrieved 2019-09-27.
  79. ^ Yegulalp, Serdar. "Rust's Redox OS could show Linux a few new tricks". infoworld. Archived from the original on 21 March 2016. Retrieved 21 March 2016.
  80. ^ "Introduction to Theseus". Theseus OS Book. Retrieved 2021-07-11.{{cite web}}: CS1 maint: url-status (link)
  81. ^ "Google Fushcia's source code". Google Git. Retrieved 2021-07-02.{{cite web}}: CS1 maint: url-status (link)
  82. ^ "src/connectivity/network/netstack3/core/src - fuchsia". Google Git. Retrieved 2022-04-21.
  83. ^ Sei, Mark (10 October 2018). "Fedora 29 new features: Startis now officially in Fedora". Marksei, Weekly sysadmin pills. Archived from the original on 2019-04-13. Retrieved 2019-05-13.
  84. ^ "RHEL 8: Chapter 8. Managing layered local storage with Stratis". 10 October 2018. Archived from the original on 13 April 2019. Retrieved 13 April 2019.
  85. ^ "rust-for-linux.vger.kernel.org archive mirror". lore.kernel.org. Retrieved 2022-03-24.
  86. ^ Vishnevskiy, Stanislav (July 6, 2017). "How Discord Scaled Elixir to 5,000,000 Concurrent Users". Discord Blog.
  87. ^ Nichols, Shaun (27 June 2018). "Microsoft's next trick? Kicking things out of the cloud to Azure IoT Edge". The Register. Archived from the original on 2019-09-27. Retrieved 2019-09-27.
  88. ^ "Ruffle". Ruffle. Archived from the original on 2021-01-26. Retrieved 2021-04-14.
  89. ^ terminusdb/terminusdb-store, TerminusDB, 2020-12-14, archived from the original on 2020-12-15, retrieved 2020-12-14
  90. ^ "Announcing the General Availability of Bottlerocket, an open source Linux distribution built to run containers". Amazon Web Services. 2020-08-31. Retrieved 2022-01-02.

Further reading

External links