1<svg xmlns="http://www.w3.org/2000/svg" width="696" height="224"> 2 <style>line, path, circle,rect,polygon { 3 stroke: black; 4 stroke-width: 2; 5 stroke-opacity: 1; 6 fill-opacity: 1; 7 stroke-linecap: round; 8 stroke-linejoin: miter; 9 } 10 11 text { 12 fill: black; 13 } 14 rect.backdrop{ 15 stroke: none; 16 fill: white; 17 fill-opacity: 0; 18 } 19 .broken{ 20 stroke-dasharray: 8; 21 } 22 .filled{ 23 fill: black; 24 } 25 .bg_filled{ 26 fill: white; 27 } 28 .nofill{ 29 fill: white; 30 fill-opacity: 0; 31 } 32 33 text { 34 font-family: monospace; 35 font-size: 14px; 36 } 37 </style> 38 <defs> 39 <marker id="arrow" viewBox="-2 -2 8 8" refX="4" refY="2" markerWidth="7" markerHeight="7" orient="auto-start-reverse"> 40 <polygon points="0,0 0,4 4,2 0,0"></polygon> 41 </marker> 42 <marker id="diamond" viewBox="-2 -2 8 8" refX="4" refY="2" markerWidth="7" markerHeight="7" orient="auto-start-reverse"> 43 <polygon points="0,2 2,0 4,2 2,4 0,2"></polygon> 44 </marker> 45 <marker id="circle" viewBox="0 0 8 8" refX="4" refY="4" markerWidth="7" markerHeight="7" orient="auto-start-reverse"> 46 <circle cx="4" cy="4" r="2" class="filled"></circle> 47 </marker> 48 <marker id="open_circle" viewBox="0 0 8 8" refX="4" refY="4" markerWidth="7" markerHeight="7" orient="auto-start-reverse"> 49 <circle cx="4" cy="4" r="2" class="bg_filled"></circle> 50 </marker> 51 <marker id="big_open_circle" viewBox="0 0 8 8" refX="4" refY="4" markerWidth="7" markerHeight="7" orient="auto-start-reverse"> 52 <circle cx="4" cy="4" r="3" class="bg_filled"></circle> 53 </marker> 54 </defs> 55 <rect class="backdrop" x="0" y="0" width="696" height="224"></rect> 56 <rect x="148" y="168" width="136" height="32" class="solid nofill" rx="4"></rect> 57 <text x="162" y="188" >Rust bindings</text> 58 <rect x="412" y="168" width="128" height="32" class="solid nofill" rx="4"></rect> 59 <text x="426" y="188" >C++ bindings</text> 60 <text x="272" y="28" >#[cxx::bridge] mod</text> 61 <text x="250" y="44" >description of boundary</text> 62 <line x1="220" y1="120" x2="220" y2="160" class="solid"></line> 63 <polygon points="216,156 224,156 220,164" class="filled"></polygon> 64 <line x1="476" y1="120" x2="476" y2="160" class="solid"></line> 65 <polygon points="472,156 480,156 476,164" class="filled"></polygon> 66 <text x="74" y="140" >Safe</text> 67 <text x="34" y="156" >straightforward</text> 68 <text x="530" y="156" >Straightforward</text> 69 <polygon points="48,180 40,184 48,188" class="filled"></polygon> 70 <line x1="48" y1="184" x2="144" y2="184" class="solid"></line> 71 <polygon points="136,180 144,184 136,188" class="filled"></polygon> 72 <polygon points="296,180 288,184 296,188" class="filled"></polygon> 73 <line x1="296" y1="184" x2="408" y2="184" class="broken"></line> 74 <polygon points="400,180 408,184 400,188" class="filled"></polygon> 75 <polygon points="552,180 544,184 552,188" class="filled"></polygon> 76 <line x1="552" y1="184" x2="648" y2="184" class="solid"></line> 77 <polygon points="644,180 652,184 644,188" class="filled"></polygon> 78 <text x="2" y="188" >Rust</text> 79 <text x="2" y="204" >code</text> 80 <text x="658" y="204" >code</text> 81 <text x="202" y="108" >Macro expansion</text> 82 <text x="370" y="108" >Code generation</text> 83 <text x="58" y="172" >Rust APIs</text> 84 <text x="298" y="172" >Hidden C ABI</text> 85 <text x="562" y="172" >C++ APIs</text> 86 <text x="658" y="188" >C++</text> 87 <g> 88 <path d="M 228,8 A 8,8 0,0,0 220,16" class="nofill"></path> 89 <line x1="228" y1="8" x2="468" y2="8" class="solid"></line> 90 <path d="M 468,8 A 8,8 0,0,1 476,16" class="nofill"></path> 91 <line x1="220" y1="16" x2="220" y2="48" class="solid"></line> 92 <line x1="476" y1="16" x2="476" y2="48" class="solid"></line> 93 <path d="M 220,48 A 8,8 0,0,0 228,56" class="nofill"></path> 94 <line x1="228" y1="56" x2="468" y2="56" class="solid"></line> 95 <line x1="348" y1="56" x2="348" y2="120" class="solid"></line> 96 <path d="M 476,48 A 8,8 0,0,1 468,56" class="nofill"></path> 97 <line x1="220" y1="120" x2="476" y2="120" class="solid"></line> 98 </g> 99</svg> 100