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