Rust (programming language): Difference between revisions - Wikipedia


Article Images

Line 15:

}}

| released = {{Start date and age|2015|05|15}}

| developerdesigner = RustGraydon ProjectHoare

| developer = The Rust Team

| latest release version = {{wikidata|property|edit|reference|P548=Q2804309|P348}}

| latest release date = {{start date and age|{{wikidata|qualifier|mdy|P548=Q2804309|P348|P577}}}}

Line 59 ⟶ 60:

}}

'''Rust''' is a [[General-purpose programming language|general-purpose]] [[programming language]] emphasizing [[Computer performance|performance]], [[type safety]], and [[Concurrency (computer science)|concurrency]]. It enforces [[memory safety]], meaning that all [[Reference (computer science)|references]] point to valid memory,. It does so without a traditional [[Garbage collection (computer science)|garbage collector]].; To simultaneouslyinstead, enforceboth memory safety anderrors preventand [[data race]]s, itsare prevented by the "borrow checker", which tracks the [[object lifetime]] of all references in a program during [[Compiler|compilingat compile time]].

Rust does not enforce a [[programming paradigm]], but was influenced by ideas from [[functional programming]], including [[Immutable object|immutability]], [[higher-order function]]s, and [[algebraic data type]]s, and [[pattern matching]]. It also supports [[object-oriented programming]] via structs, [[Enumerated type|enums]], traits, and methods. It is popular for [[systems programming]].<ref>{{Cite book |last1=Eshwarla |first1=Prabhu |date=2020-12-24 |url=https://books.google.com/books?id=eEUREAAAQBAJ |title=Practical System Programming for Rust Developers: Build fast and secure software for Linux/Unix systems with the help of practical examples |publisher=Packt Publishing Ltd |isbn=978-1-80056-201-1 |language=en}}</ref><ref>{{Cite book |last1=Blandy |first1=Jim |date=2017-11-21 |url=https://books.google.com/books?id=h8c_DwAAQBAJ |title=Programming Rust: Fast, Safe Systems Development |last2=Orendorff |first2=Jason |publisher=O'Reilly Media, Inc. |isbn=978-1-4919-2725-0 |language=en}}</ref><ref name="Astrophysics">{{Cite journal |last1=Blanco-Cuaresma |first1=Sergi |last2=Bolmont |first2=Emeline |date=2017-05-30 |title=What can the programming language Rust do for astrophysics? |url=https://www.cambridge.org/core/journals/proceedings-of-the-international-astronomical-union/article/what-can-the-programming-language-rust-do-for-astrophysics/B51B6DF72B7641F2352C05A502F3D881 |journal=[[Proceedings of the International Astronomical Union]] |language=en |volume=12 |issue=S325 |pages=341–344 |doi=10.1017/S1743921316013168 |arxiv=1702.02951 |bibcode=2017IAUS..325..341B |s2cid=7857871 |issn=1743-9213}}</ref> Rust does not enforce a [[programming paradigm]], but supports [[object-oriented programming]] via structs, enums, traits, and methods, and supports functional programming via immutability, pure functions, higher order functions, and pattern matching.

Software developer Graydon Hoare created Rust as a personal project while working at [[Mozilla]] Research in 2006. Mozilla officially sponsored the project in 2009. In the years following the first stable release in May 2015, Rust was adopted by companies including [[Amazon (company)|Amazon]], [[Discord]], [[Dropbox]], [[Google]] ([[Alphabet Inc.|Alphabet]]), [[Meta Platforms|Meta]], and [[Microsoft]]. In December 2022, it became the first language other than [[C (programming language)|C]] and [[Assembly language|assembly]] to be supported in the development of the [[Linux kernel]].

Line 146 ⟶ 147:

=== Keywords and control flow ===

In Rust, blocks of code are delimited by [[Bracket#Curly brackets|curly brackets]].{{sfn|Klabnik|Nichols|2023|pp=6,44,47}}

==== {{code|if}} blocks ====

An {{rust|if}} [[conditional expression]] executes code based on whether the given value is {{code|true}}. {{rust|else}} can be used for when the value evaluates to {{code|false}}, and {{rust|else if}} can be used for combining multiple expressions.{{sfn|Klabnik|Nichols|2023|pp=50-52}}

Line 162 ⟶ 165:

} else {

println!("value is not divisible by 7 or 5");

}

}

</syntaxhighlight>

The {{rust|loop}} keyword allows repeating a portion of code until a {{rust|break}} occurs. {{rust|break}} may optionally exit the loop with a value. Labels denoted with {{rust|'label_name}} can be used to break an outer loop when loops are nested.{{sfn|Klabnik|Nichols|2023|pp=54-56}}

<syntaxhighlight lang="rust">

fn main() {

let value = 456;

let mut x = 1;

let y = loop {

x *= 10;

if x > value {

break x / 10;

}

};

println!("largest power of ten that is smaller than value: {y}");

let mut up = 1;

'outer: loop {

let mut down = 120;

loop {

if up > 100 {

break 'outer;

}

if down < 4 {

break;

}

down /= 2;

up += 1;

println!("up: {up}, down: {down}");

}

up *= 2;

}

}

Line 217 ⟶ 185:

==== {{code|for}} loops and iterators ====

[[For loop]]s in Rust are [[foreach loops]] that loop over elements of a collection.{{sfn|Klabnik|Nichols|2023|pp=57-58}}

For expressions work over any [[iterator]] type.

Line 229 ⟶ 197:

</syntaxhighlight>

In the above code, <code>4..=10</code> is a value of type <code>Range</code> which implements the <code>Iterator</code> trait;. theThe code applieswithin the functioncurly <code>f</code>braces is applied to each element returned by the iterator.

Iterators can be combined with functions over iterators like <code>map</code>, <code>filter</code>, and <code>sum</code>. For example, the following adds up all numbers between 1 and 100 that are multiples of 3:

Line 237 ⟶ 205:

</syntaxhighlight>

==== {{code|loop}} and {{code|break}} statements ====

<!-- TODO: talk about pattern matching with if and while and comments denoted with `//` -->

TheMore generally, the {{rust|loop}} keyword allows repeating a portion of code until a {{rust|break}} occurs. {{rust|break}} may optionally exit the loop with a value. Labels denoted with {{rust|'label_name}} can be used to break an outer loop when loops are nested.{{sfn|Klabnik|Nichols|2023|pp=54-56}}

<syntaxhighlight lang="rust">

fn main() {

let value = 456;

let mut x = 1;

let y = loop {

x *= 10;

if x > value {

break x / 10;

}

};

println!("largest power of ten that is smaller than value: {y}");

let mut up = 1;

'outer: loop {

let mut down = 120;

loop {

if up > 100 {

break 'outer;

}

if down < 4 {

break;

}

down /= 2;

up += 1;

println!("up: {up}, down: {down}");

}

up *= 2;

}

}

</syntaxhighlight>

=== Expressions ===

Rust is [[Expression-oriented programming language|expression-oriented]], with nearly every part of a function body being an [[Expression (computer science)|expression]], including control-flow operators.{{sfn|Klabnik|Nichols|2019|pp=50–53}} The ordinary <code>if</code> expression is used insteadto ofprovide the [[?:|C's ternary conditional operator]]. With returns being implicit, a function does not need to end with a <code>return</code> expression; if the semicolon is omitted, the value of the last expression in the function is used as the [[return value]],<ref>{{Cite web |last=Tyson |first=Matthew |date=2022-03-03 |title=Rust programming for Java developers |url=https://www.infoworld.com/article/3651362/rust-programming-for-java-developers.html |access-date=2022-07-14 |website=InfoWorld |language=en}}</ref> as seen in the following [[Recursion (computer science)|recursive]] implementation of the [[factorial]] function:

<syntaxhighlight lang="rust">

Line 294 ⟶ 297:

By default, integer [[Literal (computer programming)|literals]] are in base-10, but different [[radix|radices]] are supported with prefixes, for example, {{code|0b11}} for [[binary number]]s, {{code|0o567}} for [[octal]]s, and {{code|0xDB}} for [[hexadecimal]]s. By default, integer literals default to {{code|i32}} as its type. Suffixes such as {{code|4u32}} can be used to explicitly set the type of a literal.{{sfn|Klabnik|Nichols|2023|pp=36-38}} Byte literals such as {{code|b'X'}} are available to represent the [[ASCII]] value (in {{code|u8}}) of a specific character.{{sfn|Klabnik|Nichols|2023|p=502}}

The [[booleanBoolean type]] is referred to as {{rust|bool}} which can take a value of either {{rust|true}} or {{rust|false}}. A {{rust|char}} takes up 32 bits of space and represents a Unicode scalar value: a [[Unicode codepoint]] that is not a [[Universal Character Set characters#Surrogates|surrogate]].<ref>{{Cite web |title=Glossary of Unicode Terms |url=https://www.unicode.org/glossary/ |access-date=2024-07-30 |website=[[Unicode Consortium]]}}</ref> [[IEEE 754]] floating point numbers are supported with {{rust|f32}} for [[single precision float]]s and {{rust|f64}} for [[double precision float]]s.{{sfn|Klabnik|Nichols|2019|pp=38–40}}

<!-- todo compound types, str, and ! -->

Line 558 ⟶ 561:

</syntaxhighlight>

The borrow checker in the Rust compiler uses lifetimes to ensure that the values a reference points to remain valid.{{sfn|Klabnik|Nichols|2019|pp=75,134}}<ref>{{Cite web |last=Shamrell-Harrington |first=Nell |title=The Rust Borrow Checker – a Deep Dive |url=https://www.infoq.com/presentations/rust-borrow-checker/ |access-date=2022-06-25 |website=InfoQ |language=en}}</ref> In the example above, storing a reference to variable {{code|x}} toin {{code|r}} is valid, as variable {{code|x}} has a longer lifetime ({{code|'a}}) than variable {{code|r}} ({{code|'b}}). However, when {{code|x}} has a shorter lifetime, the borrow checker would reject the program:

<syntaxhighlight lang="rust">

Line 714 ⟶ 717:

The following code shows the use of the <code>Serialize</code>, <code>Deserialize</code>, and <code>Debug</code>-derived procedural macros

to implement JSON reading and writing, as well as the ability to format a structure for debugging.

[[File:Rust serde UML diagram.svg|thumb|A [[UML diagram]] depicting a Rust struct named Point.]]

<syntaxhighlight lang="rust">

use serde_jsonserde::{Serialize, Deserialize};

#[derive(Serialize, Deserialize, Debug)]

Line 797 ⟶ 799:

Rust is used in several [[Frontend and backend|backend]] software projects of large [[web service]]s. [[OpenDNS]], a [[Domain Name System|DNS]] resolution service owned by [[Cisco]], uses Rust internally.<ref>{{Cite web |last=Shankland |first=Stephen |date=2016-07-12 |title=Firefox will get overhaul in bid to get you interested again |url=https://www.cnet.com/tech/services-and-software/firefox-mozilla-gets-overhaul-in-a-bid-to-get-you-interested-again/ |access-date=2022-07-14 |publisher=CNET |language=en}}</ref><ref>{{Cite web |author=Security Research Team |date=2013-10-04 |title=ZeroMQ: Helping us Block Malicious Domains in Real Time |url=https://umbrella.cisco.com/blog/zeromq-helping-us-block-malicious-domains |access-date=2023-05-13 |website=Cisco Umbrella |language=en-US |archive-date=2023-05-13 |archive-url=https://web.archive.org/web/20230513161542/https://umbrella.cisco.com/blog/zeromq-helping-us-block-malicious-domains |url-status=dead }}</ref> Amazon Web Services uses Rust in "performance-sensitive components" of its several services. In 2019, AWS has [[open sourced|open-sourced]] [[Firecracker (software)|Firecracker]], a virtualization solution primarily written in Rust.<ref>{{Cite web |last=Cimpanu |first=Catalin |title=AWS to sponsor Rust project |url=https://www.zdnet.com/article/aws-to-sponsor-rust-project/ |date=2019-10-15 |access-date=2024-07-17 |website=[[ZDNET]] |language=en}}</ref> [[Microsoft Azure]] IoT Edge, a platform used to run Azure services on [[Internet of things|IoT]] devices, has components implemented in Rust.<ref>{{Cite web|url=https://www.theregister.co.uk/2018/06/27/microsofts_next_cloud_trick_kicking_things_out_of_the_cloud_to_azure_iot_edge/|title=Microsoft's next trick? Kicking things out of the cloud to Azure IoT Edge|last=Nichols|first=Shaun|date=27 June 2018|website=The Register|language=en|access-date=2019-09-27|archive-date=2019-09-27|archive-url=https://web.archive.org/web/20190927092433/https://www.theregister.co.uk/2018/06/27/microsofts_next_cloud_trick_kicking_things_out_of_the_cloud_to_azure_iot_edge/|url-status=live}}</ref> Microsoft also uses Rust to run containerized modules with [[WebAssembly]] and [[Kubernetes]].<ref>{{Cite web |last=Tung |first=Liam |title=Microsoft: Why we used programming language Rust over Go for WebAssembly on Kubernetes app |url=https://www.zdnet.com/article/microsoft-why-we-used-programming-language-rust-over-go-for-webassembly-on-kubernetes-app/ |access-date=2022-04-21 |publisher=ZDNet |language=en |archive-date=April 21, 2022 |archive-url=https://web.archive.org/web/20220421043549/https://www.zdnet.com/article/microsoft-why-we-used-programming-language-rust-over-go-for-webassembly-on-kubernetes-app/ |url-status=live}}</ref> [[Cloudflare]], a company providing [[content delivery network]] services, used Rust to build a new [[web proxy]] named Pingora for increased performance and efficiency.<ref>{{Cite web |last=Claburn |first=Thomas |date=20 September 2022 |title=In Rust We Trust: Microsoft Azure CTO shuns C and C++ |url=https://www.theregister.com/2022/09/20/rust_microsoft_c/ |access-date=7 July 2024 |website=[[The Register]]}}</ref>

The [[npm|npm package manager]] started using Rust for its production authentication service in 2019.<ref>{{Cite web |last=Simone |first=Sergio De |title=NPM Adopted Rust to Remove Performance Bottlenecks |url=https://www.infoq.com/news/2019/03/rust-npm-performance/ |access-date=2023-11-20 |website=InfoQ |language=en}}</ref><ref>{{Citation |last=Lyu |first=Shing |title=Welcome to the World of Rust |date=2020 |url=https://doi.org/10.1007/978-1-4842-5599-5_1 |work=Practical Rust Projects: Building Game, Physical Computing, and Machine Learning Applications |pages=1–8 |editor-last=Lyu |editor-first=Shing |access-date=2023-11-29 |place=Berkeley, CA |publisher=Apress |language=en |doi=10.1007/978-1-4842-5599-5_1 |isbn=978-1-4842-5599-5}}</ref><ref>{{Citation |last=Lyu |first=Shing |title=Rust in the Web World |date=2021 |url=https://doi.org/10.1007/978-1-4842-6589-5_1 |work=Practical Rust Web Projects: Building Cloud and Web-Based Applications |pages=1–7 |editor-last=Lyu |editor-first=Shing |access-date=2023-11-29 |place=Berkeley, CA |publisher=Apress |language=en |doi=10.1007/978-1-4842-6589-5_1 |isbn=978-1-4842-6589-5}}</ref>

In operating systems, Rustthe support[[Android has(operating beensystem)|Android]] addeddevelopers towere using [[Rust forin Linux|Linux]]2021 to rewrite existing components.<ref>{{Cite web |firstlast=TimAmadeo |lastfirst=AndersonRon |date=2021-1204-07 |title=RustyGoogle Linuxis kernelnow drawswriting closerlow-level withAndroid newcode patchin Rust |url=https://www.theregisterarstechnica.com/gadgets/2021/1204/07/rusty_linux_kernel_draws_closergoogle-is-now-writing-low-level-android-code-in-rust/ |access-date=2022-0704-1421 |website=TheArs RegisterTechnica |language=en}}</ref><ref>{{Cite web-us |titlearchive-date=AApril first8, look at Rust in the 6.1 kernel [LWN.net]2021 |archive-url=https://lwnweb.netarchive.org/Articlesweb/91076220210408001446/ |accesshttps://arstechnica.com/gadgets/2021/04/google-date=2023is-11now-11writing-low-level-android-code-in-rust/ |websiteurl-status=lwn.netlive}}</ref> and [[Android (operating system)|Android]].<ref name=":1">{{Citecite web |author1=Darkcrizt |title=RustGoogle inDevelops theNew Bluetooth Stack for Android, platformWritten in Rust |url=https://securityblog.googleblogdesdelinux.comnet/2021en/04/rustgoogle-indevelops-androida-platform.html |accessnew-date=2022bluetooth-04stack-21for-android-written-in-rust/ |website=GoogleDesde Online Security BlogLinux |language=en |archiveaccess-date=April31 3,August 20222024 |archive-url=https://web.archive.org/web/2022040301585220210825165930/https://securityblog.googleblogdesdelinux.comnet/2021en/04/rustgoogle-indevelops-a-new-bluetooth-stack-for-android-platform.htmlwritten-in-rust/ |urlarchive-statusdate=live25 August 2021}}</ref>
The [[Rust for Linux]] project, launched in 2020, added initial Rust support to Linux in late 2022, and the first Linux drivers written in Rust were released in late 2023.<ref>{{Cite web |lastfirst=AmadeoTim |firstlast=RonAnderson |date=2021-0412-07 |title=GoogleRusty isLinux nowkernel writingdraws low-levelcloser Androidwith codenew in Rustpatch |url=https://arstechnicawww.theregister.com/gadgets/2021/0412/google-is-now-writing-low-level-android-code-in-rust07/rusty_linux_kernel_draws_closer/ |access-date=2022-0407-2114 |website=ArsThe TechnicaRegister |language=en-us}}</ref><ref>{{Cite web |archive-datetitle=AprilA 8,first 2021look at Rust in the 6.1 kernel [LWN.net] |archive-url=https://weblwn.archive.orgnet/webArticles/20210408001446910762/https://arstechnica.com/gadgets/2021/04/google |access-isdate=2023-now11-writing-low-level-android-code-in-rust/11 |url-statuswebsite=livelwn.net}}</ref>
[[Microsoft]] is rewriting parts of [[Windows]] in Rust.<ref>{{Cite web |last=Claburn |first=Thomas |title=Microsoft is rewriting core Windows libraries in Rust |url=https://www.theregister.com/2023/04/27/microsoft_windows_rust/ |date=2023-04-27 |access-date=2023-05-13 |website=[[The Register]] |language=en}}</ref> The r9 project aims to re-implement [[Plan 9 from Bell Labs]] in Rust.<ref>{{cite web |last1=Proven |first1=Liam |title=Small but mighty, 9Front's 'Humanbiologics' is here for the truly curious |url=https://www.theregister.com/2023/12/01/9front_humanbiologics/ |website=The Register |access-date=7 March 2024}}</ref> Rust has been used in the development of new operating systems such as [[Redox (operating system)|Redox]], a "Unix-like" operating system and [[microkernel]],<ref>{{cite news |last=Yegulalp |first=Serdar |title=Rust's Redox OS could show Linux a few new tricks |url=http://www.infoworld.com/article/3046100/open-source-tools/rusts-redox-os-could-show-linux-a-few-new-tricks.html |access-date=21 March 2016 |work=InfoWorld |archive-date=21 March 2016 |archive-url=https://web.archive.org/web/20160321192838/http://www.infoworld.com/article/3046100/open-source-tools/rusts-redox-os-could-show-linux-a-few-new-tricks.html |url-status=live}}</ref> Theseus, an experimental operating system with modular state management,<ref>{{Cite web |first=Tim |last=Anderson |date=2021-01-14 |title=Another Rust-y OS: Theseus joins Redox in pursuit of safer, more resilient systems |url=https://www.theregister.com/2021/01/14/rust_os_theseus/ |access-date=2022-07-14 |website=The Register |language=en}}</ref><ref>{{Cite book |last1=Boos |first1=Kevin |last2=Liyanage |first2=Namitha |last3=Ijaz |first3=Ramla |last4=Zhong |first4=Lin |date=2020 |title=Theseus: an Experiment in Operating System Structure and State Management |url=https://www.usenix.org/conference/osdi20/presentation/boos |language=en |pages=1–19 |isbn=978-1-939133-19-9}}</ref> and most of [[Fuchsia (operating system)|Fuchsia]].<ref name="rustmag-1">{{cite web |first1=HanDong (Alex)|last1=Zhang |title=2022 Review {{!}} The adoption of Rust in Business |url=https://rustmagazine.org/issue-1/2022-review-the-adoption-of-rust-in-business/ |date=2023-01-31 |website=Rust Magazine |access-date=February 7, 2023 |language=en}}</ref> Rust is also used for command-line tools and operating system components, including [[Stratis (configuration daemon)|stratisd]], a [[file system]] manager<ref>{{cite web |url=https://www.marksei.com/fedora-29-new-features-startis/ |title=Fedora 29 new features: Startis now officially in Fedora |last=Sei |first=Mark |date=10 October 2018 |website=Marksei, Weekly sysadmin pills |access-date=2019-05-13 |archive-date=2019-04-13 |archive-url=https://web.archive.org/web/20190413075055/https://www.marksei.com/fedora-29-new-features-startis/ |url-status=live}}</ref><ref>{{Cite web |last=Proven |first=Liam |date=2022-07-12 |title=Oracle Linux 9 released, with some interesting additions |url=https://www.theregister.com/2022/07/12/oracle_linux_9/ |access-date=2022-07-14 |website=[[The Register]] |language=en}}</ref> and COSMIC, a [[desktop environment]] by [[System76]].<ref>{{Cite web |last=Proven |first=Liam |date=2023-02-02 |title=System76 teases features coming in homegrown Rust-based desktop COSMIC |url=https://www.theregister.com/2023/02/02/system76_cosmic_xfce_updates/ |access-date=2024-07-17 |website=[[The Register]] |language=en}}</ref>

[[File:Ruffle.rs demo (1).png|thumb|Ruffle, a web emulator for [[Adobe Flash]] [[SWF]] files]]

In web development, the [[npm|npm package manager]] started using Rust in production in 2019.<ref>{{Cite web |last=Simone |first=Sergio De |title=NPM Adopted Rust to Remove Performance Bottlenecks |url=https://www.infoq.com/news/2019/03/rust-npm-performance/ |access-date=2023-11-20 |website=InfoQ |language=en}}</ref><ref>{{Citation |last=Lyu |first=Shing |title=Welcome to the World of Rust |date=2020 |url=https://doi.org/10.1007/978-1-4842-5599-5_1 |work=Practical Rust Projects: Building Game, Physical Computing, and Machine Learning Applications |pages=1–8 |editor-last=Lyu |editor-first=Shing |access-date=2023-11-29 |place=Berkeley, CA |publisher=Apress |language=en |doi=10.1007/978-1-4842-5599-5_1 |isbn=978-1-4842-5599-5}}</ref><ref>{{Citation |last=Lyu |first=Shing |title=Rust in the Web World |date=2021 |url=https://doi.org/10.1007/978-1-4842-6589-5_1 |work=Practical Rust Web Projects: Building Cloud and Web-Based Applications |pages=1–7 |editor-last=Lyu |editor-first=Shing |access-date=2023-11-29 |place=Berkeley, CA |publisher=Apress |language=en |doi=10.1007/978-1-4842-6589-5_1 |isbn=978-1-4842-6589-5}}</ref> [[Deno (software)|Deno]], a secure runtime for [[JavaScript]] and [[TypeScript]], is built on top of [[V8 (JavaScript engine)|V8]] using Rust and Tokio.<ref>{{Cite web |first=Vivian |last=Hu |date=2020-06-12 |title=Deno Is Ready for Production |url=https://www.infoq.com/news/2020/06/deno-1-ready-production/ |access-date=2022-07-14 |website=InfoQ |language=en}}</ref> Other notable adoptions in this space include [[Ruffle (software)|Ruffle]], an open-source [[SWF]] emulator,<ref>{{Cite web |last=Abrams|first=Lawrence|date=2021-02-06|title=This Flash Player emulator lets you securely play your old games|url=https://www.bleepingcomputer.com/news/software/this-flash-player-emulator-lets-you-securely-play-your-old-games/|access-date=2021-12-25|website=BleepingComputer|language=en-us}}</ref> and [[Polkadot (cryptocurrency)|Polkadot]], an open source [[blockchain]] and [[cryptocurrency]] platform.<ref>{{Cite web |last=Kharif |first=Olga |date=October 17, 2020 |title=Ethereum Blockchain Killer Goes By Unassuming Name of Polkadot |url=https://www.bloomberg.com/news/articles/2020-10-17/ethereum-blockchain-killer-goes-by-unassuming-name-of-polkadot |url-access=subscription |access-date=July 14, 2021 |publisher=Bloomberg L.P.}}</ref>

[[Discord]], an [[instant messaging]] software company, has rewritten parts of its system in Rust for increased performance in 2020. In the same year, Dropbox announced that its [[file synchronization]] had been rewritten in Rust. [[Facebook]] ([[Meta Platforms|Meta]]) has also used Rust to redesign its system that manages source code for internal projects.<ref name="MITTechReview" />