cargo vs rustc
-
- $ cargo build -v
-
-
- #[no_mangle]
- pub fn add(a: u8, b: u8) -> u8 {
- a.wrapping_add(b)
- }
-
-
- %%{init: {'theme': 'dark', 'themeVariables': { 'darkMode': true, 'fontSize': '25px' }}}%%
- flowchart TB
- function --> return
- function --> params
- params --> a_def[a]
- params --> b_def[b]
- function --> body
- body --> cl["method call"]
- cl --> a_use[a]
- cl --> wrapping_add
- cl --> b_use[b]
-
-
+ pub fn add(a: u8, b: u8) -> u8 {
+ a.wrapping_add(b)
+ }
+
+ #[attr = MacroUse {arguments: UseAll}]
+ extern crate std;
+ #[prelude_import]
+ use std::prelude::rust_2024::*;
+ fn add(a: u8, b: u8) -> u8 { a.wrapping_add(b) }
+
+ MIR
quite big
+in C it's just a single file
+LLVM is single-threaded
+rustc: hi LLVM, look we are like a C file, now be fast
+~1-256 depending on size and configuration (βοΈ)
+
+ %%{init: {'theme': 'dark', 'themeVariables': { 'darkMode': true, 'fontSize': '25px' }}}%%
+ flowchart LR
+ crate
+
+ crate --> cgu1["Codegen-Unit 1"]
+ crate --> cgu2["Codegen-Unit 2"]
+ crate --> cgu3["Codegen-Unit 3"]
+ crate --> cgu4["Codegen-Unit 4"]
+
+
@@ -267,6 +273,13 @@ fn main() { math::add() }