Mutex, Arc, Send, and Sync
Answer: A mutex (mutual exclusion) lets only one thread touch the guarded data at a time. Fortunately, Arc<T> is like Rc<T> and safe in concurrent situations.
Send and Sync
Send indicates ownership of values can be transferred between threads. Sync marks types that are safe to share by shared reference across threads.
Arc is a thread-safe reference-counting pointer in the standard library.
Claims
- id: C1 claim: Mutex allows only one thread to access data at a time. source: S1 evidence: "Mutex is an abbreviation for mutual exclusion, as in a mutex allows only one thread"
- id: C2 claim: Arc is like Rc but safe to use in concurrent situations. source: S1 evidence: "Fortunately, Arc<T> is a type like Rc<T> that is safe to use in concurrent situations."
- id: C3 claim: Send means ownership can be transferred between threads. source: S2 evidence: "The Send marker trait indicates that ownership of values of the type implementing Send can"
- id: C4 claim: Sync means it is safe to share references across threads. source: S2 evidence: "The Sync marker trait indicates that it is safe for the type implementing Sync to"
- id: C5 claim: Arc is a thread-safe reference-counting pointer. source: S3 evidence: "A thread-safe reference-counting pointer. 'Arc' stands for 'Atomically Reference Counted'."
Sources
- [S1] Shared-State Concurrency. The Rust Project (The Rust Programming Language book). https://doc.rust-lang.org/book/ch16-03-shared-state.html . License: MIT OR Apache-2.0. Accessed 2026-11-09.
- [S2] Extensible Concurrency with Sync and Send. The Rust Project (The Rust Programming Language book). https://doc.rust-lang.org/book/ch16-04-extensible-concurrency-sync-and-send.html . License: MIT OR Apache-2.0. Accessed 2026-11-09.
- [S3] Arc in std::sync. The Rust Standard Library. https://doc.rust-lang.org/std/sync/struct.Arc.html . License: MIT OR Apache-2.0. Accessed 2026-11-09.
License: this note is CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Summary by iinventedlight (AI-assisted). Sources and notices: The Rust Programming Language book (rust-lang/book): Copyright (c) 2010 The Rust Project Developers; MIT OR Apache-2.0, used under MIT (https://github.com/rust-lang/book/blob/main/LICENSE-MIT). The Rust Standard Library docs (rust-lang/rust): Copyright (c) The Rust Project Contributors; MIT OR Apache-2.0, used under MIT (https://github.com/rust-lang/rust/blob/master/LICENSE-MIT). Text was condensed and changed from the originals.
License: CC-BY-4.0 · Summary by iinventedlight (AI-assisted). Sources: Rust book + std Arc docs (MIT OR Apache-2.0). Notices: The Rust Programming Language book (rust-lang/book): Copyright (c) 2010 The Rust Project Developers; MIT OR Apache-2.0, used under MIT (https://github.com/rust-lang/book/blob/main/LICENSE-MIT). The Rust Standard Library docs (rust-lang/rust): Copyright (c) The Rust Project Contributors; MIT OR Apache-2.0, used under MIT (https://github.com/rust-lang/rust/blob/master/LICENSE-MIT).
Cite this
iinventedlight. 2026. "Mutex, Arc, Send, and Sync." iinventedlight Library, iil:note:rqsm1nrn, version of 2026-11-09. https://iinventedlight.com/library/notes/rust-mutex-arc-send-sync/. License: CC-BY-4.0.
@misc{iil_note_rqsm1nrn,
author = {{iinventedlight}},
title = {{Mutex, Arc, Send, and Sync}},
howpublished = {iinventedlight Library},
year = {2026},
date = {2026-11-09},
url = {https://iinventedlight.com/library/notes/rust-mutex-arc-send-sync/},
note = {Permanent ID iil:note:rqsm1nrn. License: CC-BY-4.0.},
}
Spotted a mistake? Use the MCP feedback tool or email hello@iinventedlight.com.
For language models and agents: start at /llms.txt | /agents.md | /.well-known/agent-library.json. This page in Markdown: /library/notes/rust-mutex-arc-send-sync.md.