Skip to content

Commit 9258adb

Browse files
committed
Fix Mermaid diagrams: replace \n with <br/> for v10+ compatibility
Mermaid v10+ renders \n as literal text in node labels. Replace all 152 occurrences across 28 files with <br/> which produces proper line breaks in the rendered diagrams.
1 parent 3376871 commit 9258adb

27 files changed

Lines changed: 124 additions & 124 deletions

csharp-book/src/ch05-data-structures-and-collections.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,12 +292,12 @@ Structs in Rust are similar to classes in C#, but with some key differences arou
292292
```mermaid
293293
graph TD
294294
subgraph "C# Class (Heap)"
295-
CObj["Object Header\n+ vtable ptr"] --> CFields["Name: string ref\nAge: int\nHobbies: List ref"]
295+
CObj["Object Header<br/>+ vtable ptr"] --> CFields["Name: string ref<br/>Age: int<br/>Hobbies: List ref"]
296296
CFields --> CHeap1["#quot;Alice#quot; on heap"]
297297
CFields --> CHeap2["List&lt;string&gt; on heap"]
298298
end
299299
subgraph "Rust Struct (Stack)"
300-
RFields["name: String\n ptr | len | cap\nage: i32\nhobbies: Vec\n ptr | len | cap"]
300+
RFields["name: String<br/> ptr | len | cap<br/>age: i32<br/>hobbies: Vec<br/> ptr | len | cap"]
301301
RFields --> RHeap1["#quot;Alice#quot; heap buffer"]
302302
RFields --> RHeap2["Vec heap buffer"]
303303
end

csharp-book/src/ch14-unsafe-rust-and-ffi.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,12 @@ Rust can expose C-compatible functions that C# can call via P/Invoke.
104104
```mermaid
105105
graph LR
106106
subgraph "C# Process"
107-
CS["C# Code"] -->|"P/Invoke"| MI["Marshal Layer\nUTF-16 → UTF-8\nstruct layout"]
107+
CS["C# Code"] -->|"P/Invoke"| MI["Marshal Layer<br/>UTF-16 → UTF-8<br/>struct layout"]
108108
end
109109
MI -->|"C ABI call"| FFI["FFI Boundary"]
110110
subgraph "Rust cdylib (.so / .dll)"
111-
FFI --> RF["extern \"C\" fn\n#[no_mangle]"]
112-
RF --> Safe["Safe Rust\ninternals"]
111+
FFI --> RF["extern \"C\" fn<br/>#[no_mangle]"]
112+
RF --> Safe["Safe Rust<br/>internals"]
113113
end
114114
115115
style FFI fill:#fff9c4,color:#000

csharp-book/src/ch17-capstone-project.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ This capstone pulls together concepts from every part of the book. You'll build
1212

1313
```mermaid
1414
graph TD
15-
CLI["main.rs\nclap CLI parser"] --> Client["client.rs\nreqwest + tokio"]
15+
CLI["main.rs<br/>clap CLI parser"] --> Client["client.rs<br/>reqwest + tokio"]
1616
Client -->|"HTTP GET"| API["Weather API"]
17-
Client -->|"JSON → struct"| Model["weather.rs\nserde Deserialize"]
18-
Model --> Display["display.rs\nfmt::Display"]
19-
CLI --> Err["error.rs\nthiserror"]
17+
Client -->|"JSON → struct"| Model["weather.rs<br/>serde Deserialize"]
18+
Model --> Display["display.rs<br/>fmt::Display"]
19+
CLI --> Err["error.rs<br/>thiserror"]
2020
Client --> Err
2121
2222
style CLI fill:#bbdefb,color:#000

engineering-book/src/ch01-build-scripts-buildrs-in-depth.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -544,13 +544,13 @@ flowchart TD
544544
START["Need compile-time work?"] -->|No| SKIP["No build.rs needed"]
545545
START -->|Yes| WHAT{"What kind?"}
546546
547-
WHAT -->|"Embed metadata"| P1["Pattern 1\nCompile-Time Constants"]
548-
WHAT -->|"Compile C/C++"| P2["Pattern 2\ncc crate"]
549-
WHAT -->|"Code generation"| P3["Pattern 3\nprost-build / tonic-build"]
550-
WHAT -->|"Link system lib"| P4["Pattern 4\npkg-config"]
551-
WHAT -->|"Detect features"| P5["Pattern 5\ncfg flags"]
547+
WHAT -->|"Embed metadata"| P1["Pattern 1<br/>Compile-Time Constants"]
548+
WHAT -->|"Compile C/C++"| P2["Pattern 2<br/>cc crate"]
549+
WHAT -->|"Code generation"| P3["Pattern 3<br/>prost-build / tonic-build"]
550+
WHAT -->|"Link system lib"| P4["Pattern 4<br/>pkg-config"]
551+
WHAT -->|"Detect features"| P5["Pattern 5<br/>cfg flags"]
552552
553-
P1 --> RERUN["Always emit\ncargo::rerun-if-changed"]
553+
P1 --> RERUN["Always emit<br/>cargo::rerun-if-changed"]
554554
P2 --> RERUN
555555
P3 --> RERUN
556556
P4 --> RERUN

engineering-book/src/ch02-cross-compilation-one-source-many-target.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -417,17 +417,17 @@ linker = "musl-gcc"
417417
flowchart TD
418418
START["Need to cross-compile?"] --> STATIC{"Static binary?"}
419419
420-
STATIC -->|Yes| MUSL["musl target\n--target x86_64-unknown-linux-musl"]
420+
STATIC -->|Yes| MUSL["musl target<br/>--target x86_64-unknown-linux-musl"]
421421
STATIC -->|No| GLIBC{"Need old glibc?"}
422422
423-
GLIBC -->|Yes| ZIG["cargo-zigbuild\n--target x86_64-unknown-linux-gnu.2.17"]
423+
GLIBC -->|Yes| ZIG["cargo-zigbuild<br/>--target x86_64-unknown-linux-gnu.2.17"]
424424
GLIBC -->|No| ARCH{"Target arch?"}
425425
426-
ARCH -->|"Same arch"| NATIVE["Native toolchain\nrustup target add + linker"]
426+
ARCH -->|"Same arch"| NATIVE["Native toolchain<br/>rustup target add + linker"]
427427
ARCH -->|"ARM/other"| DOCKER{"Docker available?"}
428428
429-
DOCKER -->|Yes| CROSS["cross build\nDocker-based, zero setup"]
430-
DOCKER -->|No| MANUAL["Manual sysroot\napt install gcc-aarch64-linux-gnu"]
429+
DOCKER -->|Yes| CROSS["cross build<br/>Docker-based, zero setup"]
430+
DOCKER -->|No| MANUAL["Manual sysroot<br/>apt install gcc-aarch64-linux-gnu"]
431431
432432
style MUSL fill:#91e5a3,color:#000
433433
style ZIG fill:#91e5a3,color:#000

engineering-book/src/ch03-benchmarking-measuring-what-matters.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -440,13 +440,13 @@ criterion_main!(benches);
440440
flowchart TD
441441
START["Want to measure performance?"] --> WHAT{"What level?"}
442442
443-
WHAT -->|"Single function"| CRITERION["Criterion.rs\nStatistical, regression detection"]
444-
WHAT -->|"Quick function check"| DIVAN["Divan\nLighter, attribute macros"]
445-
WHAT -->|"Whole binary"| HYPERFINE["hyperfine\nEnd-to-end, wall-clock"]
446-
WHAT -->|"Find hot spots"| PERF["perf + flamegraph\nCPU sampling profiler"]
443+
WHAT -->|"Single function"| CRITERION["Criterion.rs<br/>Statistical, regression detection"]
444+
WHAT -->|"Quick function check"| DIVAN["Divan<br/>Lighter, attribute macros"]
445+
WHAT -->|"Whole binary"| HYPERFINE["hyperfine<br/>End-to-end, wall-clock"]
446+
WHAT -->|"Find hot spots"| PERF["perf + flamegraph<br/>CPU sampling profiler"]
447447
448-
CRITERION --> CI_BENCH["Continuous benchmarking\nin GitHub Actions"]
449-
PERF --> OPTIMIZE["Profile-Guided\nOptimization (PGO)"]
448+
CRITERION --> CI_BENCH["Continuous benchmarking<br/>in GitHub Actions"]
449+
PERF --> OPTIMIZE["Profile-Guided<br/>Optimization (PGO)"]
450450
451451
style CRITERION fill:#91e5a3,color:#000
452452
style DIVAN fill:#91e5a3,color:#000

engineering-book/src/ch04-code-coverage-seeing-what-tests-miss.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -381,11 +381,11 @@ done
381381
flowchart TD
382382
START["Need code coverage?"] --> ACCURACY{"Priority?"}
383383
384-
ACCURACY -->|"Most accurate"| LLVM["cargo-llvm-cov\nSource-based, compiler-native"]
385-
ACCURACY -->|"Quick check"| TARP["cargo-tarpaulin\nLinux only, fast"]
386-
ACCURACY -->|"Multi-run aggregate"| GRCOV["grcov\nMozilla, combines profiles"]
384+
ACCURACY -->|"Most accurate"| LLVM["cargo-llvm-cov<br/>Source-based, compiler-native"]
385+
ACCURACY -->|"Quick check"| TARP["cargo-tarpaulin<br/>Linux only, fast"]
386+
ACCURACY -->|"Multi-run aggregate"| GRCOV["grcov<br/>Mozilla, combines profiles"]
387387
388-
LLVM --> CI_GATE["CI coverage gate\n--fail-under-lines 80"]
388+
LLVM --> CI_GATE["CI coverage gate<br/>--fail-under-lines 80"]
389389
TARP --> CI_GATE
390390
391391
CI_GATE --> UPLOAD{"Upload to?"}

engineering-book/src/ch05-miri-valgrind-and-sanitizers-verifying-u.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -575,15 +575,15 @@ Least overhead Most thorough
575575

576576
```mermaid
577577
flowchart TD
578-
START["Have unsafe code?"] -->|No| SAFE["Safe Rust — no\nverification needed"]
578+
START["Have unsafe code?"] -->|No| SAFE["Safe Rust — no<br/>verification needed"]
579579
START -->|Yes| KIND{"What kind?"}
580580
581-
KIND -->|"Pure Rust unsafe"| MIRI["Miri\nMIR interpreter\ncatches aliasing, UB, leaks"]
582-
KIND -->|"FFI / C interop"| VALGRIND["Valgrind memcheck\nor ASan"]
581+
KIND -->|"Pure Rust unsafe"| MIRI["Miri<br/>MIR interpreter<br/>catches aliasing, UB, leaks"]
582+
KIND -->|"FFI / C interop"| VALGRIND["Valgrind memcheck<br/>or ASan"]
583583
KIND -->|"Concurrent unsafe"| CONC{"Lock-free?"}
584584
585-
CONC -->|"Atomics/lock-free"| LOOM["loom\nModel checker for atomics"]
586-
CONC -->|"Mutex/shared state"| TSAN["TSan or\nMiri -Zmiri-check-number-validity"]
585+
CONC -->|"Atomics/lock-free"| LOOM["loom<br/>Model checker for atomics"]
586+
CONC -->|"Mutex/shared state"| TSAN["TSan or<br/>Miri -Zmiri-check-number-validity"]
587587
588588
MIRI --> CI_MIRI["CI: cargo +nightly miri test"]
589589
VALGRIND --> CI_VALGRIND["CI: valgrind --leak-check=full"]

engineering-book/src/ch06-dependency-management-and-supply-chain-s.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -317,10 +317,10 @@ unknown-git = "deny"
317317

318318
```mermaid
319319
flowchart LR
320-
PR["Pull Request"] --> AUDIT["cargo audit\nKnown CVEs"]
321-
AUDIT --> DENY["cargo deny check\nLicenses + Bans + Sources"]
322-
DENY --> OUTDATED["cargo outdated\nWeekly schedule"]
323-
OUTDATED --> SEMVER["cargo semver-checks\nLibrary crates only"]
320+
PR["Pull Request"] --> AUDIT["cargo audit<br/>Known CVEs"]
321+
AUDIT --> DENY["cargo deny check<br/>Licenses + Bans + Sources"]
322+
DENY --> OUTDATED["cargo outdated<br/>Weekly schedule"]
323+
OUTDATED --> SEMVER["cargo semver-checks<br/>Library crates only"]
324324
325325
AUDIT -->|"Fail"| BLOCK["❌ Block merge"]
326326
DENY -->|"Fail"| BLOCK

engineering-book/src/ch07-release-profiles-and-binary-size.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -252,13 +252,13 @@ cargo shear --fix
252252
```mermaid
253253
flowchart TD
254254
START["Binary too large?"] --> STRIP{"strip = true?"}
255-
STRIP -->|"No"| DO_STRIP["Add strip = true\n-50 to -70% size"]
255+
STRIP -->|"No"| DO_STRIP["Add strip = true<br/>-50 to -70% size"]
256256
STRIP -->|"Yes"| LTO{"LTO enabled?"}
257-
LTO -->|"No"| DO_LTO["Add lto = true\ncodegen-units = 1"]
258-
LTO -->|"Yes"| BLOAT["Run cargo-bloat\n--crates"]
257+
LTO -->|"No"| DO_LTO["Add lto = true<br/>codegen-units = 1"]
258+
LTO -->|"Yes"| BLOAT["Run cargo-bloat<br/>--crates"]
259259
BLOAT --> BIG_DEP{"Large dependency?"}
260-
BIG_DEP -->|"Yes"| REPLACE["Replace with lighter\nalternative or disable\ndefault features"]
261-
BIG_DEP -->|"No"| UDEPS["cargo-udeps\nRemove unused deps"]
260+
BIG_DEP -->|"Yes"| REPLACE["Replace with lighter<br/>alternative or disable<br/>default features"]
261+
BIG_DEP -->|"No"| UDEPS["cargo-udeps<br/>Remove unused deps"]
262262
UDEPS --> OPT_LEVEL{"Need smaller?"}
263263
OPT_LEVEL -->|"Yes"| SIZE_OPT["opt-level = 's' or 'z'"]
264264

0 commit comments

Comments
 (0)