cargo vs rustc
-
+ $ cargo build -v
+
+
+ #[no_mangle]
+ pub fn add(a: u8, b: u8) -> u8 {
+ a.wrapping_add(b)
+ }
+
+
- 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]
+
+
- #[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"]
-
-
@@ -273,14 +267,6 @@ fn main() { math::add() }