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 } 18 .broken{ 19 stroke-dasharray: 8; 20 } 21 .filled{ 22 fill: black; 23 } 24 .bg_filled{ 25 fill: white; 26 } 27 .nofill{ 28 fill: white; 29 } 30 31 text { 32 font-family: monospace; 33 font-size: 14px; 34 } 35 36 .end_marked_arrow{ 37 marker-end: url(#arrow); 38 } 39 .start_marked_arrow{ 40 marker-start: url(#arrow); 41 } 42 43 .end_marked_diamond{ 44 marker-end: url(#diamond); 45 } 46 .start_marked_diamond{ 47 marker-start: url(#diamond); 48 } 49 50 .end_marked_circle{ 51 marker-end: url(#circle); 52 } 53 .start_marked_circle{ 54 marker-start: url(#circle); 55 } 56 57 .end_marked_open_circle{ 58 marker-end: url(#open_circle); 59 } 60 .start_marked_open_circle{ 61 marker-start: url(#open_circle); 62 } 63 64 .end_marked_big_open_circle{ 65 marker-end: url(#big_open_circle); 66 } 67 .start_marked_big_open_circle{ 68 marker-start: url(#big_open_circle); 69 } 70 71 72 </style> 73 <defs> 74 <marker id="arrow" viewBox="-2 -2 8 8" refX="4" refY="2" markerWidth="7" markerHeight="7" orient="auto-start-reverse"> 75 <polygon points="0,0 0,4 4,2 0,0"></polygon> 76 </marker> 77 <marker id="diamond" viewBox="-2 -2 8 8" refX="4" refY="2" markerWidth="7" markerHeight="7" orient="auto-start-reverse"> 78 <polygon points="0,2 2,0 4,2 2,4 0,2"></polygon> 79 </marker> 80 <marker id="circle" viewBox="0 0 8 8" refX="4" refY="4" markerWidth="7" markerHeight="7" orient="auto-start-reverse"> 81 <circle cx="4" cy="4" r="2" class="filled"></circle> 82 </marker> 83 <marker id="open_circle" viewBox="0 0 8 8" refX="4" refY="4" markerWidth="7" markerHeight="7" orient="auto-start-reverse"> 84 <circle cx="4" cy="4" r="2" class="bg_filled"></circle> 85 </marker> 86 <marker id="big_open_circle" viewBox="0 0 8 8" refX="4" refY="4" markerWidth="7" markerHeight="7" orient="auto-start-reverse"> 87 <circle cx="4" cy="4" r="3" class="bg_filled"></circle> 88 </marker> 89 </defs> 90 <rect class="backdrop" x="0" y="0" width="696" height="224"></rect> 91 <rect x="148" y="168" width="136" height="32" class="solid nofill" rx="4"></rect> 92 <text x="162" y="188" >Rust bindings</text> 93 <rect x="412" y="168" width="128" height="32" class="solid nofill" rx="4"></rect> 94 <text x="426" y="188" >C++ bindings</text> 95 <text x="266" y="28" >#[cxx::bridge]</text> 96 <text x="394" y="28" >mod</text> 97 <text x="250" y="44" >description</text> 98 <text x="346" y="44" >of</text> 99 <text x="370" y="44" >boundary</text> 100 <line x1="220" y1="120" x2="220" y2="160" class="solid end_marked_arrow"></line> 101 <line x1="476" y1="120" x2="476" y2="160" class="solid end_marked_arrow"></line> 102 <text x="74" y="140" >Safe</text> 103 <text x="34" y="156" >straightforward</text> 104 <text x="530" y="156" >Straightforward</text> 105 <polygon points="48,180 40,184 48,188" class="filled"></polygon> 106 <line x1="48" y1="184" x2="144" y2="184" class="solid end_marked_arrow"></line> 107 <polygon points="296,180 288,184 296,188" class="filled"></polygon> 108 <line x1="296" y1="184" x2="408" y2="184" class="broken end_marked_arrow"></line> 109 <polygon points="552,180 544,184 552,188" class="filled"></polygon> 110 <line x1="552" y1="184" x2="648" y2="184" class="solid end_marked_arrow"></line> 111 <text x="2" y="188" >Rust</text> 112 <text x="2" y="204" >code</text> 113 <text x="658" y="204" >code</text> 114 <text x="202" y="108" >Macro expansion</text> 115 <text x="370" y="108" >Code generation</text> 116 <text x="58" y="172" >Rust APIs</text> 117 <text x="298" y="172" >Hidden C ABI</text> 118 <text x="562" y="172" >C++ APIs</text> 119 <text x="658" y="188" >C++</text> 120 <g> 121 <path d="M 228,8 A 8,8 0,0,0 220,16" class="nofill"></path> 122 <line x1="228" y1="8" x2="468" y2="8" class="solid"></line> 123 <path d="M 468,8 A 8,8 0,0,1 476,16" class="nofill"></path> 124 <line x1="220" y1="16" x2="220" y2="48" class="solid"></line> 125 <line x1="476" y1="16" x2="476" y2="48" class="solid"></line> 126 <path d="M 220,48 A 8,8 0,0,0 228,56" class="nofill"></path> 127 <line x1="228" y1="56" x2="468" y2="56" class="solid"></line> 128 <line x1="348" y1="56" x2="348" y2="120" class="solid"></line> 129 <path d="M 476,48 A 8,8 0,0,1 468,56" class="nofill"></path> 130 <line x1="220" y1="120" x2="476" y2="120" class="solid"></line> 131 </g> 132</svg> 133