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