aboutsummaryrefslogtreecommitdiffstats
path: root/epubs/zig-0.2.0.epub
blob: 34f1342b0efae22f1800b0b6f6c11246de4fce27 (plain)
ofshex dumpascii
0000 50 4b 03 04 14 00 00 00 00 00 00 00 21 52 6f 61 ab 2c 14 00 00 00 14 00 00 00 08 00 00 00 6d 69 PK..........!Roa.,............mi
0020 6d 65 74 79 70 65 61 70 70 6c 69 63 61 74 69 6f 6e 2f 65 70 75 62 2b 7a 69 70 50 4b 03 04 14 00 metypeapplication/epub+zipPK....
0040 00 00 00 00 00 00 21 52 6f 92 d0 0a fc 00 00 00 fc 00 00 00 16 00 00 00 4d 45 54 41 2d 49 4e 46 ......!Ro...............META-INF
0060 2f 63 6f 6e 74 61 69 6e 65 72 2e 78 6d 6c 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 /container.xml<?xml.version="1.0
0080 22 20 65 6e 63 6f 64 69 6e 67 3d 22 75 74 66 2d 38 22 3f 3e 0a 3c 63 6f 6e 74 61 69 6e 65 72 20 ".encoding="utf-8"?>.<container.
00a0 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 78 6d 6c 6e 73 3d 22 75 72 6e 3a 6f 61 73 69 73 3a 6e version="1.0".xmlns="urn:oasis:n
00c0 61 6d 65 73 3a 74 63 3a 6f 70 65 6e 64 6f 63 75 6d 65 6e 74 3a 78 6d 6c 6e 73 3a 63 6f 6e 74 61 ames:tc:opendocument:xmlns:conta
00e0 69 6e 65 72 22 3e 0a 20 20 3c 72 6f 6f 74 66 69 6c 65 73 3e 0a 20 20 20 20 3c 72 6f 6f 74 66 69 iner">...<rootfiles>.....<rootfi
0100 6c 65 20 66 75 6c 6c 2d 70 61 74 68 3d 22 4f 45 42 50 53 2f 63 6f 6e 74 65 6e 74 2e 6f 70 66 22 le.full-path="OEBPS/content.opf"
0120 20 6d 65 64 69 61 2d 74 79 70 65 3d 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6f 65 62 70 73 2d 70 .media-type="application/oebps-p
0140 61 63 6b 61 67 65 2b 78 6d 6c 22 2f 3e 0a 20 20 3c 2f 72 6f 6f 74 66 69 6c 65 73 3e 0a 3c 2f 63 ackage+xml"/>...</rootfiles>.</c
0160 6f 6e 74 61 69 6e 65 72 3e 0a 50 4b 03 04 14 00 00 00 00 00 00 00 21 52 6a 86 4f 68 a7 02 00 00 ontainer>.PK..........!Rj.Oh....
0180 a7 02 00 00 11 00 00 00 4f 45 42 50 53 2f 63 6f 6e 74 65 6e 74 2e 6f 70 66 3c 3f 78 6d 6c 20 76 ........OEBPS/content.opf<?xml.v
01a0 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 65 6e 63 6f 64 69 6e 67 3d 22 75 74 66 2d 38 22 3f 3e 0a ersion="1.0".encoding="utf-8"?>.
01c0 3c 70 61 63 6b 61 67 65 20 78 6d 6c 6e 73 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 69 64 70 66 2e <package.xmlns="http://www.idpf.
01e0 6f 72 67 2f 32 30 30 37 2f 6f 70 66 22 20 76 65 72 73 69 6f 6e 3d 22 33 2e 30 22 20 75 6e 69 71 org/2007/opf".version="3.0".uniq
0200 75 65 2d 69 64 65 6e 74 69 66 69 65 72 3d 22 70 75 62 2d 69 64 22 3e 0a 20 20 3c 6d 65 74 61 64 ue-identifier="pub-id">...<metad
0220 61 74 61 20 78 6d 6c 6e 73 3a 64 63 3d 22 68 74 74 70 3a 2f 2f 70 75 72 6c 2e 6f 72 67 2f 64 63 ata.xmlns:dc="http://purl.org/dc
0240 2f 65 6c 65 6d 65 6e 74 73 2f 31 2e 31 2f 22 3e 0a 20 20 20 20 3c 64 63 3a 69 64 65 6e 74 69 66 /elements/1.1/">.....<dc:identif
0260 69 65 72 20 69 64 3d 22 70 75 62 2d 69 64 22 3e 75 72 6e 3a 7a 69 67 6c 61 6e 67 2d 64 6f 63 73 ier.id="pub-id">urn:ziglang-docs
0280 3a 30 2e 32 2e 30 3c 2f 64 63 3a 69 64 65 6e 74 69 66 69 65 72 3e 0a 20 20 20 20 3c 64 63 3a 74 :0.2.0</dc:identifier>.....<dc:t
02a0 69 74 6c 65 3e 5a 69 67 20 4c 61 6e 67 75 61 67 65 20 52 65 66 65 72 65 6e 63 65 20 28 30 2e 32 itle>Zig.Language.Reference.(0.2
02c0 2e 30 29 3c 2f 64 63 3a 74 69 74 6c 65 3e 0a 20 20 20 20 3c 64 63 3a 6c 61 6e 67 75 61 67 65 3e .0)</dc:title>.....<dc:language>
02e0 65 6e 3c 2f 64 63 3a 6c 61 6e 67 75 61 67 65 3e 0a 20 20 20 20 3c 6d 65 74 61 20 70 72 6f 70 65 en</dc:language>.....<meta.prope
0300 72 74 79 3d 22 64 63 74 65 72 6d 73 3a 6d 6f 64 69 66 69 65 64 22 3e 32 30 32 31 2d 30 31 2d 30 rty="dcterms:modified">2021-01-0
0320 31 54 30 30 3a 30 30 3a 30 30 5a 3c 2f 6d 65 74 61 3e 0a 20 20 3c 2f 6d 65 74 61 64 61 74 61 3e 1T00:00:00Z</meta>...</metadata>
0340 0a 20 20 3c 6d 61 6e 69 66 65 73 74 3e 0a 20 20 20 20 3c 69 74 65 6d 20 69 64 3d 22 6e 61 76 22 ...<manifest>.....<item.id="nav"
0360 20 68 72 65 66 3d 22 6e 61 76 2e 78 68 74 6d 6c 22 20 6d 65 64 69 61 2d 74 79 70 65 3d 22 61 70 .href="nav.xhtml".media-type="ap
0380 70 6c 69 63 61 74 69 6f 6e 2f 78 68 74 6d 6c 2b 78 6d 6c 22 20 70 72 6f 70 65 72 74 69 65 73 3d plication/xhtml+xml".properties=
03a0 22 6e 61 76 22 2f 3e 0a 20 20 20 20 3c 69 74 65 6d 20 69 64 3d 22 69 6e 64 65 78 22 20 68 72 65 "nav"/>.....<item.id="index".hre
03c0 66 3d 22 69 6e 64 65 78 2e 78 68 74 6d 6c 22 20 6d 65 64 69 61 2d 74 79 70 65 3d 22 61 70 70 6c f="index.xhtml".media-type="appl
03e0 69 63 61 74 69 6f 6e 2f 78 68 74 6d 6c 2b 78 6d 6c 22 2f 3e 0a 20 20 3c 2f 6d 61 6e 69 66 65 73 ication/xhtml+xml"/>...</manifes
0400 74 3e 0a 20 20 3c 73 70 69 6e 65 3e 0a 20 20 20 20 3c 69 74 65 6d 72 65 66 20 69 64 72 65 66 3d t>...<spine>.....<itemref.idref=
0420 22 69 6e 64 65 78 22 2f 3e 0a 20 20 3c 2f 73 70 69 6e 65 3e 0a 3c 2f 70 61 63 6b 61 67 65 3e 0a "index"/>...</spine>.</package>.
0440 50 4b 03 04 14 00 00 00 00 00 00 00 21 52 52 1f 07 5d 86 01 00 00 86 01 00 00 0f 00 00 00 4f 45 PK..........!RR..]............OE
0460 42 50 53 2f 6e 61 76 2e 78 68 74 6d 6c 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 BPS/nav.xhtml<?xml.version="1.0"
0480 20 65 6e 63 6f 64 69 6e 67 3d 22 75 74 66 2d 38 22 3f 3e 0a 3c 68 74 6d 6c 20 78 6d 6c 6e 73 3d .encoding="utf-8"?>.<html.xmlns=
04a0 22 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 31 39 39 39 2f 78 68 74 6d 6c 22 20 78 "http://www.w3.org/1999/xhtml".x
04c0 6d 6c 6e 73 3a 65 70 75 62 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 69 64 70 66 2e 6f 72 67 2f 32 mlns:epub="http://www.idpf.org/2
04e0 30 30 37 2f 6f 70 73 22 20 6c 61 6e 67 3d 22 65 6e 22 3e 0a 20 20 3c 68 65 61 64 3e 3c 74 69 74 007/ops".lang="en">...<head><tit
0500 6c 65 3e 5a 69 67 20 4c 61 6e 67 75 61 67 65 20 52 65 66 65 72 65 6e 63 65 20 28 30 2e 32 2e 30 le>Zig.Language.Reference.(0.2.0
0520 29 3c 2f 74 69 74 6c 65 3e 3c 2f 68 65 61 64 3e 0a 20 20 3c 62 6f 64 79 3e 0a 20 20 20 20 3c 6e )</title></head>...<body>.....<n
0540 61 76 20 65 70 75 62 3a 74 79 70 65 3d 22 74 6f 63 22 20 69 64 3d 22 74 6f 63 22 3e 0a 20 20 20 av.epub:type="toc".id="toc">....
0560 20 20 20 3c 68 31 3e 43 6f 6e 74 65 6e 74 73 3c 2f 68 31 3e 0a 20 20 20 20 20 20 3c 6f 6c 3e 0a ...<h1>Contents</h1>.......<ol>.
0580 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 69 6e 64 65 78 2e 78 68 74 6d 6c ........<li><a.href="index.xhtml
05a0 22 3e 5a 69 67 20 4c 61 6e 67 75 61 67 65 20 52 65 66 65 72 65 6e 63 65 20 28 30 2e 32 2e 30 29 ">Zig.Language.Reference.(0.2.0)
05c0 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 6f 6c 3e 0a 20 20 20 20 3c 2f 6e 61 76 3e </a></li>.......</ol>.....</nav>
05e0 0a 20 20 3c 2f 62 6f 64 79 3e 0a 3c 2f 68 74 6d 6c 3e 0a 50 4b 03 04 14 00 00 00 00 00 00 00 21 ...</body>.</html>.PK..........!
0600 52 29 ef 77 42 03 9c 03 00 03 9c 03 00 11 00 00 00 4f 45 42 50 53 2f 69 6e 64 65 78 2e 78 68 74 R).wB............OEBPS/index.xht
0620 6d 6c 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 65 6e 63 6f 64 69 6e 67 3d 22 ml<?xml.version="1.0".encoding="
0640 75 74 66 2d 38 22 3f 3e 0a 0a 3c 68 74 6d 6c 20 78 6d 6c 6e 73 3d 22 68 74 74 70 3a 2f 2f 77 77 utf-8"?>..<html.xmlns="http://ww
0660 77 2e 77 33 2e 6f 72 67 2f 31 39 39 39 2f 78 68 74 6d 6c 22 3e 0a 20 20 3c 68 65 61 64 3e 0a 20 w.w3.org/1999/xhtml">...<head>..
0680 20 20 20 3c 6d 65 74 61 20 63 68 61 72 73 65 74 3d 22 75 74 66 2d 38 22 2f 3e 0a 20 20 20 20 3c ...<meta.charset="utf-8"/>.....<
06a0 74 69 74 6c 65 3e 44 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 2d 20 54 68 65 20 5a 69 67 20 50 72 title>Documentation.-.The.Zig.Pr
06c0 6f 67 72 61 6d 6d 69 6e 67 20 4c 61 6e 67 75 61 67 65 3c 2f 74 69 74 6c 65 3e 0a 20 20 20 20 3c ogramming.Language</title>.....<
06e0 73 74 79 6c 65 20 74 79 70 65 3d 22 74 65 78 74 2f 63 73 73 22 3e 0a 2e 68 6c 6a 73 7b 64 69 73 style.type="text/css">..hljs{dis
0700 70 6c 61 79 3a 62 6c 6f 63 6b 3b 6f 76 65 72 66 6c 6f 77 2d 78 3a 61 75 74 6f 3b 70 61 64 64 69 play:block;overflow-x:auto;paddi
0720 6e 67 3a 30 2e 35 65 6d 3b 63 6f 6c 6f 72 3a 23 33 33 33 3b 62 61 63 6b 67 72 6f 75 6e 64 3a 23 ng:0.5em;color:#333;background:#
0740 66 38 66 38 66 38 7d 2e 68 6c 6a 73 2d 63 6f 6d 6d 65 6e 74 2c 2e 68 6c 6a 73 2d 71 75 6f 74 65 f8f8f8}.hljs-comment,.hljs-quote
0760 7b 63 6f 6c 6f 72 3a 23 39 39 38 3b 66 6f 6e 74 2d 73 74 79 6c 65 3a 69 74 61 6c 69 63 7d 2e 68 {color:#998;font-style:italic}.h
0780 6c 6a 73 2d 6b 65 79 77 6f 72 64 2c 2e 68 6c 6a 73 2d 73 65 6c 65 63 74 6f 72 2d 74 61 67 2c 2e ljs-keyword,.hljs-selector-tag,.
07a0 68 6c 6a 73 2d 73 75 62 73 74 7b 63 6f 6c 6f 72 3a 23 33 33 33 3b 66 6f 6e 74 2d 77 65 69 67 68 hljs-subst{color:#333;font-weigh
07c0 74 3a 62 6f 6c 64 7d 2e 68 6c 6a 73 2d 6e 75 6d 62 65 72 2c 2e 68 6c 6a 73 2d 6c 69 74 65 72 61 t:bold}.hljs-number,.hljs-litera
07e0 6c 2c 2e 68 6c 6a 73 2d 76 61 72 69 61 62 6c 65 2c 2e 68 6c 6a 73 2d 74 65 6d 70 6c 61 74 65 2d l,.hljs-variable,.hljs-template-
0800 76 61 72 69 61 62 6c 65 2c 2e 68 6c 6a 73 2d 74 61 67 20 2e 68 6c 6a 73 2d 61 74 74 72 7b 63 6f variable,.hljs-tag..hljs-attr{co
0820 6c 6f 72 3a 23 30 30 38 30 38 30 7d 2e 68 6c 6a 73 2d 73 74 72 69 6e 67 2c 2e 68 6c 6a 73 2d 64 lor:#008080}.hljs-string,.hljs-d
0840 6f 63 74 61 67 7b 63 6f 6c 6f 72 3a 23 64 31 34 7d 2e 68 6c 6a 73 2d 74 69 74 6c 65 2c 2e 68 6c octag{color:#d14}.hljs-title,.hl
0860 6a 73 2d 73 65 63 74 69 6f 6e 2c 2e 68 6c 6a 73 2d 73 65 6c 65 63 74 6f 72 2d 69 64 7b 63 6f 6c js-section,.hljs-selector-id{col
0880 6f 72 3a 23 39 30 30 3b 66 6f 6e 74 2d 77 65 69 67 68 74 3a 62 6f 6c 64 7d 2e 68 6c 6a 73 2d 73 or:#900;font-weight:bold}.hljs-s
08a0 75 62 73 74 7b 66 6f 6e 74 2d 77 65 69 67 68 74 3a 6e 6f 72 6d 61 6c 7d 2e 68 6c 6a 73 2d 74 79 ubst{font-weight:normal}.hljs-ty
08c0 70 65 2c 2e 68 6c 6a 73 2d 63 6c 61 73 73 20 2e 68 6c 6a 73 2d 74 69 74 6c 65 7b 63 6f 6c 6f 72 pe,.hljs-class..hljs-title{color
08e0 3a 23 34 35 38 3b 66 6f 6e 74 2d 77 65 69 67 68 74 3a 62 6f 6c 64 7d 2e 68 6c 6a 73 2d 74 61 67 :#458;font-weight:bold}.hljs-tag
0900 2c 2e 68 6c 6a 73 2d 6e 61 6d 65 2c 2e 68 6c 6a 73 2d 61 74 74 72 69 62 75 74 65 7b 63 6f 6c 6f ,.hljs-name,.hljs-attribute{colo
0920 72 3a 23 30 30 30 30 38 30 3b 66 6f 6e 74 2d 77 65 69 67 68 74 3a 6e 6f 72 6d 61 6c 7d 2e 68 6c r:#000080;font-weight:normal}.hl
0940 6a 73 2d 72 65 67 65 78 70 2c 2e 68 6c 6a 73 2d 6c 69 6e 6b 7b 63 6f 6c 6f 72 3a 23 30 30 39 39 js-regexp,.hljs-link{color:#0099
0960 32 36 7d 2e 68 6c 6a 73 2d 73 79 6d 62 6f 6c 2c 2e 68 6c 6a 73 2d 62 75 6c 6c 65 74 7b 63 6f 6c 26}.hljs-symbol,.hljs-bullet{col
0980 6f 72 3a 23 39 39 30 30 37 33 7d 2e 68 6c 6a 73 2d 62 75 69 6c 74 5f 69 6e 2c 2e 68 6c 6a 73 2d or:#990073}.hljs-built_in,.hljs-
09a0 62 75 69 6c 74 69 6e 2d 6e 61 6d 65 7b 63 6f 6c 6f 72 3a 23 30 30 38 36 62 33 7d 2e 68 6c 6a 73 builtin-name{color:#0086b3}.hljs
09c0 2d 6d 65 74 61 7b 63 6f 6c 6f 72 3a 23 39 39 39 3b 66 6f 6e 74 2d 77 65 69 67 68 74 3a 62 6f 6c -meta{color:#999;font-weight:bol
09e0 64 7d 2e 68 6c 6a 73 2d 64 65 6c 65 74 69 6f 6e 7b 62 61 63 6b 67 72 6f 75 6e 64 3a 23 66 64 64 d}.hljs-deletion{background:#fdd
0a00 7d 2e 68 6c 6a 73 2d 61 64 64 69 74 69 6f 6e 7b 62 61 63 6b 67 72 6f 75 6e 64 3a 23 64 66 64 7d }.hljs-addition{background:#dfd}
0a20 2e 68 6c 6a 73 2d 65 6d 70 68 61 73 69 73 7b 66 6f 6e 74 2d 73 74 79 6c 65 3a 69 74 61 6c 69 63 .hljs-emphasis{font-style:italic
0a40 7d 2e 68 6c 6a 73 2d 73 74 72 6f 6e 67 7b 66 6f 6e 74 2d 77 65 69 67 68 74 3a 62 6f 6c 64 7d 0a }.hljs-strong{font-weight:bold}.
0a60 20 20 20 20 3c 2f 73 74 79 6c 65 3e 0a 20 20 20 20 3c 73 74 79 6c 65 20 74 79 70 65 3d 22 74 65 ....</style>.....<style.type="te
0a80 78 74 2f 63 73 73 22 3e 0a 20 20 20 20 20 20 74 61 62 6c 65 2c 20 74 68 2c 20 74 64 20 7b 0a 20 xt/css">.......table,.th,.td.{..
0aa0 20 20 20 20 20 20 20 62 6f 72 64 65 72 2d 63 6f 6c 6c 61 70 73 65 3a 20 63 6f 6c 6c 61 70 73 65 .......border-collapse:.collapse
0ac0 3b 0a 20 20 20 20 20 20 20 20 62 6f 72 64 65 72 3a 20 31 70 78 20 73 6f 6c 69 64 20 67 72 65 79 ;.........border:.1px.solid.grey
0ae0 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 74 68 2c 20 74 64 20 7b 0a 20 20 20 20 20 20 20 ;.......}.......th,.td.{........
0b00 20 70 61 64 64 69 6e 67 3a 20 30 2e 31 65 6d 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 2e .padding:.0.1em;.......}........
0b20 74 30 5f 31 2c 20 2e 74 33 37 2c 20 2e 74 33 37 5f 31 20 7b 0a 20 20 20 20 20 20 20 20 66 6f 6e t0_1,..t37,..t37_1.{.........fon
0b40 74 2d 77 65 69 67 68 74 3a 20 62 6f 6c 64 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 2e 74 t-weight:.bold;.......}........t
0b60 32 5f 30 20 7b 0a 20 20 20 20 20 20 20 20 63 6f 6c 6f 72 3a 20 67 72 65 79 3b 0a 20 20 20 20 20 2_0.{.........color:.grey;......
0b80 20 7d 0a 20 20 20 20 20 20 2e 74 33 31 5f 31 20 7b 0a 20 20 20 20 20 20 20 20 63 6f 6c 6f 72 3a .}........t31_1.{.........color:
0ba0 20 72 65 64 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 2e 74 33 32 5f 31 20 7b 0a 20 20 20 .red;.......}........t32_1.{....
0bc0 20 20 20 20 20 63 6f 6c 6f 72 3a 20 67 72 65 65 6e 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 .....color:.green;.......}......
0be0 20 2e 74 33 36 5f 31 20 7b 0a 20 20 20 20 20 20 20 20 63 6f 6c 6f 72 3a 20 23 30 30 38 36 62 33 ..t36_1.{.........color:.#0086b3
0c00 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 2e 66 69 6c 65 20 7b 0a 20 20 20 20 20 20 20 20 ;.......}........file.{.........
0c20 74 65 78 74 2d 64 65 63 6f 72 61 74 69 6f 6e 3a 20 75 6e 64 65 72 6c 69 6e 65 3b 0a 20 20 20 20 text-decoration:.underline;.....
0c40 20 20 7d 0a 20 20 20 20 20 20 63 6f 64 65 20 7b 0a 20 20 20 20 20 20 20 20 66 6f 6e 74 2d 73 69 ..}.......code.{.........font-si
0c60 7a 65 3a 20 31 32 70 74 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 70 72 65 20 3e 20 63 6f ze:.12pt;.......}.......pre.>.co
0c80 64 65 20 7b 0a 20 20 20 20 20 20 20 20 64 69 73 70 6c 61 79 3a 20 62 6c 6f 63 6b 3b 0a 20 20 20 de.{.........display:.block;....
0ca0 20 20 20 20 20 6f 76 65 72 66 6c 6f 77 3a 20 61 75 74 6f 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 .....overflow:.auto;.......}....
0cc0 20 20 20 2e 74 61 62 6c 65 2d 77 72 61 70 70 65 72 20 7b 0a 20 20 20 20 20 20 20 20 77 69 64 74 ....table-wrapper.{.........widt
0ce0 68 3a 20 31 30 30 25 3b 0a 20 20 20 20 20 20 20 20 6f 76 65 72 66 6c 6f 77 2d 79 3a 20 61 75 74 h:.100%;.........overflow-y:.aut
0d00 6f 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 2f 2a 20 44 65 73 6b 74 6f 70 20 2a 2f 0a 20 o;.......}......./*.Desktop.*/..
0d20 20 20 20 20 20 40 6d 65 64 69 61 20 73 63 72 65 65 6e 20 61 6e 64 20 28 6d 69 6e 2d 77 69 64 74 .....@media.screen.and.(min-widt
0d40 68 3a 20 35 36 2e 32 35 65 6d 29 20 7b 0a 20 20 20 20 20 20 20 20 23 6e 61 76 20 7b 0a 20 20 20 h:.56.25em).{.........#nav.{....
0d60 20 20 20 20 20 20 20 77 69 64 74 68 3a 20 32 30 65 6d 3b 0a 20 20 20 20 20 20 20 20 20 20 68 65 .......width:.20em;...........he
0d80 69 67 68 74 3a 20 31 30 30 25 3b 0a 20 20 20 20 20 20 20 20 20 20 70 6f 73 69 74 69 6f 6e 3a 20 ight:.100%;...........position:.
0da0 66 69 78 65 64 3b 0a 20 20 20 20 20 20 20 20 20 20 6f 76 65 72 66 6c 6f 77 2d 79 3a 20 73 63 72 fixed;...........overflow-y:.scr
0dc0 6f 6c 6c 3b 0a 20 20 20 20 20 20 20 20 20 20 6c 65 66 74 3a 20 30 3b 0a 20 20 20 20 20 20 20 20 oll;...........left:.0;.........
0de0 20 20 74 6f 70 3a 20 32 65 6d 3b 0a 20 20 20 20 20 20 20 20 20 20 70 61 64 64 69 6e 67 2d 6c 65 ..top:.2em;...........padding-le
0e00 66 74 3a 20 31 65 6d 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 23 63 6f 6e 74 ft:.1em;.........}.........#cont
0e20 65 6e 74 73 20 7b 0a 20 20 20 20 20 20 20 20 20 20 6d 61 78 2d 77 69 64 74 68 3a 20 36 30 65 6d ents.{...........max-width:.60em
0e40 3b 0a 20 20 20 20 20 20 20 20 20 20 70 61 64 64 69 6e 67 2d 6c 65 66 74 3a 20 32 32 65 6d 3b 0a ;...........padding-left:.22em;.
0e60 20 20 20 20 20 20 20 20 20 20 70 61 64 64 69 6e 67 3a 20 31 65 6d 3b 0a 20 20 20 20 20 20 20 20 ..........padding:.1em;.........
0e80 20 20 70 61 64 64 69 6e 67 2d 6c 65 66 74 3a 20 32 34 65 6d 3b 0a 20 20 20 20 20 20 20 20 7d 0a ..padding-left:.24em;.........}.
0ea0 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 2f 2a 20 4d 6f 62 69 6c 65 20 2a 2f 0a 20 20 20 20 20 ......}......./*.Mobile.*/......
0ec0 20 40 6d 65 64 69 61 20 73 63 72 65 65 6e 20 61 6e 64 20 28 6d 61 78 2d 77 69 64 74 68 3a 20 35 .@media.screen.and.(max-width:.5
0ee0 36 2e 32 35 65 6d 29 20 7b 0a 20 20 20 20 20 20 20 20 62 6f 64 79 2c 20 63 6f 64 65 20 7b 0a 20 6.25em).{.........body,.code.{..
0f00 20 20 20 20 20 20 20 20 20 66 6f 6e 74 2d 73 69 7a 65 3a 20 73 6d 61 6c 6c 3b 0a 20 20 20 20 20 .........font-size:.small;......
0f20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 23 6e 61 76 20 7b 0a 20 20 20 20 20 20 20 20 20 20 62 6f ...}.........#nav.{...........bo
0f40 72 64 65 72 2d 62 6f 74 74 6f 6d 3a 20 31 70 78 20 73 6f 6c 69 64 20 67 72 65 79 3b 0a 20 20 20 rder-bottom:.1px.solid.grey;....
0f60 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 3c 2f 73 74 79 6c 65 3e 0a 20 20 3c 2f .....}.......}.....</style>...</
0f80 68 65 61 64 3e 0a 20 20 3c 62 6f 64 79 3e 0a 20 20 20 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70 head>...<body>.....<a.href="http
0fa0 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 30 2e s://ziglang.org/documentation/0.
0fc0 31 2e 31 2f 22 3e 30 2e 31 2e 31 3c 2f 61 3e 20 7c 0a 30 2e 32 2e 30 20 7c 0a 3c 61 20 68 72 65 1.1/">0.1.1</a>.|.0.2.0.|.<a.hre
0fe0 66 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 f="https://ziglang.org/documenta
1000 74 69 6f 6e 2f 30 2e 33 2e 30 2f 22 3e 30 2e 33 2e 30 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 tion/0.3.0/">0.3.0</a>.|.<a.href
1020 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 ="https://ziglang.org/documentat
1040 69 6f 6e 2f 30 2e 34 2e 30 2f 22 3e 30 2e 34 2e 30 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d ion/0.4.0/">0.4.0</a>.|.<a.href=
1060 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 "https://ziglang.org/documentati
1080 6f 6e 2f 30 2e 35 2e 30 2f 22 3e 30 2e 35 2e 30 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 on/0.5.0/">0.5.0</a>.|.<a.href="
10a0 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f https://ziglang.org/documentatio
10c0 6e 2f 30 2e 36 2e 30 2f 22 3e 30 2e 36 2e 30 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 n/0.6.0/">0.6.0</a>.|.<a.href="h
10e0 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e ttps://ziglang.org/documentation
1100 2f 30 2e 37 2e 31 2f 22 3e 30 2e 37 2e 31 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 /0.7.1/">0.7.1</a>.|.<a.href="ht
1120 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f tps://ziglang.org/documentation/
1140 30 2e 38 2e 31 2f 22 3e 30 2e 38 2e 31 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 0.8.1/">0.8.1</a>.|.<a.href="htt
1160 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 30 ps://ziglang.org/documentation/0
1180 2e 39 2e 31 2f 22 3e 30 2e 39 2e 31 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 .9.1/">0.9.1</a>.|.<a.href="http
11a0 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 30 2e s://ziglang.org/documentation/0.
11c0 31 30 2e 31 2f 22 3e 30 2e 31 30 2e 31 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 10.1/">0.10.1</a>.|.<a.href="htt
11e0 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 30 ps://ziglang.org/documentation/0
1200 2e 31 31 2e 30 2f 22 3e 30 2e 31 31 2e 30 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 .11.0/">0.11.0</a>.|.<a.href="ht
1220 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f tps://ziglang.org/documentation/
1240 30 2e 31 32 2e 31 2f 22 3e 30 2e 31 32 2e 31 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 0.12.1/">0.12.1</a>.|.<a.href="h
1260 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e ttps://ziglang.org/documentation
1280 2f 30 2e 31 33 2e 30 2f 22 3e 30 2e 31 33 2e 30 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 /0.13.0/">0.13.0</a>.|.<a.href="
12a0 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f https://ziglang.org/documentatio
12c0 6e 2f 30 2e 31 34 2e 31 2f 22 3e 30 2e 31 34 2e 31 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d n/0.14.1/">0.14.1</a>.|.<a.href=
12e0 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 "https://ziglang.org/documentati
1300 6f 6e 2f 30 2e 31 35 2e 32 2f 22 3e 30 2e 31 35 2e 32 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 on/0.15.2/">0.15.2</a>.|.<a.href
1320 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 ="https://ziglang.org/documentat
1340 69 6f 6e 2f 30 2e 31 36 2e 30 2f 22 3e 30 2e 31 36 2e 30 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 ion/0.16.0/">0.16.0</a>.|.<a.hre
1360 66 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 f="https://ziglang.org/documenta
1380 74 69 6f 6e 2f 6d 61 73 74 65 72 2f 22 3e 6d 61 73 74 65 72 3c 2f 61 3e 0a 20 20 20 20 3c 64 69 tion/master/">master</a>.....<di
13a0 76 20 69 64 3d 22 6e 61 76 22 3e 0a 20 20 20 20 20 20 3c 68 33 3e 49 6e 64 65 78 3c 2f 68 33 3e v.id="nav">.......<h3>Index</h3>
13c0 0a 20 20 20 20 20 20 0a 0a 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 .............<ul>.........<li><a
13e0 20 68 72 65 66 3d 22 23 49 6e 74 72 6f 64 75 63 74 69 6f 6e 22 3e 49 6e 74 72 6f 64 75 63 74 69 .href="#Introduction">Introducti
1400 6f 6e 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d on</a></li>.........<li><a.href=
1420 22 23 48 65 6c 6c 6f 2d 57 6f 72 6c 64 22 3e 48 65 6c 6c 6f 20 57 6f 72 6c 64 3c 2f 61 3e 3c 2f "#Hello-World">Hello.World</a></
1440 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 56 61 6c 75 65 73 li>.........<li><a.href="#Values
1460 22 3e 56 61 6c 75 65 73 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 ">Values</a>.........<ul>.......
1480 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 50 72 69 6d 69 74 69 76 65 2d 54 79 ......<li><a.href="#Primitive-Ty
14a0 70 65 73 22 3e 50 72 69 6d 69 74 69 76 65 20 54 79 70 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 pes">Primitive.Types</a></li>...
14c0 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 50 72 69 6d 69 74 69 76 ..........<li><a.href="#Primitiv
14e0 65 2d 56 61 6c 75 65 73 22 3e 50 72 69 6d 69 74 69 76 65 20 56 61 6c 75 65 73 3c 2f 61 3e 3c 2f e-Values">Primitive.Values</a></
1500 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 53 74 li>.............<li><a.href="#St
1520 72 69 6e 67 2d 4c 69 74 65 72 61 6c 73 22 3e 53 74 72 69 6e 67 20 4c 69 74 65 72 61 6c 73 3c 2f ring-Literals">String.Literals</
1540 61 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 a>.............<ul>.............
1560 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 45 73 63 61 70 65 2d 53 65 71 75 65 6e 63 ....<li><a.href="#Escape-Sequenc
1580 65 73 22 3e 45 73 63 61 70 65 20 53 65 71 75 65 6e 63 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 es">Escape.Sequences</a></li>...
15a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 4d 75 6c 74 ..............<li><a.href="#Mult
15c0 69 6c 69 6e 65 2d 53 74 72 69 6e 67 2d 4c 69 74 65 72 61 6c 73 22 3e 4d 75 6c 74 69 6c 69 6e 65 iline-String-Literals">Multiline
15e0 20 53 74 72 69 6e 67 20 4c 69 74 65 72 61 6c 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 .String.Literals</a></li>.......
1600 20 20 20 20 20 20 3c 2f 75 6c 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 ......</ul></li>.............<li
1620 3e 3c 61 20 68 72 65 66 3d 22 23 41 73 73 69 67 6e 6d 65 6e 74 22 3e 41 73 73 69 67 6e 6d 65 6e ><a.href="#Assignment">Assignmen
1640 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 3c 2f 6c 69 3e 0a 20 20 t</a></li>.........</ul></li>...
1660 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e 74 65 67 65 72 73 22 3e 49 6e ......<li><a.href="#Integers">In
1680 74 65 67 65 72 73 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 tegers</a>.........<ul>.........
16a0 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e 74 65 67 65 72 2d 4c 69 74 65 72 61 ....<li><a.href="#Integer-Litera
16c0 6c 73 22 3e 49 6e 74 65 67 65 72 20 4c 69 74 65 72 61 6c 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 ls">Integer.Literals</a></li>...
16e0 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 52 75 6e 74 69 6d 65 2d ..........<li><a.href="#Runtime-
1700 49 6e 74 65 67 65 72 2d 56 61 6c 75 65 73 22 3e 52 75 6e 74 69 6d 65 20 49 6e 74 65 67 65 72 20 Integer-Values">Runtime.Integer.
1720 56 61 6c 75 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 3c 2f 6c Values</a></li>.........</ul></l
1740 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 61 74 73 22 i>.........<li><a.href="#Floats"
1760 3e 46 6c 6f 61 74 73 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 >Floats</a>.........<ul>........
1780 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 61 74 2d 4c 69 74 65 72 61 6c .....<li><a.href="#Float-Literal
17a0 73 22 3e 46 6c 6f 61 74 20 4c 69 74 65 72 61 6c 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 s">Float.Literals</a></li>......
17c0 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 61 74 69 6e 67 2d 50 6f .......<li><a.href="#Floating-Po
17e0 69 6e 74 2d 4f 70 65 72 61 74 69 6f 6e 73 22 3e 46 6c 6f 61 74 69 6e 67 20 50 6f 69 6e 74 20 4f int-Operations">Floating.Point.O
1800 70 65 72 61 74 69 6f 6e 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e perations</a></li>.........</ul>
1820 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 4f 70 65 72 </li>.........<li><a.href="#Oper
1840 61 74 6f 72 73 22 3e 4f 70 65 72 61 74 6f 72 73 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 3c 75 6c ators">Operators</a>.........<ul
1860 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 54 61 62 6c >.............<li><a.href="#Tabl
1880 65 2d 6f 66 2d 4f 70 65 72 61 74 6f 72 73 22 3e 54 61 62 6c 65 20 6f 66 20 4f 70 65 72 61 74 6f e-of-Operators">Table.of.Operato
18a0 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 rs</a></li>.............<li><a.h
18c0 72 65 66 3d 22 23 50 72 65 63 65 64 65 6e 63 65 22 3e 50 72 65 63 65 64 65 6e 63 65 3c 2f 61 3e ref="#Precedence">Precedence</a>
18e0 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 </li>.........</ul></li>........
1900 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 41 72 72 61 79 73 22 3e 41 72 72 61 79 73 3c 2f 61 .<li><a.href="#Arrays">Arrays</a
1920 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 50 6f 69 ></li>.........<li><a.href="#Poi
1940 6e 74 65 72 73 22 3e 50 6f 69 6e 74 65 72 73 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 3c 75 6c 3e nters">Pointers</a>.........<ul>
1960 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 41 6c 69 67 6e .............<li><a.href="#Align
1980 6d 65 6e 74 22 3e 41 6c 69 67 6e 6d 65 6e 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 ment">Alignment</a></li>........
19a0 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 54 79 70 65 2d 42 61 73 65 64 2d 41 6c .....<li><a.href="#Type-Based-Al
19c0 69 61 73 2d 41 6e 61 6c 79 73 69 73 22 3e 54 79 70 65 20 42 61 73 65 64 20 41 6c 69 61 73 20 41 ias-Analysis">Type.Based.Alias.A
19e0 6e 61 6c 79 73 69 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 3c 2f nalysis</a></li>.........</ul></
1a00 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 53 6c 69 63 65 73 li>.........<li><a.href="#Slices
1a20 22 3e 53 6c 69 63 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 ">Slices</a></li>.........<li><a
1a40 20 68 72 65 66 3d 22 23 73 74 72 75 63 74 22 3e 73 74 72 75 63 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a .href="#struct">struct</a></li>.
1a60 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 65 6e 75 6d 22 3e 65 6e 75 6d ........<li><a.href="#enum">enum
1a80 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c </a>.........<ul>.............<l
1aa0 69 3e 3c 61 20 68 72 65 66 3d 22 23 65 78 74 65 72 6e 2d 65 6e 75 6d 22 3e 65 78 74 65 72 6e 20 i><a.href="#extern-enum">extern.
1ac0 65 6e 75 6d 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 3c 2f 6c 69 3e enum</a></li>.........</ul></li>
1ae0 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 69 6f 6e 22 3e 75 6e .........<li><a.href="#union">un
1b00 69 6f 6e 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 ion</a></li>.........<li><a.href
1b20 3d 22 23 73 77 69 74 63 68 22 3e 73 77 69 74 63 68 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 ="#switch">switch</a></li>......
1b40 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 77 68 69 6c 65 22 3e 77 68 69 6c 65 3c 2f 61 ...<li><a.href="#while">while</a
1b60 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 66 6f 72 ></li>.........<li><a.href="#for
1b80 22 3e 66 6f 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 ">for</a></li>.........<li><a.hr
1ba0 65 66 3d 22 23 69 66 22 3e 69 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 ef="#if">if</a></li>.........<li
1bc0 3e 3c 61 20 68 72 65 66 3d 22 23 64 65 66 65 72 22 3e 64 65 66 65 72 3c 2f 61 3e 3c 2f 6c 69 3e ><a.href="#defer">defer</a></li>
1be0 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 72 65 61 63 68 61 62 .........<li><a.href="#unreachab
1c00 6c 65 22 3e 75 6e 72 65 61 63 68 61 62 6c 65 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 3c 75 6c 3e le">unreachable</a>.........<ul>
1c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 42 61 73 69 63 .............<li><a.href="#Basic
1c40 73 22 3e 42 61 73 69 63 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c s">Basics</a></li>.............<
1c60 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 41 74 2d 43 6f 6d 70 69 6c 65 2d 54 69 6d 65 22 3e 41 74 li><a.href="#At-Compile-Time">At
1c80 20 43 6f 6d 70 69 6c 65 2d 54 69 6d 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c .Compile-Time</a></li>.........<
1ca0 2f 75 6c 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 /ul></li>.........<li><a.href="#
1cc0 6e 6f 72 65 74 75 72 6e 22 3e 6e 6f 72 65 74 75 72 6e 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 noreturn">noreturn</a></li>.....
1ce0 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 46 75 6e 63 74 69 6f 6e 73 22 3e 46 75 6e ....<li><a.href="#Functions">Fun
1d00 63 74 69 6f 6e 73 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 ctions</a>.........<ul>.........
1d20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 50 61 73 73 2d 62 79 2d 76 61 6c 75 65 2d ....<li><a.href="#Pass-by-value-
1d40 50 61 72 61 6d 65 74 65 72 73 22 3e 50 61 73 73 2d 62 79 2d 76 61 6c 75 65 20 50 61 72 61 6d 65 Parameters">Pass-by-value.Parame
1d60 74 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 ters</a></li>.............<li><a
1d80 20 68 72 65 66 3d 22 23 46 75 6e 63 74 69 6f 6e 2d 52 65 66 6c 65 63 74 69 6f 6e 22 3e 46 75 6e .href="#Function-Reflection">Fun
1da0 63 74 69 6f 6e 20 52 65 66 6c 65 63 74 69 6f 6e 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 ction.Reflection</a></li>.......
1dc0 20 20 3c 2f 75 6c 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 ..</ul></li>.........<li><a.href
1de0 3d 22 23 45 72 72 6f 72 73 22 3e 45 72 72 6f 72 73 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 3c 75 ="#Errors">Errors</a>.........<u
1e00 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 45 72 72 l>.............<li><a.href="#Err
1e20 6f 72 2d 53 65 74 2d 54 79 70 65 22 3e 45 72 72 6f 72 20 53 65 74 20 54 79 70 65 3c 2f 61 3e 0a or-Set-Type">Error.Set.Type</a>.
1e40 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ............<ul>................
1e60 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 54 68 65 2d 47 6c 6f 62 61 6c 2d 45 72 72 6f 72 2d .<li><a.href="#The-Global-Error-
1e80 53 65 74 22 3e 54 68 65 20 47 6c 6f 62 61 6c 20 45 72 72 6f 72 20 53 65 74 3c 2f 61 3e 3c 2f 6c Set">The.Global.Error.Set</a></l
1ea0 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 i>.............</ul></li>.......
1ec0 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 45 72 72 6f 72 2d 55 6e 69 6f 6e 2d ......<li><a.href="#Error-Union-
1ee0 54 79 70 65 22 3e 45 72 72 6f 72 20 55 6e 69 6f 6e 20 54 79 70 65 3c 2f 61 3e 0a 20 20 20 20 20 Type">Error.Union.Type</a>......
1f00 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e .......<ul>.................<li>
1f20 3c 61 20 68 72 65 66 3d 22 23 49 6e 66 65 72 72 65 64 2d 45 72 72 6f 72 2d 53 65 74 73 22 3e 49 <a.href="#Inferred-Error-Sets">I
1f40 6e 66 65 72 72 65 64 20 45 72 72 6f 72 20 53 65 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 nferred.Error.Sets</a></li>.....
1f60 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c ........</ul></li>.............<
1f80 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 45 72 72 6f 72 2d 52 65 74 75 72 6e 2d 54 72 61 63 65 73 li><a.href="#Error-Return-Traces
1fa0 22 3e 45 72 72 6f 72 20 52 65 74 75 72 6e 20 54 72 61 63 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 ">Error.Return.Traces</a></li>..
1fc0 20 20 20 20 20 20 20 3c 2f 75 6c 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 .......</ul></li>.........<li><a
1fe0 20 68 72 65 66 3d 22 23 4e 75 6c 6c 61 62 6c 65 73 22 3e 4e 75 6c 6c 61 62 6c 65 73 3c 2f 61 3e .href="#Nullables">Nullables</a>
2000 0a 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 .........<ul>.............<li><a
2020 20 68 72 65 66 3d 22 23 4e 75 6c 6c 61 62 6c 65 2d 54 79 70 65 22 3e 4e 75 6c 6c 61 62 6c 65 20 .href="#Nullable-Type">Nullable.
2040 54 79 70 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 3c 2f 6c 69 3e Type</a></li>.........</ul></li>
2060 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 43 61 73 74 69 6e 67 22 3e .........<li><a.href="#Casting">
2080 43 61 73 74 69 6e 67 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 Casting</a></li>.........<li><a.
20a0 68 72 65 66 3d 22 23 76 6f 69 64 22 3e 76 6f 69 64 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 href="#void">void</a></li>......
20c0 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 74 68 69 73 22 3e 74 68 69 73 3c 2f 61 3e 3c ...<li><a.href="#this">this</a><
20e0 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 6f 6d 70 74 /li>.........<li><a.href="#compt
2100 69 6d 65 22 3e 63 6f 6d 70 74 69 6d 65 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 ime">comptime</a>.........<ul>..
2120 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e 74 72 6f 64 75 ...........<li><a.href="#Introdu
2140 63 69 6e 67 2d 74 68 65 2d 43 6f 6d 70 69 6c 65 2d 54 69 6d 65 2d 43 6f 6e 63 65 70 74 22 3e 49 cing-the-Compile-Time-Concept">I
2160 6e 74 72 6f 64 75 63 69 6e 67 20 74 68 65 20 43 6f 6d 70 69 6c 65 2d 54 69 6d 65 20 43 6f 6e 63 ntroducing.the.Compile-Time.Conc
2180 65 70 74 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 ept</a>.............<ul>........
21a0 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 43 6f 6d 70 69 6c 65 2d 54 .........<li><a.href="#Compile-T
21c0 69 6d 65 2d 50 61 72 61 6d 65 74 65 72 73 22 3e 43 6f 6d 70 69 6c 65 2d 54 69 6d 65 20 50 61 72 ime-Parameters">Compile-Time.Par
21e0 61 6d 65 74 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ameters</a></li>................
2200 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 43 6f 6d 70 69 6c 65 2d 54 69 6d 65 2d 56 61 72 69 .<li><a.href="#Compile-Time-Vari
2220 61 62 6c 65 73 22 3e 43 6f 6d 70 69 6c 65 2d 54 69 6d 65 20 56 61 72 69 61 62 6c 65 73 3c 2f 61 ables">Compile-Time.Variables</a
2240 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 ></li>.................<li><a.hr
2260 65 66 3d 22 23 43 6f 6d 70 69 6c 65 2d 54 69 6d 65 2d 45 78 70 72 65 73 73 69 6f 6e 73 22 3e 43 ef="#Compile-Time-Expressions">C
2280 6f 6d 70 69 6c 65 2d 54 69 6d 65 20 45 78 70 72 65 73 73 69 6f 6e 73 3c 2f 61 3e 3c 2f 6c 69 3e ompile-Time.Expressions</a></li>
22a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 .............</ul></li>.........
22c0 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 47 65 6e 65 72 69 63 2d 44 61 74 61 2d 53 ....<li><a.href="#Generic-Data-S
22e0 74 72 75 63 74 75 72 65 73 22 3e 47 65 6e 65 72 69 63 20 44 61 74 61 20 53 74 72 75 63 74 75 72 tructures">Generic.Data.Structur
2300 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 es</a></li>.............<li><a.h
2320 72 65 66 3d 22 23 43 61 73 65 2d 53 74 75 64 79 2d 70 72 69 6e 74 66 2d 69 6e 2d 5a 69 67 22 3e ref="#Case-Study-printf-in-Zig">
2340 43 61 73 65 20 53 74 75 64 79 3a 20 70 72 69 6e 74 66 20 69 6e 20 5a 69 67 3c 2f 61 3e 3c 2f 6c Case.Study:.printf.in.Zig</a></l
2360 69 3e 0a 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c i>.........</ul></li>.........<l
2380 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 6c 69 6e 65 22 3e 69 6e 6c 69 6e 65 3c 2f 61 3e 3c 2f i><a.href="#inline">inline</a></
23a0 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 41 73 73 65 6d 62 li>.........<li><a.href="#Assemb
23c0 6c 79 22 3e 41 73 73 65 6d 62 6c 79 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c ly">Assembly</a></li>.........<l
23e0 69 3e 3c 61 20 68 72 65 66 3d 22 23 41 74 6f 6d 69 63 73 22 3e 41 74 6f 6d 69 63 73 3c 2f 61 3e i><a.href="#Atomics">Atomics</a>
2400 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 42 75 69 6c </li>.........<li><a.href="#Buil
2420 74 69 6e 2d 46 75 6e 63 74 69 6f 6e 73 22 3e 42 75 69 6c 74 69 6e 20 46 75 6e 63 74 69 6f 6e 73 tin-Functions">Builtin.Functions
2440 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c </a>.........<ul>.............<l
2460 69 3e 3c 61 20 68 72 65 66 3d 22 23 61 64 64 57 69 74 68 4f 76 65 72 66 6c 6f 77 22 3e 40 61 64 i><a.href="#addWithOverflow">@ad
2480 64 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 dWithOverflow</a></li>..........
24a0 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 41 72 67 54 79 70 65 22 3e 40 41 72 67 54 79 ...<li><a.href="#ArgType">@ArgTy
24c0 70 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 pe</a></li>.............<li><a.h
24e0 72 65 66 3d 22 23 61 74 6f 6d 69 63 52 6d 77 22 3e 40 61 74 6f 6d 69 63 52 6d 77 3c 2f 61 3e 3c ref="#atomicRmw">@atomicRmw</a><
2500 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 /li>.............<li><a.href="#b
2520 69 74 43 61 73 74 22 3e 40 62 69 74 43 61 73 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 itCast">@bitCast</a></li>.......
2540 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 72 65 61 6b 70 6f 69 6e 74 22 3e ......<li><a.href="#breakpoint">
2560 40 62 72 65 61 6b 70 6f 69 6e 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 @breakpoint</a></li>............
2580 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 61 6c 69 67 6e 43 61 73 74 22 3e 40 61 6c 69 67 6e .<li><a.href="#alignCast">@align
25a0 43 61 73 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 Cast</a></li>.............<li><a
25c0 20 68 72 65 66 3d 22 23 61 6c 69 67 6e 4f 66 22 3e 40 61 6c 69 67 6e 4f 66 3c 2f 61 3e 3c 2f 6c .href="#alignOf">@alignOf</a></l
25e0 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 44 65 i>.............<li><a.href="#cDe
2600 66 69 6e 65 22 3e 40 63 44 65 66 69 6e 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 fine">@cDefine</a></li>.........
2620 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 49 6d 70 6f 72 74 22 3e 40 63 49 6d 70 ....<li><a.href="#cImport">@cImp
2640 6f 72 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 ort</a></li>.............<li><a.
2660 68 72 65 66 3d 22 23 63 49 6e 63 6c 75 64 65 22 3e 40 63 49 6e 63 6c 75 64 65 3c 2f 61 3e 3c 2f href="#cInclude">@cInclude</a></
2680 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 55 li>.............<li><a.href="#cU
26a0 6e 64 65 66 22 3e 40 63 55 6e 64 65 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 ndef">@cUndef</a></li>..........
26c0 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 61 6e 49 6d 70 6c 69 63 69 74 43 61 73 74 ...<li><a.href="#canImplicitCast
26e0 22 3e 40 63 61 6e 49 6d 70 6c 69 63 69 74 43 61 73 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 ">@canImplicitCast</a></li>.....
2700 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 6c 7a 22 3e 40 63 6c 7a 3c ........<li><a.href="#clz">@clz<
2720 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 /a></li>.............<li><a.href
2740 3d 22 23 63 6d 70 78 63 68 67 22 3e 40 63 6d 70 78 63 68 67 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 ="#cmpxchg">@cmpxchg</a></li>...
2760 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 6f 6d 70 69 6c 65 45 ..........<li><a.href="#compileE
2780 72 72 6f 72 22 3e 40 63 6f 6d 70 69 6c 65 45 72 72 6f 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 rror">@compileError</a></li>....
27a0 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 6f 6d 70 69 6c 65 4c 6f .........<li><a.href="#compileLo
27c0 67 22 3e 40 63 6f 6d 70 69 6c 65 4c 6f 67 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 g">@compileLog</a></li>.........
27e0 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 74 7a 22 3e 40 63 74 7a 3c 2f 61 3e 3c ....<li><a.href="#ctz">@ctz</a><
2800 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 64 /li>.............<li><a.href="#d
2820 69 76 45 78 61 63 74 22 3e 40 64 69 76 45 78 61 63 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 ivExact">@divExact</a></li>.....
2840 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 64 69 76 46 6c 6f 6f 72 22 3e ........<li><a.href="#divFloor">
2860 40 64 69 76 46 6c 6f 6f 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c @divFloor</a></li>.............<
2880 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 64 69 76 54 72 75 6e 63 22 3e 40 64 69 76 54 72 75 6e 63 li><a.href="#divTrunc">@divTrunc
28a0 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 </a></li>.............<li><a.hre
28c0 66 3d 22 23 65 6d 62 65 64 46 69 6c 65 22 3e 40 65 6d 62 65 64 46 69 6c 65 3c 2f 61 3e 3c 2f 6c f="#embedFile">@embedFile</a></l
28e0 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 65 78 70 i>.............<li><a.href="#exp
2900 6f 72 74 22 3e 40 65 78 70 6f 72 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 ort">@export</a></li>...........
2920 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 74 61 67 4e 61 6d 65 22 3e 40 74 61 67 4e 61 6d ..<li><a.href="#tagName">@tagNam
2940 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 e</a></li>.............<li><a.hr
2960 65 66 3d 22 23 54 61 67 54 79 70 65 22 3e 40 54 61 67 54 79 70 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a ef="#TagType">@TagType</a></li>.
2980 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 65 72 72 6f 72 4e ............<li><a.href="#errorN
29a0 61 6d 65 22 3e 40 65 72 72 6f 72 4e 61 6d 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 ame">@errorName</a></li>........
29c0 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 65 72 72 6f 72 52 65 74 75 72 6e 54 72 .....<li><a.href="#errorReturnTr
29e0 61 63 65 22 3e 40 65 72 72 6f 72 52 65 74 75 72 6e 54 72 61 63 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a ace">@errorReturnTrace</a></li>.
2a00 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 66 65 6e 63 65 22 ............<li><a.href="#fence"
2a20 3e 40 66 65 6e 63 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 >@fence</a></li>.............<li
2a40 3e 3c 61 20 68 72 65 66 3d 22 23 66 69 65 6c 64 50 61 72 65 6e 74 50 74 72 22 3e 40 66 69 65 6c ><a.href="#fieldParentPtr">@fiel
2a60 64 50 61 72 65 6e 74 50 74 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 dParentPtr</a></li>.............
2a80 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 66 72 61 6d 65 41 64 64 72 65 73 73 22 3e 40 66 72 61 <li><a.href="#frameAddress">@fra
2aa0 6d 65 41 64 64 72 65 73 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c meAddress</a></li>.............<
2ac0 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6d 70 6f 72 74 22 3e 40 69 6d 70 6f 72 74 3c 2f 61 3e li><a.href="#import">@import</a>
2ae0 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 </li>.............<li><a.href="#
2b00 69 6e 6c 69 6e 65 43 61 6c 6c 22 3e 40 69 6e 6c 69 6e 65 43 61 6c 6c 3c 2f 61 3e 3c 2f 6c 69 3e inlineCall">@inlineCall</a></li>
2b20 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 74 54 6f .............<li><a.href="#intTo
2b40 50 74 72 22 3e 40 69 6e 74 54 6f 50 74 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 Ptr">@intToPtr</a></li>.........
2b60 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e 74 54 79 70 65 22 3e 40 49 6e 74 54 ....<li><a.href="#IntType">@IntT
2b80 79 70 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 ype</a></li>.............<li><a.
2ba0 68 72 65 66 3d 22 23 6d 61 78 56 61 6c 75 65 22 3e 40 6d 61 78 56 61 6c 75 65 3c 2f 61 3e 3c 2f href="#maxValue">@maxValue</a></
2bc0 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6d 65 li>.............<li><a.href="#me
2be0 6d 62 65 72 43 6f 75 6e 74 22 3e 40 6d 65 6d 62 65 72 43 6f 75 6e 74 3c 2f 61 3e 3c 2f 6c 69 3e mberCount">@memberCount</a></li>
2c00 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6d 65 6d 62 65 .............<li><a.href="#membe
2c20 72 4e 61 6d 65 22 3e 40 6d 65 6d 62 65 72 4e 61 6d 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 rName">@memberName</a></li>.....
2c40 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6d 65 6d 62 65 72 54 79 70 65 ........<li><a.href="#memberType
2c60 22 3e 40 6d 65 6d 62 65 72 54 79 70 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 ">@memberType</a></li>..........
2c80 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6d 65 6d 63 70 79 22 3e 40 6d 65 6d 63 70 79 ...<li><a.href="#memcpy">@memcpy
2ca0 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 </a></li>.............<li><a.hre
2cc0 66 3d 22 23 6d 65 6d 73 65 74 22 3e 40 6d 65 6d 73 65 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 f="#memset">@memset</a></li>....
2ce0 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6d 69 6e 56 61 6c 75 65 22 .........<li><a.href="#minValue"
2d00 3e 40 6d 69 6e 56 61 6c 75 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 >@minValue</a></li>.............
2d20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6d 6f 64 22 3e 40 6d 6f 64 3c 2f 61 3e 3c 2f 6c 69 3e <li><a.href="#mod">@mod</a></li>
2d40 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6d 75 6c 57 69 .............<li><a.href="#mulWi
2d60 74 68 4f 76 65 72 66 6c 6f 77 22 3e 40 6d 75 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 61 3e thOverflow">@mulWithOverflow</a>
2d80 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 </li>.............<li><a.href="#
2da0 6e 6f 49 6e 6c 69 6e 65 43 61 6c 6c 22 3e 40 6e 6f 49 6e 6c 69 6e 65 43 61 6c 6c 3c 2f 61 3e 3c noInlineCall">@noInlineCall</a><
2dc0 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6f /li>.............<li><a.href="#o
2de0 66 66 73 65 74 4f 66 22 3e 40 6f 66 66 73 65 74 4f 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 ffsetOf">@offsetOf</a></li>.....
2e00 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 4f 70 61 71 75 65 54 79 70 65 ........<li><a.href="#OpaqueType
2e20 22 3e 40 4f 70 61 71 75 65 54 79 70 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 ">@OpaqueType</a></li>..........
2e40 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 70 61 6e 69 63 22 3e 40 70 61 6e 69 63 3c 2f ...<li><a.href="#panic">@panic</
2e60 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d a></li>.............<li><a.href=
2e80 22 23 70 74 72 43 61 73 74 22 3e 40 70 74 72 43 61 73 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 "#ptrCast">@ptrCast</a></li>....
2ea0 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 70 74 72 54 6f 49 6e 74 22 .........<li><a.href="#ptrToInt"
2ec0 3e 40 70 74 72 54 6f 49 6e 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 >@ptrToInt</a></li>.............
2ee0 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 72 65 6d 22 3e 40 72 65 6d 3c 2f 61 3e 3c 2f 6c 69 3e <li><a.href="#rem">@rem</a></li>
2f00 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 72 65 74 75 72 .............<li><a.href="#retur
2f20 6e 41 64 64 72 65 73 73 22 3e 40 72 65 74 75 72 6e 41 64 64 72 65 73 73 3c 2f 61 3e 3c 2f 6c 69 nAddress">@returnAddress</a></li
2f40 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 65 74 41 >.............<li><a.href="#setA
2f60 6c 69 67 6e 53 74 61 63 6b 22 3e 40 73 65 74 41 6c 69 67 6e 53 74 61 63 6b 3c 2f 61 3e 3c 2f 6c lignStack">@setAlignStack</a></l
2f80 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 65 74 i>.............<li><a.href="#set
2fa0 43 6f 6c 64 22 3e 40 73 65 74 43 6f 6c 64 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 Cold">@setCold</a></li>.........
2fc0 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 65 74 52 75 6e 74 69 6d 65 53 61 66 65 ....<li><a.href="#setRuntimeSafe
2fe0 74 79 22 3e 40 73 65 74 52 75 6e 74 69 6d 65 53 61 66 65 74 79 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 ty">@setRuntimeSafety</a></li>..
3000 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 65 74 45 76 61 6c ...........<li><a.href="#setEval
3020 42 72 61 6e 63 68 51 75 6f 74 61 22 3e 40 73 65 74 45 76 61 6c 42 72 61 6e 63 68 51 75 6f 74 61 BranchQuota">@setEvalBranchQuota
3040 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 </a></li>.............<li><a.hre
3060 66 3d 22 23 73 65 74 46 6c 6f 61 74 4d 6f 64 65 22 3e 40 73 65 74 46 6c 6f 61 74 4d 6f 64 65 3c f="#setFloatMode">@setFloatMode<
3080 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 /a></li>.............<li><a.href
30a0 3d 22 23 73 65 74 47 6c 6f 62 61 6c 4c 69 6e 6b 61 67 65 22 3e 40 73 65 74 47 6c 6f 62 61 6c 4c ="#setGlobalLinkage">@setGlobalL
30c0 69 6e 6b 61 67 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e inkage</a></li>.............<li>
30e0 3c 61 20 68 72 65 66 3d 22 23 73 65 74 47 6c 6f 62 61 6c 53 65 63 74 69 6f 6e 22 3e 40 73 65 74 <a.href="#setGlobalSection">@set
3100 47 6c 6f 62 61 6c 53 65 63 74 69 6f 6e 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 GlobalSection</a></li>..........
3120 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 68 6c 45 78 61 63 74 22 3e 40 73 68 6c 45 ...<li><a.href="#shlExact">@shlE
3140 78 61 63 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 xact</a></li>.............<li><a
3160 20 68 72 65 66 3d 22 23 73 68 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 22 3e 40 73 68 6c 57 69 74 .href="#shlWithOverflow">@shlWit
3180 68 4f 76 65 72 66 6c 6f 77 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c hOverflow</a></li>.............<
31a0 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 68 72 45 78 61 63 74 22 3e 40 73 68 72 45 78 61 63 74 li><a.href="#shrExact">@shrExact
31c0 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 </a></li>.............<li><a.hre
31e0 66 3d 22 23 73 69 7a 65 4f 66 22 3e 40 73 69 7a 65 4f 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 f="#sizeOf">@sizeOf</a></li>....
3200 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 75 62 57 69 74 68 4f 76 .........<li><a.href="#subWithOv
3220 65 72 66 6c 6f 77 22 3e 40 73 75 62 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 61 3e 3c 2f 6c 69 erflow">@subWithOverflow</a></li
3240 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 74 72 75 6e >.............<li><a.href="#trun
3260 63 61 74 65 22 3e 40 74 72 75 6e 63 61 74 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 cate">@truncate</a></li>........
3280 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 74 79 70 65 49 64 22 3e 40 74 79 70 65 .....<li><a.href="#typeId">@type
32a0 49 64 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 Id</a></li>.............<li><a.h
32c0 72 65 66 3d 22 23 74 79 70 65 4e 61 6d 65 22 3e 40 74 79 70 65 4e 61 6d 65 3c 2f 61 3e 3c 2f 6c ref="#typeName">@typeName</a></l
32e0 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 74 79 70 i>.............<li><a.href="#typ
3300 65 4f 66 22 3e 40 74 79 70 65 4f 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 2f eOf">@typeOf</a></li>.........</
3320 75 6c 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 42 ul></li>.........<li><a.href="#B
3340 75 69 6c 64 2d 4d 6f 64 65 22 3e 42 75 69 6c 64 20 4d 6f 64 65 3c 2f 61 3e 0a 20 20 20 20 20 20 uild-Mode">Build.Mode</a>.......
3360 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 ..<ul>.............<li><a.href="
3380 23 44 65 62 75 67 22 3e 44 65 62 75 67 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 #Debug">Debug</a></li>..........
33a0 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 52 65 6c 65 61 73 65 46 61 73 74 22 3e 52 65 ...<li><a.href="#ReleaseFast">Re
33c0 6c 65 61 73 65 46 61 73 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c leaseFast</a></li>.............<
33e0 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 52 65 6c 65 61 73 65 53 61 66 65 22 3e 52 65 6c 65 61 73 li><a.href="#ReleaseSafe">Releas
3400 65 53 61 66 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 3c 2f 6c 69 eSafe</a></li>.........</ul></li
3420 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 55 6e 64 65 66 69 6e 65 >.........<li><a.href="#Undefine
3440 64 2d 42 65 68 61 76 69 6f 72 22 3e 55 6e 64 65 66 69 6e 65 64 20 42 65 68 61 76 69 6f 72 3c 2f d-Behavior">Undefined.Behavior</
3460 61 3e 0a 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e a>.........<ul>.............<li>
3480 3c 61 20 68 72 65 66 3d 22 23 52 65 61 63 68 69 6e 67 2d 55 6e 72 65 61 63 68 61 62 6c 65 2d 43 <a.href="#Reaching-Unreachable-C
34a0 6f 64 65 22 3e 52 65 61 63 68 69 6e 67 20 55 6e 72 65 61 63 68 61 62 6c 65 20 43 6f 64 65 3c 2f ode">Reaching.Unreachable.Code</
34c0 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d a></li>.............<li><a.href=
34e0 22 23 49 6e 64 65 78 2d 6f 75 74 2d 6f 66 2d 42 6f 75 6e 64 73 22 3e 49 6e 64 65 78 20 6f 75 74 "#Index-out-of-Bounds">Index.out
3500 20 6f 66 20 42 6f 75 6e 64 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 .of.Bounds</a></li>.............
3520 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 43 61 73 74 2d 4e 65 67 61 74 69 76 65 2d 4e 75 6d 62 <li><a.href="#Cast-Negative-Numb
3540 65 72 2d 74 6f 2d 55 6e 73 69 67 6e 65 64 2d 49 6e 74 65 67 65 72 22 3e 43 61 73 74 20 4e 65 67 er-to-Unsigned-Integer">Cast.Neg
3560 61 74 69 76 65 20 4e 75 6d 62 65 72 20 74 6f 20 55 6e 73 69 67 6e 65 64 20 49 6e 74 65 67 65 72 ative.Number.to.Unsigned.Integer
3580 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 </a></li>.............<li><a.hre
35a0 66 3d 22 23 43 61 73 74 2d 54 72 75 6e 63 61 74 65 73 2d 44 61 74 61 22 3e 43 61 73 74 20 54 72 f="#Cast-Truncates-Data">Cast.Tr
35c0 75 6e 63 61 74 65 73 20 44 61 74 61 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 uncates.Data</a></li>...........
35e0 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e 74 65 67 65 72 2d 4f 76 65 72 66 6c 6f 77 ..<li><a.href="#Integer-Overflow
3600 22 3e 49 6e 74 65 67 65 72 20 4f 76 65 72 66 6c 6f 77 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 20 ">Integer.Overflow</a>..........
3620 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 ...<ul>.................<li><a.h
3640 72 65 66 3d 22 23 44 65 66 61 75 6c 74 2d 4f 70 65 72 61 74 69 6f 6e 73 22 3e 44 65 66 61 75 6c ref="#Default-Operations">Defaul
3660 74 20 4f 70 65 72 61 74 69 6f 6e 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 t.Operations</a></li>...........
3680 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 53 74 61 6e 64 61 72 64 2d 4c 69 62 ......<li><a.href="#Standard-Lib
36a0 72 61 72 79 2d 4d 61 74 68 2d 46 75 6e 63 74 69 6f 6e 73 22 3e 53 74 61 6e 64 61 72 64 20 4c 69 rary-Math-Functions">Standard.Li
36c0 62 72 61 72 79 20 4d 61 74 68 20 46 75 6e 63 74 69 6f 6e 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 brary.Math.Functions</a></li>...
36e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 42 75 69 6c ..............<li><a.href="#Buil
3700 74 69 6e 2d 4f 76 65 72 66 6c 6f 77 2d 46 75 6e 63 74 69 6f 6e 73 22 3e 42 75 69 6c 74 69 6e 20 tin-Overflow-Functions">Builtin.
3720 4f 76 65 72 66 6c 6f 77 20 46 75 6e 63 74 69 6f 6e 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 Overflow.Functions</a></li>.....
3740 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 57 72 61 70 70 69 ............<li><a.href="#Wrappi
3760 6e 67 2d 4f 70 65 72 61 74 69 6f 6e 73 22 3e 57 72 61 70 70 69 6e 67 20 4f 70 65 72 61 74 69 6f ng-Operations">Wrapping.Operatio
3780 6e 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 3c 2f 6c ns</a></li>.............</ul></l
37a0 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 45 78 61 i>.............<li><a.href="#Exa
37c0 63 74 2d 4c 65 66 74 2d 53 68 69 66 74 2d 4f 76 65 72 66 6c 6f 77 22 3e 45 78 61 63 74 20 4c 65 ct-Left-Shift-Overflow">Exact.Le
37e0 66 74 20 53 68 69 66 74 20 4f 76 65 72 66 6c 6f 77 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 ft.Shift.Overflow</a></li>......
3800 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 45 78 61 63 74 2d 52 69 67 68 74 .......<li><a.href="#Exact-Right
3820 2d 53 68 69 66 74 2d 4f 76 65 72 66 6c 6f 77 22 3e 45 78 61 63 74 20 52 69 67 68 74 20 53 68 69 -Shift-Overflow">Exact.Right.Shi
3840 66 74 20 4f 76 65 72 66 6c 6f 77 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 ft.Overflow</a></li>............
3860 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 44 69 76 69 73 69 6f 6e 2d 62 79 2d 5a 65 72 6f 22 .<li><a.href="#Division-by-Zero"
3880 3e 44 69 76 69 73 69 6f 6e 20 62 79 20 5a 65 72 6f 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 >Division.by.Zero</a></li>......
38a0 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 52 65 6d 61 69 6e 64 65 72 2d 44 .......<li><a.href="#Remainder-D
38c0 69 76 69 73 69 6f 6e 2d 62 79 2d 5a 65 72 6f 22 3e 52 65 6d 61 69 6e 64 65 72 20 44 69 76 69 73 ivision-by-Zero">Remainder.Divis
38e0 69 6f 6e 20 62 79 20 5a 65 72 6f 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 ion.by.Zero</a></li>............
3900 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 45 78 61 63 74 2d 44 69 76 69 73 69 6f 6e 2d 52 65 .<li><a.href="#Exact-Division-Re
3920 6d 61 69 6e 64 65 72 22 3e 45 78 61 63 74 20 44 69 76 69 73 69 6f 6e 20 52 65 6d 61 69 6e 64 65 mainder">Exact.Division.Remainde
3940 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 r</a></li>.............<li><a.hr
3960 65 66 3d 22 23 53 6c 69 63 65 2d 57 69 64 65 6e 2d 52 65 6d 61 69 6e 64 65 72 22 3e 53 6c 69 63 ef="#Slice-Widen-Remainder">Slic
3980 65 20 57 69 64 65 6e 20 52 65 6d 61 69 6e 64 65 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 e.Widen.Remainder</a></li>......
39a0 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 41 74 74 65 6d 70 74 2d 74 6f 2d .......<li><a.href="#Attempt-to-
39c0 55 6e 77 72 61 70 2d 4e 75 6c 6c 22 3e 41 74 74 65 6d 70 74 20 74 6f 20 55 6e 77 72 61 70 20 4e Unwrap-Null">Attempt.to.Unwrap.N
39e0 75 6c 6c 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 ull</a></li>.............<li><a.
3a00 68 72 65 66 3d 22 23 41 74 74 65 6d 70 74 2d 74 6f 2d 55 6e 77 72 61 70 2d 45 72 72 6f 72 22 3e href="#Attempt-to-Unwrap-Error">
3a20 41 74 74 65 6d 70 74 20 74 6f 20 55 6e 77 72 61 70 20 45 72 72 6f 72 3c 2f 61 3e 3c 2f 6c 69 3e Attempt.to.Unwrap.Error</a></li>
3a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e 76 61 6c .............<li><a.href="#Inval
3a60 69 64 2d 45 72 72 6f 72 2d 43 6f 64 65 22 3e 49 6e 76 61 6c 69 64 20 45 72 72 6f 72 20 43 6f 64 id-Error-Code">Invalid.Error.Cod
3a80 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 e</a></li>.............<li><a.hr
3aa0 65 66 3d 22 23 49 6e 76 61 6c 69 64 2d 45 6e 75 6d 2d 43 61 73 74 22 3e 49 6e 76 61 6c 69 64 20 ef="#Invalid-Enum-Cast">Invalid.
3ac0 45 6e 75 6d 20 43 61 73 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c Enum.Cast</a></li>.............<
3ae0 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e 63 6f 72 72 65 63 74 2d 50 6f 69 6e 74 65 72 2d 41 li><a.href="#Incorrect-Pointer-A
3b00 6c 69 67 6e 6d 65 6e 74 22 3e 49 6e 63 6f 72 72 65 63 74 20 50 6f 69 6e 74 65 72 20 41 6c 69 67 lignment">Incorrect.Pointer.Alig
3b20 6e 6d 65 6e 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c nment</a></li>.............<li><
3b40 61 20 68 72 65 66 3d 22 23 57 72 6f 6e 67 2d 55 6e 69 6f 6e 2d 46 69 65 6c 64 2d 41 63 63 65 73 a.href="#Wrong-Union-Field-Acces
3b60 73 22 3e 57 72 6f 6e 67 20 55 6e 69 6f 6e 20 46 69 65 6c 64 20 41 63 63 65 73 73 3c 2f 61 3e 3c s">Wrong.Union.Field.Access</a><
3b80 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 /li>.........</ul></li>.........
3ba0 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 4d 65 6d 6f 72 79 22 3e 4d 65 6d 6f 72 79 3c 2f 61 3e <li><a.href="#Memory">Memory</a>
3bc0 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 43 6f 6d 70 </li>.........<li><a.href="#Comp
3be0 69 6c 65 2d 56 61 72 69 61 62 6c 65 73 22 3e 43 6f 6d 70 69 6c 65 20 56 61 72 69 61 62 6c 65 73 ile-Variables">Compile.Variables
3c00 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 </a></li>.........<li><a.href="#
3c20 52 6f 6f 74 2d 53 6f 75 72 63 65 2d 46 69 6c 65 22 3e 52 6f 6f 74 20 53 6f 75 72 63 65 20 46 69 Root-Source-File">Root.Source.Fi
3c40 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d le</a></li>.........<li><a.href=
3c60 22 23 5a 69 67 2d 54 65 73 74 22 3e 5a 69 67 20 54 65 73 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 "#Zig-Test">Zig.Test</a></li>...
3c80 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 5a 69 67 2d 42 75 69 6c 64 2d 53 79 ......<li><a.href="#Zig-Build-Sy
3ca0 73 74 65 6d 22 3e 5a 69 67 20 42 75 69 6c 64 20 53 79 73 74 65 6d 3c 2f 61 3e 3c 2f 6c 69 3e 0a stem">Zig.Build.System</a></li>.
3cc0 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 43 22 3e 43 3c 2f 61 3e 0a 20 ........<li><a.href="#C">C</a>..
3ce0 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 .......<ul>.............<li><a.h
3d00 72 65 66 3d 22 23 43 2d 54 79 70 65 2d 50 72 69 6d 69 74 69 76 65 73 22 3e 43 20 54 79 70 65 20 ref="#C-Type-Primitives">C.Type.
3d20 50 72 69 6d 69 74 69 76 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 Primitives</a></li>.............
3d40 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 43 2d 53 74 72 69 6e 67 2d 4c 69 74 65 72 61 6c 73 22 <li><a.href="#C-String-Literals"
3d60 3e 43 20 53 74 72 69 6e 67 20 4c 69 74 65 72 61 6c 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 >C.String.Literals</a></li>.....
3d80 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6d 70 6f 72 74 2d 66 72 6f ........<li><a.href="#Import-fro
3da0 6d 2d 43 2d 48 65 61 64 65 72 2d 46 69 6c 65 22 3e 49 6d 70 6f 72 74 20 66 72 6f 6d 20 43 20 48 m-C-Header-File">Import.from.C.H
3dc0 65 61 64 65 72 20 46 69 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 eader.File</a></li>.............
3de0 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 4d 69 78 69 6e 67 2d 4f 62 6a 65 63 74 2d 46 69 6c 65 <li><a.href="#Mixing-Object-File
3e00 73 22 3e 4d 69 78 69 6e 67 20 4f 62 6a 65 63 74 20 46 69 6c 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a s">Mixing.Object.Files</a></li>.
3e20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 54 65 72 6d 69 6e ............<li><a.href="#Termin
3e40 61 6c 22 3e 54 65 72 6d 69 6e 61 6c 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 2f al">Terminal</a></li>.........</
3e60 75 6c 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 54 ul></li>.........<li><a.href="#T
3e80 61 72 67 65 74 73 22 3e 54 61 72 67 65 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 argets">Targets</a></li>........
3ea0 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 53 74 79 6c 65 2d 47 75 69 64 65 22 3e 53 74 79 6c .<li><a.href="#Style-Guide">Styl
3ec0 65 20 47 75 69 64 65 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 e.Guide</a>.........<ul>........
3ee0 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 57 68 69 74 65 73 70 61 63 65 22 3e 57 .....<li><a.href="#Whitespace">W
3f00 68 69 74 65 73 70 61 63 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c hitespace</a></li>.............<
3f20 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 4e 61 6d 65 73 22 3e 4e 61 6d 65 73 3c 2f 61 3e 3c 2f 6c li><a.href="#Names">Names</a></l
3f40 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 45 78 61 i>.............<li><a.href="#Exa
3f60 6d 70 6c 65 73 22 3e 45 78 61 6d 70 6c 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 mples">Examples</a></li>........
3f80 20 3c 2f 75 6c 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d .</ul></li>.........<li><a.href=
3fa0 22 23 53 6f 75 72 63 65 2d 45 6e 63 6f 64 69 6e 67 22 3e 53 6f 75 72 63 65 20 45 6e 63 6f 64 69 "#Source-Encoding">Source.Encodi
3fc0 6e 67 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d ng</a></li>.........<li><a.href=
3fe0 22 23 47 72 61 6d 6d 61 72 22 3e 47 72 61 6d 6d 61 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 "#Grammar">Grammar</a></li>.....
4000 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 5a 65 6e 22 3e 5a 65 6e 3c 2f 61 3e 3c 2f ....<li><a.href="#Zen">Zen</a></
4020 6c 69 3e 0a 20 20 20 20 3c 2f 75 6c 3e 0a 0a 20 20 20 20 3c 2f 64 69 76 3e 0a 20 20 20 20 3c 64 li>.....</ul>......</div>.....<d
4040 69 76 20 69 64 3d 22 63 6f 6e 74 65 6e 74 73 22 3e 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 iv.id="contents">.......<h1.id="
4060 49 6e 74 72 6f 64 75 63 74 69 6f 6e 22 3e 49 6e 74 72 6f 64 75 63 74 69 6f 6e 3c 2f 68 31 3e 0a Introduction">Introduction</h1>.
4080 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 5a 69 67 20 69 73 20 61 6e 20 6f 70 65 6e 2d .......<p>.......Zig.is.an.open-
40a0 73 6f 75 72 63 65 20 70 72 6f 67 72 61 6d 6d 69 6e 67 20 6c 61 6e 67 75 61 67 65 20 64 65 73 69 source.programming.language.desi
40c0 67 6e 65 64 20 66 6f 72 20 3c 73 74 72 6f 6e 67 3e 72 6f 62 75 73 74 6e 65 73 73 3c 2f 73 74 72 gned.for.<strong>robustness</str
40e0 6f 6e 67 3e 2c 0a 20 20 20 20 20 20 3c 73 74 72 6f 6e 67 3e 6f 70 74 69 6d 61 6c 69 74 79 3c 2f ong>,.......<strong>optimality</
4100 73 74 72 6f 6e 67 3e 2c 20 61 6e 64 20 3c 73 74 72 6f 6e 67 3e 63 6c 61 72 69 74 79 3c 2f 73 74 strong>,.and.<strong>clarity</st
4120 72 6f 6e 67 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 rong>........</p>.......<ul>....
4140 20 20 20 20 20 3c 6c 69 3e 3c 73 74 72 6f 6e 67 3e 52 6f 62 75 73 74 3c 2f 73 74 72 6f 6e 67 3e .....<li><strong>Robust</strong>
4160 20 2d 20 62 65 68 61 76 69 6f 72 20 69 73 20 63 6f 72 72 65 63 74 20 65 76 65 6e 20 66 6f 72 20 .-.behavior.is.correct.even.for.
4180 65 64 67 65 20 63 61 73 65 73 20 73 75 63 68 20 61 73 20 6f 75 74 20 6f 66 20 6d 65 6d 6f 72 79 edge.cases.such.as.out.of.memory
41a0 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 73 74 72 6f 6e 67 3e 4f 70 74 69 6d .</li>.........<li><strong>Optim
41c0 61 6c 3c 2f 73 74 72 6f 6e 67 3e 20 2d 20 77 72 69 74 65 20 70 72 6f 67 72 61 6d 73 20 74 68 65 al</strong>.-.write.programs.the
41e0 20 62 65 73 74 20 77 61 79 20 74 68 65 79 20 63 61 6e 20 62 65 68 61 76 65 20 61 6e 64 20 70 65 .best.way.they.can.behave.and.pe
4200 72 66 6f 72 6d 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 73 74 72 6f 6e 67 3e rform.</li>.........<li><strong>
4220 43 6c 65 61 72 3c 2f 73 74 72 6f 6e 67 3e 20 2d 20 70 72 65 63 69 73 65 6c 79 20 63 6f 6d 6d 75 Clear</strong>.-.precisely.commu
4240 6e 69 63 61 74 65 20 79 6f 75 72 20 69 6e 74 65 6e 74 20 74 6f 20 74 68 65 20 63 6f 6d 70 69 6c nicate.your.intent.to.the.compil
4260 65 72 20 61 6e 64 20 6f 74 68 65 72 20 70 72 6f 67 72 61 6d 6d 65 72 73 2e 20 54 68 65 20 6c 61 er.and.other.programmers..The.la
4280 6e 67 75 61 67 65 20 69 6d 70 6f 73 65 73 20 61 20 6c 6f 77 20 6f 76 65 72 68 65 61 64 20 74 6f nguage.imposes.a.low.overhead.to
42a0 20 72 65 61 64 69 6e 67 20 63 6f 64 65 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a .reading.code.</li>.......</ul>.
42c0 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4f 66 74 65 6e 20 74 68 65 20 6d 6f 73 74 20 65 ......<p>.......Often.the.most.e
42e0 66 66 69 63 69 65 6e 74 20 77 61 79 20 74 6f 20 6c 65 61 72 6e 20 73 6f 6d 65 74 68 69 6e 67 20 fficient.way.to.learn.something.
4300 6e 65 77 20 69 73 20 74 6f 20 73 65 65 20 65 78 61 6d 70 6c 65 73 2c 20 73 6f 0a 20 20 20 20 20 new.is.to.see.examples,.so......
4320 20 74 68 69 73 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 73 68 6f 77 73 20 68 6f 77 20 74 6f .this.documentation.shows.how.to
4340 20 75 73 65 20 65 61 63 68 20 6f 66 20 5a 69 67 27 73 20 66 65 61 74 75 72 65 73 2e 20 49 74 20 .use.each.of.Zig's.features..It.
4360 69 73 0a 20 20 20 20 20 20 61 6c 6c 20 6f 6e 20 6f 6e 65 20 70 61 67 65 20 73 6f 20 79 6f 75 20 is.......all.on.one.page.so.you.
4380 63 61 6e 20 73 65 61 72 63 68 20 77 69 74 68 20 79 6f 75 72 20 62 72 6f 77 73 65 72 27 73 20 73 can.search.with.your.browser's.s
43a0 65 61 72 63 68 20 74 6f 6f 6c 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e earch.tool........</p>.......<p>
43c0 0a 20 20 20 20 20 20 54 68 65 20 63 6f 64 65 20 73 61 6d 70 6c 65 73 20 69 6e 20 74 68 69 73 20 .......The.code.samples.in.this.
43e0 64 6f 63 75 6d 65 6e 74 20 61 72 65 20 63 6f 6d 70 69 6c 65 64 20 61 6e 64 20 74 65 73 74 65 64 document.are.compiled.and.tested
4400 20 61 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 6d 61 69 6e 20 74 65 73 74 20 73 75 69 74 65 20 .as.part.of.the.main.test.suite.
4420 6f 66 20 5a 69 67 2e 0a 20 20 20 20 20 20 54 68 69 73 20 48 54 4d 4c 20 64 6f 63 75 6d 65 6e 74 of.Zig........This.HTML.document
4440 20 64 65 70 65 6e 64 73 20 6f 6e 20 6e 6f 20 65 78 74 65 72 6e 61 6c 20 66 69 6c 65 73 2c 20 73 .depends.on.no.external.files,.s
4460 6f 20 79 6f 75 20 63 61 6e 20 75 73 65 20 69 74 20 6f 66 66 6c 69 6e 65 2e 0a 20 20 20 20 20 20 o.you.can.use.it.offline........
4480 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 48 65 6c 6c 6f 2d </p>..............<h1.id="Hello-
44a0 57 6f 72 6c 64 22 3e 48 65 6c 6c 6f 20 57 6f 72 6c 64 3c 2f 68 31 3e 0a 0a 0a 20 20 20 20 20 20 World">Hello.World</h1>.........
44c0 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 68 65 6c 6c 6f 2e 7a 69 67 3c 2f 70 3e 3c 70 72 <p.class="file">hello.zig</p><pr
44e0 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 73 74 64 20 3d 20 e><code.class="zig">const.std.=.
4500 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 3b 0a 0a 70 75 62 20 66 @import(&quot;std&quot;);..pub.f
4520 6e 20 6d 61 69 6e 28 29 20 21 76 6f 69 64 20 7b 0a 20 20 20 20 2f 2f 20 49 66 20 74 68 69 73 20 n.main().!void.{.....//.If.this.
4540 70 72 6f 67 72 61 6d 20 69 73 20 72 75 6e 20 77 69 74 68 6f 75 74 20 73 74 64 6f 75 74 20 61 74 program.is.run.without.stdout.at
4560 74 61 63 68 65 64 2c 20 65 78 69 74 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72 2e 0a 20 20 20 20 tached,.exit.with.an.error......
4580 76 61 72 20 73 74 64 6f 75 74 5f 66 69 6c 65 20 3d 20 74 72 79 20 73 74 64 2e 69 6f 2e 67 65 74 var.stdout_file.=.try.std.io.get
45a0 53 74 64 4f 75 74 28 29 3b 0a 20 20 20 20 2f 2f 20 49 66 20 74 68 69 73 20 70 72 6f 67 72 61 6d StdOut();.....//.If.this.program
45c0 20 65 6e 63 6f 75 6e 74 65 72 73 20 70 69 70 65 20 66 61 69 6c 75 72 65 20 77 68 65 6e 20 70 72 .encounters.pipe.failure.when.pr
45e0 69 6e 74 69 6e 67 20 74 6f 20 73 74 64 6f 75 74 2c 20 65 78 69 74 0a 20 20 20 20 2f 2f 20 77 69 inting.to.stdout,.exit.....//.wi
4600 74 68 20 61 6e 20 65 72 72 6f 72 2e 0a 20 20 20 20 74 72 79 20 73 74 64 6f 75 74 5f 66 69 6c 65 th.an.error......try.stdout_file
4620 2e 77 72 69 74 65 28 26 71 75 6f 74 3b 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 5c 6e 26 71 75 6f .write(&quot;Hello,.world!\n&quo
4640 74 3b 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c t;);.}</code></pre><pre><code.cl
4660 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 65 78 65 20 68 65 6c 6c ass="shell">$.zig.build-exe.hell
4680 6f 2e 7a 69 67 0a 24 20 2e 2f 68 65 6c 6c 6f 0a 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 0a 3c 2f o.zig.$../hello.Hello,.world!.</
46a0 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 55 73 75 code></pre>........<p>.......Usu
46c0 61 6c 6c 79 20 79 6f 75 20 64 6f 6e 27 74 20 77 61 6e 74 20 74 6f 20 77 72 69 74 65 20 74 6f 20 ally.you.don't.want.to.write.to.
46e0 73 74 64 6f 75 74 2e 20 59 6f 75 20 77 61 6e 74 20 74 6f 20 77 72 69 74 65 20 74 6f 20 73 74 64 stdout..You.want.to.write.to.std
4700 65 72 72 2e 20 41 6e 64 20 79 6f 75 0a 20 20 20 20 20 20 64 6f 6e 27 74 20 63 61 72 65 20 69 66 err..And.you.......don't.care.if
4720 20 69 74 20 66 61 69 6c 73 2e 20 49 74 27 73 20 6d 6f 72 65 20 6c 69 6b 65 20 61 20 3c 65 6d 3e .it.fails..It's.more.like.a.<em>
4740 77 61 72 6e 69 6e 67 20 6d 65 73 73 61 67 65 3c 2f 65 6d 3e 20 74 68 61 74 20 79 6f 75 20 77 61 warning.message</em>.that.you.wa
4760 6e 74 0a 20 20 20 20 20 20 74 6f 20 65 6d 69 74 2e 20 46 6f 72 20 74 68 61 74 20 79 6f 75 20 63 nt.......to.emit..For.that.you.c
4780 61 6e 20 75 73 65 20 61 20 73 69 6d 70 6c 65 72 20 41 50 49 3a 0a 20 20 20 20 20 20 3c 2f 70 3e an.use.a.simpler.API:.......</p>
47a0 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 68 65 6c 6c 6f 2e 7a 69 67 .......<p.class="file">hello.zig
47c0 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 </p><pre><code.class="zig">const
47e0 20 77 61 72 6e 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 .warn.=.@import(&quot;std&quot;)
4800 2e 64 65 62 75 67 2e 77 61 72 6e 3b 0a 0a 70 75 62 20 66 6e 20 6d 61 69 6e 28 29 20 76 6f 69 64 .debug.warn;..pub.fn.main().void
4820 20 7b 0a 20 20 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 5c .{.....warn(&quot;Hello,.world!\
4840 6e 26 71 75 6f 74 3b 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f n&quot;);.}</code></pre><pre><co
4860 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 65 78 65 de.class="shell">$.zig.build-exe
4880 20 68 65 6c 6c 6f 2e 7a 69 67 0a 24 20 2e 2f 68 65 6c 6c 6f 0a 48 65 6c 6c 6f 2c 20 77 6f 72 6c .hello.zig.$../hello.Hello,.worl
48a0 64 21 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 d!.</code></pre>........<p>.....
48c0 20 20 4e 6f 74 65 20 74 68 61 74 20 77 65 20 61 6c 73 6f 20 6c 65 66 74 20 6f 66 66 20 74 68 65 ..Note.that.we.also.left.off.the
48e0 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 21 3c 2f 63 6f 64 65 3e 20 66 72 6f 6d .<code.class="zig">!</code>.from
4900 20 74 68 65 20 72 65 74 75 72 6e 20 74 79 70 65 2e 0a 20 20 20 20 20 20 49 6e 20 5a 69 67 2c 20 .the.return.type........In.Zig,.
4920 69 66 20 79 6f 75 72 20 6d 61 69 6e 20 66 75 6e 63 74 69 6f 6e 20 63 61 6e 6e 6f 74 20 66 61 69 if.your.main.function.cannot.fai
4940 6c 2c 20 79 6f 75 20 6d 75 73 74 20 75 73 65 20 74 68 65 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d l,.you.must.use.the.<code.class=
4960 22 7a 69 67 22 3e 76 6f 69 64 3c 2f 63 6f 64 65 3e 20 72 65 74 75 72 6e 20 74 79 70 65 2e 0a 20 "zig">void</code>.return.type...
4980 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e .....</p>.......<p>See.also:</p>
49a0 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 56 61 6c 75 65 73 22 3e 56 61 6c 75 65 <ul>.<li><a.href="#Values">Value
49c0 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6d 70 6f 72 74 22 s</a></li>.<li><a.href="#import"
49e0 3e 40 69 6d 70 6f 72 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 >@import</a></li>.<li><a.href="#
4a00 45 72 72 6f 72 73 22 3e 45 72 72 6f 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 Errors">Errors</a></li>.<li><a.h
4a20 72 65 66 3d 22 23 52 6f 6f 74 2d 53 6f 75 72 63 65 2d 46 69 6c 65 22 3e 52 6f 6f 74 20 53 6f 75 ref="#Root-Source-File">Root.Sou
4a40 72 63 65 20 46 69 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a rce.File</a></li>.</ul>.........
4a60 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 56 61 6c 75 65 73 22 3e 56 61 6c 75 65 73 3c 2f 68 31 ......<h1.id="Values">Values</h1
4a80 3e 0a 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 76 61 6c 75 65 73 2e >........<p.class="file">values.
4aa0 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f zig</p><pre><code.class="zig">co
4ac0 6e 73 74 20 73 74 64 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 nst.std.=.@import(&quot;std&quot
4ae0 3b 29 3b 0a 63 6f 6e 73 74 20 77 61 72 6e 20 3d 20 73 74 64 2e 64 65 62 75 67 2e 77 61 72 6e 3b ;);.const.warn.=.std.debug.warn;
4b00 0a 63 6f 6e 73 74 20 6f 73 20 3d 20 73 74 64 2e 6f 73 3b 0a 63 6f 6e 73 74 20 61 73 73 65 72 74 .const.os.=.std.os;.const.assert
4b20 20 3d 20 73 74 64 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 70 75 62 20 66 6e 20 6d 61 69 .=.std.debug.assert;..pub.fn.mai
4b40 6e 28 29 20 76 6f 69 64 20 7b 0a 20 20 20 20 2f 2f 20 69 6e 74 65 67 65 72 73 0a 20 20 20 20 63 n().void.{.....//.integers.....c
4b60 6f 6e 73 74 20 6f 6e 65 5f 70 6c 75 73 5f 6f 6e 65 3a 20 69 33 32 20 3d 20 31 20 2b 20 31 3b 0a onst.one_plus_one:.i32.=.1.+.1;.
4b80 20 20 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 31 20 2b 20 31 20 3d 20 7b 7d 5c 6e 26 71 75 6f 74 ....warn(&quot;1.+.1.=.{}\n&quot
4ba0 3b 2c 20 6f 6e 65 5f 70 6c 75 73 5f 6f 6e 65 29 3b 0a 0a 20 20 20 20 2f 2f 20 66 6c 6f 61 74 73 ;,.one_plus_one);......//.floats
4bc0 0a 20 20 20 20 63 6f 6e 73 74 20 73 65 76 65 6e 5f 64 69 76 5f 74 68 72 65 65 3a 20 66 33 32 20 .....const.seven_div_three:.f32.
4be0 3d 20 37 2e 30 20 2f 20 33 2e 30 3b 0a 20 20 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 37 2e 30 20 =.7.0./.3.0;.....warn(&quot;7.0.
4c00 2f 20 33 2e 30 20 3d 20 7b 7d 5c 6e 26 71 75 6f 74 3b 2c 20 73 65 76 65 6e 5f 64 69 76 5f 74 68 /.3.0.=.{}\n&quot;,.seven_div_th
4c20 72 65 65 29 3b 0a 0a 20 20 20 20 2f 2f 20 62 6f 6f 6c 65 61 6e 0a 20 20 20 20 77 61 72 6e 28 26 ree);......//.boolean.....warn(&
4c40 71 75 6f 74 3b 7b 7d 5c 6e 7b 7d 5c 6e 7b 7d 5c 6e 26 71 75 6f 74 3b 2c 0a 20 20 20 20 20 20 20 quot;{}\n{}\n{}\n&quot;,........
4c60 20 74 72 75 65 20 61 6e 64 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 20 20 74 72 75 65 20 6f 72 .true.and.false,.........true.or
4c80 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 20 20 21 74 72 75 65 29 3b 0a 20 20 20 20 0a 20 20 20 .false,.........!true);.........
4ca0 20 2f 2f 20 6e 75 6c 6c 61 62 6c 65 0a 20 20 20 20 76 61 72 20 6e 75 6c 6c 61 62 6c 65 5f 76 61 .//.nullable.....var.nullable_va
4cc0 6c 75 65 3a 20 3f 5b 5d 63 6f 6e 73 74 20 75 38 20 3d 20 6e 75 6c 6c 3b 0a 20 20 20 20 61 73 73 lue:.?[]const.u8.=.null;.....ass
4ce0 65 72 74 28 6e 75 6c 6c 61 62 6c 65 5f 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 3b 0a 0a 20 20 ert(nullable_value.==.null);....
4d00 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 5c 6e 6e 75 6c 6c 61 62 6c 65 20 31 5c 6e 74 79 70 65 3a ..warn(&quot;\nnullable.1\ntype:
4d20 20 7b 7d 5c 6e 76 61 6c 75 65 3a 20 7b 7d 5c 6e 26 71 75 6f 74 3b 2c 0a 20 20 20 20 20 20 20 20 .{}\nvalue:.{}\n&quot;,.........
4d40 40 74 79 70 65 4e 61 6d 65 28 40 74 79 70 65 4f 66 28 6e 75 6c 6c 61 62 6c 65 5f 76 61 6c 75 65 @typeName(@typeOf(nullable_value
4d60 29 29 2c 20 6e 75 6c 6c 61 62 6c 65 5f 76 61 6c 75 65 29 3b 0a 0a 20 20 20 20 6e 75 6c 6c 61 62 )),.nullable_value);......nullab
4d80 6c 65 5f 76 61 6c 75 65 20 3d 20 26 71 75 6f 74 3b 68 69 26 71 75 6f 74 3b 3b 0a 20 20 20 20 61 le_value.=.&quot;hi&quot;;.....a
4da0 73 73 65 72 74 28 6e 75 6c 6c 61 62 6c 65 5f 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 3b 0a 0a ssert(nullable_value.!=.null);..
4dc0 20 20 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 5c 6e 6e 75 6c 6c 61 62 6c 65 20 32 5c 6e 74 79 70 ....warn(&quot;\nnullable.2\ntyp
4de0 65 3a 20 7b 7d 5c 6e 76 61 6c 75 65 3a 20 7b 7d 5c 6e 26 71 75 6f 74 3b 2c 0a 20 20 20 20 20 20 e:.{}\nvalue:.{}\n&quot;,.......
4e00 20 20 40 74 79 70 65 4e 61 6d 65 28 40 74 79 70 65 4f 66 28 6e 75 6c 6c 61 62 6c 65 5f 76 61 6c ..@typeName(@typeOf(nullable_val
4e20 75 65 29 29 2c 20 6e 75 6c 6c 61 62 6c 65 5f 76 61 6c 75 65 29 3b 0a 0a 20 20 20 20 2f 2f 20 65 ue)),.nullable_value);......//.e
4e40 72 72 6f 72 20 75 6e 69 6f 6e 0a 20 20 20 20 76 61 72 20 6e 75 6d 62 65 72 5f 6f 72 5f 65 72 72 rror.union.....var.number_or_err
4e60 6f 72 3a 20 65 72 72 6f 72 21 69 33 32 20 3d 20 65 72 72 6f 72 2e 41 72 67 4e 6f 74 46 6f 75 6e or:.error!i32.=.error.ArgNotFoun
4e80 64 3b 0a 0a 20 20 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 5c 6e 65 72 72 6f 72 20 75 6e 69 6f 6e d;......warn(&quot;\nerror.union
4ea0 20 31 5c 6e 74 79 70 65 3a 20 7b 7d 5c 6e 76 61 6c 75 65 3a 20 7b 7d 5c 6e 26 71 75 6f 74 3b 2c .1\ntype:.{}\nvalue:.{}\n&quot;,
4ec0 0a 20 20 20 20 20 20 20 20 40 74 79 70 65 4e 61 6d 65 28 40 74 79 70 65 4f 66 28 6e 75 6d 62 65 .........@typeName(@typeOf(numbe
4ee0 72 5f 6f 72 5f 65 72 72 6f 72 29 29 2c 20 6e 75 6d 62 65 72 5f 6f 72 5f 65 72 72 6f 72 29 3b 0a r_or_error)),.number_or_error);.
4f00 20 0a 20 20 20 20 6e 75 6d 62 65 72 5f 6f 72 5f 65 72 72 6f 72 20 3d 20 31 32 33 34 3b 0a 0a 20 ......number_or_error.=.1234;...
4f20 20 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 5c 6e 65 72 72 6f 72 20 75 6e 69 6f 6e 20 32 5c 6e 74 ...warn(&quot;\nerror.union.2\nt
4f40 79 70 65 3a 20 7b 7d 5c 6e 76 61 6c 75 65 3a 20 7b 7d 5c 6e 26 71 75 6f 74 3b 2c 0a 20 20 20 20 ype:.{}\nvalue:.{}\n&quot;,.....
4f60 20 20 20 20 40 74 79 70 65 4e 61 6d 65 28 40 74 79 70 65 4f 66 28 6e 75 6d 62 65 72 5f 6f 72 5f ....@typeName(@typeOf(number_or_
4f80 65 72 72 6f 72 29 29 2c 20 6e 75 6d 62 65 72 5f 6f 72 5f 65 72 72 6f 72 29 3b 0a 7d 3c 2f 63 6f error)),.number_or_error);.}</co
4fa0 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c de></pre><pre><code.class="shell
4fc0 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 65 78 65 20 76 61 6c 75 65 73 2e 7a 69 67 0a 24 20 2e ">$.zig.build-exe.values.zig.$..
4fe0 2f 76 61 6c 75 65 73 0a 31 20 2b 20 31 20 3d 20 32 0a 37 2e 30 20 2f 20 33 2e 30 20 3d 20 32 2e /values.1.+.1.=.2.7.0./.3.0.=.2.
5000 33 33 33 33 33 33 32 35 0a 66 61 6c 73 65 0a 74 72 75 65 0a 66 61 6c 73 65 0a 0a 6e 75 6c 6c 61 33333325.false.true.false..nulla
5020 62 6c 65 20 31 0a 74 79 70 65 3a 20 3f 5b 5d 63 6f 6e 73 74 20 75 38 0a 76 61 6c 75 65 3a 20 6e ble.1.type:.?[]const.u8.value:.n
5040 75 6c 6c 0a 0a 6e 75 6c 6c 61 62 6c 65 20 32 0a 74 79 70 65 3a 20 3f 5b 5d 63 6f 6e 73 74 20 75 ull..nullable.2.type:.?[]const.u
5060 38 0a 76 61 6c 75 65 3a 20 68 69 0a 0a 65 72 72 6f 72 20 75 6e 69 6f 6e 20 31 0a 74 79 70 65 3a 8.value:.hi..error.union.1.type:
5080 20 65 72 72 6f 72 21 69 33 32 0a 76 61 6c 75 65 3a 20 65 72 72 6f 72 2e 41 72 67 4e 6f 74 46 6f .error!i32.value:.error.ArgNotFo
50a0 75 6e 64 0a 0a 65 72 72 6f 72 20 75 6e 69 6f 6e 20 32 0a 74 79 70 65 3a 20 65 72 72 6f 72 21 69 und..error.union.2.type:.error!i
50c0 33 32 0a 76 61 6c 75 65 3a 20 31 32 33 34 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 32.value:.1234.</code></pre>....
50e0 20 20 20 20 3c 68 32 20 69 64 3d 22 50 72 69 6d 69 74 69 76 65 2d 54 79 70 65 73 22 3e 50 72 69 ....<h2.id="Primitive-Types">Pri
5100 6d 69 74 69 76 65 20 54 79 70 65 73 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 64 69 76 20 63 6c mitive.Types</h2>........<div.cl
5120 61 73 73 3d 22 74 61 62 6c 65 2d 77 72 61 70 70 65 72 22 3e 0a 20 20 20 20 20 20 3c 74 61 62 6c ass="table-wrapper">.......<tabl
5140 65 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 68 3e 0a 20 e>.........<tr>...........<th>..
5160 20 20 20 20 20 20 20 20 20 20 20 4e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 68 3e 0a ...........Name...........</th>.
5180 20 20 20 20 20 20 20 20 20 20 3c 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 20 45 71 75 ..........<th>.............C.Equ
51a0 69 76 61 6c 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 68 3e 0a 20 20 20 20 20 20 20 20 ivalent...........</th>.........
51c0 20 20 3c 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 65 73 63 72 69 70 74 69 6f 6e 0a 20 ..<th>.............Description..
51e0 20 20 20 20 20 20 20 20 20 3c 2f 74 68 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 .........</th>.........</tr>....
5200 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 32 .....<tr>...........<td><code>i2
5220 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 </code></td>...........<td><code
5240 3e 28 6e 6f 6e 65 29 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 >(none)</code></td>...........<t
5260 64 3e 73 69 67 6e 65 64 20 32 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 d>signed.2-bit.integer</td>.....
5280 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 ....</tr>.........<tr>..........
52a0 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 32 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 .<td><code>u2</code></td>.......
52c0 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 28 6e 6f 6e 65 29 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e ....<td><code>(none)</code></td>
52e0 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 75 6e 73 69 67 6e 65 64 20 32 2d 62 69 74 20 69 6e ...........<td>unsigned.2-bit.in
5300 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 teger</td>.........</tr>........
5320 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 33 3c 2f 63 6f .<tr>...........<td><code>i3</co
5340 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 28 6e 6f de></td>...........<td><code>(no
5360 6e 65 29 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 73 69 ne)</code></td>...........<td>si
5380 67 6e 65 64 20 33 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 gned.3-bit.integer</td>.........
53a0 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 </tr>.........<tr>...........<td
53c0 3e 3c 63 6f 64 65 3e 75 33 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 ><code>u3</code></td>...........
53e0 3c 74 64 3e 3c 63 6f 64 65 3e 28 6e 6f 6e 65 29 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 <td><code>(none)</code></td>....
5400 20 20 20 20 20 20 20 3c 74 64 3e 75 6e 73 69 67 6e 65 64 20 33 2d 62 69 74 20 69 6e 74 65 67 65 .......<td>unsigned.3-bit.intege
5420 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 r</td>.........</tr>.........<tr
5440 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 34 3c 2f 63 6f 64 65 3e 3c >...........<td><code>i4</code><
5460 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 28 6e 6f 6e 65 29 3c /td>...........<td><code>(none)<
5480 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 73 69 67 6e 65 64 /code></td>...........<td>signed
54a0 20 34 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 .4-bit.integer</td>.........</tr
54c0 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f >.........<tr>...........<td><co
54e0 64 65 3e 75 34 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e de>u4</code></td>...........<td>
5500 3c 63 6f 64 65 3e 28 6e 6f 6e 65 29 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 <code>(none)</code></td>........
5520 20 20 20 3c 74 64 3e 75 6e 73 69 67 6e 65 64 20 34 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 ...<td>unsigned.4-bit.integer</t
5540 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 d>.........</tr>.........<tr>...
5560 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 35 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e ........<td><code>i5</code></td>
5580 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 28 6e 6f 6e 65 29 3c 2f 63 6f 64 ...........<td><code>(none)</cod
55a0 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 73 69 67 6e 65 64 20 35 2d 62 e></td>...........<td>signed.5-b
55c0 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 it.integer</td>.........</tr>...
55e0 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 ......<tr>...........<td><code>u
5600 35 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 5</code></td>...........<td><cod
5620 65 3e 28 6e 6f 6e 65 29 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c e>(none)</code></td>...........<
5640 74 64 3e 75 6e 73 69 67 6e 65 64 20 35 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 td>unsigned.5-bit.integer</td>..
5660 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 .......</tr>.........<tr>.......
5680 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 36 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 ....<td><code>i6</code></td>....
56a0 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 28 6e 6f 6e 65 29 3c 2f 63 6f 64 65 3e 3c 2f .......<td><code>(none)</code></
56c0 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 73 69 67 6e 65 64 20 36 2d 62 69 74 20 69 td>...........<td>signed.6-bit.i
56e0 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 nteger</td>.........</tr>.......
5700 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 36 3c 2f 63 ..<tr>...........<td><code>u6</c
5720 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 28 6e ode></td>...........<td><code>(n
5740 6f 6e 65 29 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 75 one)</code></td>...........<td>u
5760 6e 73 69 67 6e 65 64 20 36 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 nsigned.6-bit.integer</td>......
5780 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 ...</tr>.........<tr>...........
57a0 3c 74 64 3e 3c 63 6f 64 65 3e 69 37 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 <td><code>i7</code></td>........
57c0 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 28 6e 6f 6e 65 29 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a ...<td><code>(none)</code></td>.
57e0 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 73 69 67 6e 65 64 20 37 2d 62 69 74 20 69 6e 74 65 67 ..........<td>signed.7-bit.integ
5800 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 er</td>.........</tr>.........<t
5820 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 37 3c 2f 63 6f 64 65 3e r>...........<td><code>u7</code>
5840 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 28 6e 6f 6e 65 29 </td>...........<td><code>(none)
5860 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 75 6e 73 69 67 </code></td>...........<td>unsig
5880 6e 65 64 20 37 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c ned.7-bit.integer</td>.........<
58a0 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e /tr>.........<tr>...........<td>
58c0 3c 63 6f 64 65 3e 69 38 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c <code>i8</code></td>...........<
58e0 74 64 3e 3c 63 6f 64 65 3e 69 6e 74 38 5f 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 td><code>int8_t</code></td>.....
5900 20 20 20 20 20 20 3c 74 64 3e 73 69 67 6e 65 64 20 38 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f ......<td>signed.8-bit.integer</
5920 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 td>.........</tr>.........<tr>..
5940 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 38 3c 2f 63 6f 64 65 3e 3c 2f 74 64 .........<td><code>u8</code></td
5960 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 69 6e 74 38 5f 74 3c 2f 63 >...........<td><code>uint8_t</c
5980 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 75 6e 73 69 67 6e 65 64 ode></td>...........<td>unsigned
59a0 20 38 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 .8-bit.integer</td>.........</tr
59c0 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f >.........<tr>...........<td><co
59e0 64 65 3e 69 31 36 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 de>i16</code></td>...........<td
5a00 3e 3c 63 6f 64 65 3e 69 6e 74 31 36 5f 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 ><code>int16_t</code></td>......
5a20 20 20 20 20 20 3c 74 64 3e 73 69 67 6e 65 64 20 31 36 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f .....<td>signed.16-bit.integer</
5a40 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 td>.........</tr>.........<tr>..
5a60 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 31 36 3c 2f 63 6f 64 65 3e 3c 2f 74 .........<td><code>u16</code></t
5a80 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 69 6e 74 31 36 5f 74 3c d>...........<td><code>uint16_t<
5aa0 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 75 6e 73 69 67 6e /code></td>...........<td>unsign
5ac0 65 64 20 31 36 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c ed.16-bit.integer</td>.........<
5ae0 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e /tr>.........<tr>...........<td>
5b00 3c 63 6f 64 65 3e 69 33 32 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 <code>i32</code></td>...........
5b20 3c 74 64 3e 3c 63 6f 64 65 3e 69 6e 74 33 32 5f 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 <td><code>int32_t</code></td>...
5b40 20 20 20 20 20 20 20 20 3c 74 64 3e 73 69 67 6e 65 64 20 33 32 2d 62 69 74 20 69 6e 74 65 67 65 ........<td>signed.32-bit.intege
5b60 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 r</td>.........</tr>.........<tr
5b80 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 33 32 3c 2f 63 6f 64 65 3e >...........<td><code>u32</code>
5ba0 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 69 6e 74 33 32 </td>...........<td><code>uint32
5bc0 5f 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 75 6e 73 _t</code></td>...........<td>uns
5be0 69 67 6e 65 64 20 33 32 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 igned.32-bit.integer</td>.......
5c00 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c ..</tr>.........<tr>...........<
5c20 74 64 3e 3c 63 6f 64 65 3e 69 36 34 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 td><code>i64</code></td>........
5c40 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 6e 74 36 34 5f 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e ...<td><code>int64_t</code></td>
5c60 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 73 69 67 6e 65 64 20 36 34 2d 62 69 74 20 69 6e 74 ...........<td>signed.64-bit.int
5c80 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 eger</td>.........</tr>.........
5ca0 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 36 34 3c 2f 63 6f <tr>...........<td><code>u64</co
5cc0 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 69 6e de></td>...........<td><code>uin
5ce0 74 36 34 5f 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e t64_t</code></td>...........<td>
5d00 75 6e 73 69 67 6e 65 64 20 36 34 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 unsigned.64-bit.integer</td>....
5d20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 .....</tr>.........<tr>.........
5d40 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 31 32 38 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 ..<td><code>i128</code></td>....
5d60 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 5f 5f 69 6e 74 31 32 38 3c 2f 63 6f 64 65 3e .......<td><code>__int128</code>
5d80 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 73 69 67 6e 65 64 20 31 32 38 2d 62 </td>...........<td>signed.128-b
5da0 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 it.integer</td>.........</tr>...
5dc0 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 ......<tr>...........<td><code>u
5de0 31 32 38 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 128</code></td>...........<td><c
5e00 6f 64 65 3e 75 6e 73 69 67 6e 65 64 20 5f 5f 69 6e 74 31 32 38 3c 2f 63 6f 64 65 3e 3c 2f 74 64 ode>unsigned.__int128</code></td
5e20 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 75 6e 73 69 67 6e 65 64 20 31 32 38 2d 62 69 74 >...........<td>unsigned.128-bit
5e40 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 .integer</td>.........</tr>.....
5e60 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 73 69 ....<tr>...........<td><code>isi
5e80 7a 65 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f ze</code></td>...........<td><co
5ea0 64 65 3e 69 6e 74 70 74 72 5f 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 de>intptr_t</code></td>.........
5ec0 20 20 3c 74 64 3e 73 69 67 6e 65 64 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 64 20 69 6e 74 65 67 ..<td>signed.pointer.sized.integ
5ee0 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 er</td>.........</tr>.........<t
5f00 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 73 69 7a 65 3c 2f 63 6f r>...........<td><code>usize</co
5f20 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 69 6e de></td>...........<td><code>uin
5f40 74 70 74 72 5f 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 tptr_t</code></td>...........<td
5f60 3e 75 6e 73 69 67 6e 65 64 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 64 20 69 6e 74 65 67 65 72 3c >unsigned.pointer.sized.integer<
5f80 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 0a 20 20 20 20 20 20 20 20 3c 74 72 3e /td>.........</tr>..........<tr>
5fa0 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 63 5f 73 68 6f 72 74 3c 2f 63 6f ...........<td><code>c_short</co
5fc0 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 73 68 6f de></td>...........<td><code>sho
5fe0 72 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 66 6f 72 rt</code></td>...........<td>for
6000 20 41 42 49 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 43 3c 2f 74 64 3e 0a 20 .ABI.compatibility.with.C</td>..
6020 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 .......</tr>.........<tr>.......
6040 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 63 5f 75 73 68 6f 72 74 3c 2f 63 6f 64 65 3e 3c 2f 74 ....<td><code>c_ushort</code></t
6060 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 6e 73 69 67 6e 65 64 20 d>...........<td><code>unsigned.
6080 73 68 6f 72 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e short</code></td>...........<td>
60a0 66 6f 72 20 41 42 49 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 43 3c 2f 74 64 for.ABI.compatibility.with.C</td
60c0 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 >.........</tr>.........<tr>....
60e0 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 63 5f 69 6e 74 3c 2f 63 6f 64 65 3e 3c 2f 74 .......<td><code>c_int</code></t
6100 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 6e 74 3c 2f 63 6f 64 65 d>...........<td><code>int</code
6120 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 66 6f 72 20 41 42 49 20 63 6f 6d ></td>...........<td>for.ABI.com
6140 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 43 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c patibility.with.C</td>.........<
6160 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e /tr>.........<tr>...........<td>
6180 3c 63 6f 64 65 3e 63 5f 75 69 6e 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 <code>c_uint</code></td>........
61a0 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 6e 73 69 67 6e 65 64 20 69 6e 74 3c 2f 63 6f 64 65 3e ...<td><code>unsigned.int</code>
61c0 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 66 6f 72 20 41 42 49 20 63 6f 6d 70 </td>...........<td>for.ABI.comp
61e0 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 43 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f atibility.with.C</td>.........</
6200 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c tr>.........<tr>...........<td><
6220 63 6f 64 65 3e 63 5f 6c 6f 6e 67 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 code>c_long</code></td>.........
6240 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 6c 6f 6e 67 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 ..<td><code>long</code></td>....
6260 20 20 20 20 20 20 20 3c 74 64 3e 66 6f 72 20 41 42 49 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 .......<td>for.ABI.compatibility
6280 20 77 69 74 68 20 43 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 .with.C</td>.........</tr>......
62a0 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 63 5f 75 6c ...<tr>...........<td><code>c_ul
62c0 6f 6e 67 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 ong</code></td>...........<td><c
62e0 6f 64 65 3e 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 ode>unsigned.long</code></td>...
6300 20 20 20 20 20 20 20 20 3c 74 64 3e 66 6f 72 20 41 42 49 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 ........<td>for.ABI.compatibilit
6320 79 20 77 69 74 68 20 43 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 y.with.C</td>.........</tr>.....
6340 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 63 5f 6c ....<tr>...........<td><code>c_l
6360 6f 6e 67 6c 6f 6e 67 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 onglong</code></td>...........<t
6380 64 3e 3c 63 6f 64 65 3e 6c 6f 6e 67 20 6c 6f 6e 67 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 d><code>long.long</code></td>...
63a0 20 20 20 20 20 20 20 20 3c 74 64 3e 66 6f 72 20 41 42 49 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 ........<td>for.ABI.compatibilit
63c0 79 20 77 69 74 68 20 43 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 y.with.C</td>.........</tr>.....
63e0 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 63 5f 75 ....<tr>...........<td><code>c_u
6400 6c 6f 6e 67 6c 6f 6e 67 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c longlong</code></td>...........<
6420 74 64 3e 3c 63 6f 64 65 3e 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e 67 3c 2f 63 6f 64 td><code>unsigned.long.long</cod
6440 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 66 6f 72 20 41 42 49 20 63 6f e></td>...........<td>for.ABI.co
6460 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 43 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 mpatibility.with.C</td>.........
6480 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 </tr>.........<tr>...........<td
64a0 3e 3c 63 6f 64 65 3e 63 5f 6c 6f 6e 67 64 6f 75 62 6c 65 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a ><code>c_longdouble</code></td>.
64c0 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 6c 6f 6e 67 20 64 6f 75 62 6c 65 3c ..........<td><code>long.double<
64e0 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 66 6f 72 20 41 42 /code></td>...........<td>for.AB
6500 49 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 43 3c 2f 74 64 3e 0a 20 20 20 20 I.compatibility.with.C</td>.....
6520 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 ....</tr>.........<tr>..........
6540 20 3c 74 64 3e 3c 63 6f 64 65 3e 63 5f 76 6f 69 64 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 .<td><code>c_void</code></td>...
6560 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 76 6f 69 64 3c 2f 63 6f 64 65 3e 3c 2f 74 ........<td><code>void</code></t
6580 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 66 6f 72 20 41 42 49 20 63 6f 6d 70 61 74 69 d>...........<td>for.ABI.compati
65a0 62 69 6c 69 74 79 20 77 69 74 68 20 43 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e bility.with.C</td>.........</tr>
65c0 0a 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f ..........<tr>...........<td><co
65e0 64 65 3e 66 33 32 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 de>f32</code></td>...........<td
6600 3e 3c 63 6f 64 65 3e 66 6c 6f 61 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 ><code>float</code></td>........
6620 20 20 20 3c 74 64 3e 33 32 2d 62 69 74 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 28 32 33 ...<td>32-bit.floating.point.(23
6640 2d 62 69 74 20 6d 61 6e 74 69 73 73 61 29 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 -bit.mantissa)</td>.........</tr
6660 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f >.........<tr>...........<td><co
6680 64 65 3e 66 36 34 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 de>f64</code></td>...........<td
66a0 3e 3c 63 6f 64 65 3e 64 6f 75 62 6c 65 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 ><code>double</code></td>.......
66c0 20 20 20 20 3c 74 64 3e 36 34 2d 62 69 74 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 28 35 ....<td>64-bit.floating.point.(5
66e0 32 2d 62 69 74 20 6d 61 6e 74 69 73 73 61 29 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 2-bit.mantissa)</td>.........</t
6700 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 r>.........<tr>...........<td><c
6720 6f 64 65 3e 66 31 32 38 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c ode>f128</code></td>...........<
6740 74 64 3e 28 6e 6f 6e 65 29 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 31 32 38 td>(none)</td>...........<td>128
6760 2d 62 69 74 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 28 31 31 32 2d 62 69 74 20 6d 61 6e -bit.floating.point.(112-bit.man
6780 74 69 73 73 61 29 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 tissa)</td>.........</tr>.......
67a0 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 62 6f 6f 6c 3c ..<tr>...........<td><code>bool<
67c0 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e /code></td>...........<td><code>
67e0 62 6f 6f 6c 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c bool</code></td>...........<td><
6800 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f 64 65 3e 20 6f 72 20 3c 63 6f 64 65 3e 66 61 6c 73 65 3c code>true</code>.or.<code>false<
6820 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 /code></td>.........</tr>.......
6840 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 76 6f 69 64 3c ..<tr>...........<td><code>void<
6860 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 28 6e 6f 6e 65 29 /code></td>...........<td>(none)
6880 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 30 20 62 69 74 20 74 79 70 65 3c 2f </td>...........<td>0.bit.type</
68a0 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 td>.........</tr>.........<tr>..
68c0 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 6e 6f 72 65 74 75 72 6e 3c 2f 63 6f 64 .........<td><code>noreturn</cod
68e0 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 28 6e 6f 6e 65 29 3c 2f 74 64 e></td>...........<td>(none)</td
6900 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 74 68 65 20 74 79 70 65 20 6f 66 20 3c 63 6f 64 >...........<td>the.type.of.<cod
6920 65 3e 62 72 65 61 6b 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 3e 63 6f 6e 74 69 6e 75 65 3c 2f e>break</code>,.<code>continue</
6940 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 3e 72 65 74 75 72 6e 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 code>,.<code>return</code>,.<cod
6960 65 3e 75 6e 72 65 61 63 68 61 62 6c 65 3c 2f 63 6f 64 65 3e 2c 20 61 6e 64 20 3c 63 6f 64 65 3e e>unreachable</code>,.and.<code>
6980 77 68 69 6c 65 20 28 74 72 75 65 29 20 7b 7d 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 while.(true).{}</code></td>.....
69a0 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 ....</tr>.........<tr>..........
69c0 20 3c 74 64 3e 3c 63 6f 64 65 3e 74 79 70 65 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 .<td><code>type</code></td>.....
69e0 20 20 20 20 20 20 3c 74 64 3e 28 6e 6f 6e 65 29 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 ......<td>(none)</td>...........
6a00 3c 74 64 3e 74 68 65 20 74 79 70 65 20 6f 66 20 74 79 70 65 73 3c 2f 74 64 3e 0a 20 20 20 20 20 <td>the.type.of.types</td>......
6a20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 ...</tr>.........<tr>...........
6a40 3c 74 64 3e 3c 63 6f 64 65 3e 65 72 72 6f 72 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 <td><code>error</code></td>.....
6a60 20 20 20 20 20 20 3c 74 64 3e 28 6e 6f 6e 65 29 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 ......<td>(none)</td>...........
6a80 3c 74 64 3e 61 6e 20 65 72 72 6f 72 20 63 6f 64 65 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c <td>an.error.code</td>.........<
6aa0 2f 74 72 3e 0a 20 20 20 20 20 20 3c 2f 74 61 62 6c 65 3e 0a 20 20 20 20 20 20 3c 2f 64 69 76 3e /tr>.......</table>.......</div>
6ac0 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e .......<p>See.also:</p><ul>.<li>
6ae0 3c 61 20 68 72 65 66 3d 22 23 49 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e <a.href="#Integers">Integers</a>
6b00 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 61 74 73 22 3e 46 6c 6f 61 </li>.<li><a.href="#Floats">Floa
6b20 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 76 6f 69 64 22 3e ts</a></li>.<li><a.href="#void">
6b40 76 6f 69 64 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 45 72 72 6f void</a></li>.<li><a.href="#Erro
6b60 72 73 22 3e 45 72 72 6f 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 rs">Errors</a></li>.</ul>.......
6b80 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 50 72 69 6d 69 74 69 76 65 2d 56 61 6c 75 65 73 ........<h2.id="Primitive-Values
6ba0 22 3e 50 72 69 6d 69 74 69 76 65 20 56 61 6c 75 65 73 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c ">Primitive.Values</h2>........<
6bc0 64 69 76 20 63 6c 61 73 73 3d 22 74 61 62 6c 65 2d 77 72 61 70 70 65 72 22 3e 0a 20 20 20 20 20 div.class="table-wrapper">......
6be0 20 3c 74 61 62 6c 65 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 .<table>.........<tr>...........
6c00 3c 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 4e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 <th>.............Name...........
6c20 3c 2f 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 20 </th>...........<th>............
6c40 20 44 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 68 3e 0a 20 20 20 .Description...........</th>....
6c60 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 .....</tr>.........<tr>.........
6c80 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 3c 63 6f 64 ..<td><code>true</code>.and.<cod
6ca0 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 e>false</code></td>...........<t
6cc0 64 3e 3c 63 6f 64 65 3e 62 6f 6f 6c 3c 2f 63 6f 64 65 3e 20 76 61 6c 75 65 73 3c 2f 74 64 3e 0a d><code>bool</code>.values</td>.
6ce0 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 ........</tr>.........<tr>......
6d00 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 6e 75 6c 6c 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a .....<td><code>null</code></td>.
6d20 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 75 73 65 64 20 74 6f 20 73 65 74 20 61 20 6e 75 6c 6c ..........<td>used.to.set.a.null
6d40 61 62 6c 65 20 74 79 70 65 20 74 6f 20 3c 63 6f 64 65 3e 6e 75 6c 6c 3c 2f 63 6f 64 65 3e 3c 2f able.type.to.<code>null</code></
6d60 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 td>.........</tr>.........<tr>..
6d80 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 6e 64 65 66 69 6e 65 64 3c 2f 63 6f .........<td><code>undefined</co
6da0 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 75 73 65 64 20 74 6f 20 6c de></td>...........<td>used.to.l
6dc0 65 61 76 65 20 61 20 76 61 6c 75 65 20 75 6e 73 70 65 63 69 66 69 65 64 3c 2f 74 64 3e 0a 20 20 eave.a.value.unspecified</td>...
6de0 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 ......</tr>.........<tr>........
6e00 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 74 68 69 73 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 ...<td><code>this</code></td>...
6e20 20 20 20 20 20 20 20 20 3c 74 64 3e 72 65 66 65 72 73 20 74 6f 20 74 68 65 20 74 68 69 6e 67 20 ........<td>refers.to.the.thing.
6e40 69 6e 20 69 6d 6d 65 64 69 61 74 65 20 73 63 6f 70 65 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 in.immediate.scope</td>.........
6e60 3c 2f 74 72 3e 0a 20 20 20 20 20 20 3c 2f 74 61 62 6c 65 3e 0a 20 20 20 20 20 20 3c 2f 64 69 76 </tr>.......</table>.......</div
6e80 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 >.......<p>See.also:</p><ul>.<li
6ea0 3e 3c 61 20 68 72 65 66 3d 22 23 4e 75 6c 6c 61 62 6c 65 73 22 3e 4e 75 6c 6c 61 62 6c 65 73 3c ><a.href="#Nullables">Nullables<
6ec0 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 74 68 69 73 22 3e 74 68 69 /a></li>.<li><a.href="#this">thi
6ee0 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c s</a></li>.</ul>...............<
6f00 68 32 20 69 64 3d 22 53 74 72 69 6e 67 2d 4c 69 74 65 72 61 6c 73 22 3e 53 74 72 69 6e 67 20 4c h2.id="String-Literals">String.L
6f20 69 74 65 72 61 6c 73 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 iterals</h2>........<p.class="fi
6f40 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 le">test.zig</p><pre><code.class
6f60 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 ="zig">const.assert.=.@import(&q
6f80 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 63 6f 6e uot;std&quot;).debug.assert;.con
6fa0 73 74 20 6d 65 6d 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b st.mem.=.@import(&quot;std&quot;
6fc0 29 2e 6d 65 6d 3b 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 73 74 72 69 6e 67 20 6c 69 74 65 72 61 ).mem;..test.&quot;string.litera
6fe0 6c 73 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 2f 2f 20 49 6e 20 5a 69 67 20 61 20 73 74 72 69 6e ls&quot;.{.....//.In.Zig.a.strin
7000 67 20 6c 69 74 65 72 61 6c 20 69 73 20 61 6e 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 2e 0a g.literal.is.an.array.of.bytes..
7020 20 20 20 20 63 6f 6e 73 74 20 6e 6f 72 6d 61 6c 5f 62 79 74 65 73 20 3d 20 26 71 75 6f 74 3b 68 ....const.normal_bytes.=.&quot;h
7040 65 6c 6c 6f 26 71 75 6f 74 3b 3b 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 6e ello&quot;;.....assert(@typeOf(n
7060 6f 72 6d 61 6c 5f 62 79 74 65 73 29 20 3d 3d 20 5b 35 5d 75 38 29 3b 0a 20 20 20 20 61 73 73 65 ormal_bytes).==.[5]u8);.....asse
7080 72 74 28 6e 6f 72 6d 61 6c 5f 62 79 74 65 73 2e 6c 65 6e 20 3d 3d 20 35 29 3b 0a 20 20 20 20 61 rt(normal_bytes.len.==.5);.....a
70a0 73 73 65 72 74 28 6e 6f 72 6d 61 6c 5f 62 79 74 65 73 5b 31 5d 20 3d 3d 20 27 65 27 29 3b 0a 20 ssert(normal_bytes[1].==.'e');..
70c0 20 20 20 61 73 73 65 72 74 28 27 65 27 20 3d 3d 20 27 5c 78 36 35 27 29 3b 0a 20 20 20 20 61 73 ...assert('e'.==.'\x65');.....as
70e0 73 65 72 74 28 6d 65 6d 2e 65 71 6c 28 75 38 2c 20 26 71 75 6f 74 3b 68 65 6c 6c 6f 26 71 75 6f sert(mem.eql(u8,.&quot;hello&quo
7100 74 3b 2c 20 26 71 75 6f 74 3b 68 5c 78 36 35 6c 6c 6f 26 71 75 6f 74 3b 29 29 3b 0a 0a 20 20 20 t;,.&quot;h\x65llo&quot;));.....
7120 20 2f 2f 20 41 20 43 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 20 69 73 20 61 20 6e 75 6c 6c .//.A.C.string.literal.is.a.null
7140 20 74 65 72 6d 69 6e 61 74 65 64 20 70 6f 69 6e 74 65 72 2e 0a 20 20 20 20 63 6f 6e 73 74 20 6e .terminated.pointer......const.n
7160 75 6c 6c 5f 74 65 72 6d 69 6e 61 74 65 64 5f 62 79 74 65 73 20 3d 20 63 26 71 75 6f 74 3b 68 65 ull_terminated_bytes.=.c&quot;he
7180 6c 6c 6f 26 71 75 6f 74 3b 3b 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 6e 75 llo&quot;;.....assert(@typeOf(nu
71a0 6c 6c 5f 74 65 72 6d 69 6e 61 74 65 64 5f 62 79 74 65 73 29 20 3d 3d 20 26 61 6d 70 3b 63 6f 6e ll_terminated_bytes).==.&amp;con
71c0 73 74 20 75 38 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 6e 75 6c 6c 5f 74 65 72 6d 69 6e 61 74 st.u8);.....assert(null_terminat
71e0 65 64 5f 62 79 74 65 73 5b 35 5d 20 3d 3d 20 30 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 ed_bytes[5].==.0);.}</code></pre
7200 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 ><pre><code.class="shell">$.zig.
7220 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 73 74 72 69 6e 67 20 6c 69 test.test.zig.Test.1/1.string.li
7240 74 65 72 61 6c 73 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 terals...OK.</code></pre>.......
7260 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 .<p>See.also:</p><ul>.<li><a.hre
7280 66 3d 22 23 41 72 72 61 79 73 22 3e 41 72 72 61 79 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e f="#Arrays">Arrays</a></li>.<li>
72a0 3c 61 20 68 72 65 66 3d 22 23 5a 69 67 2d 54 65 73 74 22 3e 5a 69 67 20 54 65 73 74 3c 2f 61 3e <a.href="#Zig-Test">Zig.Test</a>
72c0 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 45 73 63 61 70 </li>.</ul>........<h3.id="Escap
72e0 65 2d 53 65 71 75 65 6e 63 65 73 22 3e 45 73 63 61 70 65 20 53 65 71 75 65 6e 63 65 73 3c 2f 68 e-Sequences">Escape.Sequences</h
7300 33 3e 0a 0a 20 20 20 20 20 20 3c 64 69 76 20 63 6c 61 73 73 3d 22 74 61 62 6c 65 2d 77 72 61 70 3>........<div.class="table-wrap
7320 70 65 72 22 3e 0a 20 20 20 20 20 20 3c 74 61 62 6c 65 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e per">.......<table>.........<tr>
7340 0a 20 20 20 20 20 20 20 20 20 20 3c 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 45 73 63 61 ...........<th>.............Esca
7360 70 65 20 53 65 71 75 65 6e 63 65 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 68 3e 0a 20 20 20 20 pe.Sequence...........</th>.....
7380 20 20 20 20 20 20 3c 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 4e 61 6d 65 0a 20 20 20 20 ......<th>.............Name.....
73a0 20 20 20 20 20 20 3c 2f 74 68 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 ......</th>.........</tr>.......
73c0 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 5c 6e 3c 2f 63 ..<tr>...........<td><code>\n</c
73e0 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 4e 65 77 6c 69 6e 65 3c ode></td>...........<td>Newline<
7400 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a /td>.........</tr>.........<tr>.
7420 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 5c 72 3c 2f 63 6f 64 65 3e 3c 2f 74 ..........<td><code>\r</code></t
7440 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 43 61 72 72 69 61 67 65 20 52 65 74 75 72 6e d>...........<td>Carriage.Return
7460 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e </td>.........</tr>.........<tr>
7480 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 5c 74 3c 2f 63 6f 64 65 3e 3c 2f ...........<td><code>\t</code></
74a0 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 54 61 62 3c 2f 74 64 3e 0a 20 20 20 20 20 td>...........<td>Tab</td>......
74c0 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 ...</tr>.........<tr>...........
74e0 3c 74 64 3e 3c 63 6f 64 65 3e 5c 5c 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 <td><code>\\</code></td>........
7500 20 20 20 3c 74 64 3e 42 61 63 6b 73 6c 61 73 68 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f ...<td>Backslash</td>.........</
7520 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c tr>.........<tr>...........<td><
7540 63 6f 64 65 3e 5c 27 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 code>\'</code></td>...........<t
7560 64 3e 53 69 6e 67 6c 65 20 51 75 6f 74 65 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 d>Single.Quote</td>.........</tr
7580 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f >.........<tr>...........<td><co
75a0 64 65 3e 5c 22 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e de>\"</code></td>...........<td>
75c0 44 6f 75 62 6c 65 20 51 75 6f 74 65 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a Double.Quote</td>.........</tr>.
75e0 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 ........<tr>...........<td><code
7600 3e 5c 78 4e 4e 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e >\xNN</code></td>...........<td>
7620 68 65 78 61 64 65 63 69 6d 61 6c 20 38 2d 62 69 74 20 63 68 61 72 61 63 74 65 72 20 63 6f 64 65 hexadecimal.8-bit.character.code
7640 20 28 32 20 64 69 67 69 74 73 29 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 .(2.digits)</td>.........</tr>..
7660 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e .......<tr>...........<td><code>
7680 5c 75 4e 4e 4e 4e 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 \uNNNN</code></td>...........<td
76a0 3e 68 65 78 61 64 65 63 69 6d 61 6c 20 31 36 2d 62 69 74 20 55 6e 69 63 6f 64 65 20 63 68 61 72 >hexadecimal.16-bit.Unicode.char
76c0 61 63 74 65 72 20 63 6f 64 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 28 34 20 64 69 67 69 acter.code.UTF-8.encoded.(4.digi
76e0 74 73 29 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c ts)</td>.........</tr>.........<
7700 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 5c 55 4e 4e 4e 4e 4e 4e tr>...........<td><code>\UNNNNNN
7720 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 68 65 78 61 64 </code></td>...........<td>hexad
7740 65 63 69 6d 61 6c 20 32 34 2d 62 69 74 20 55 6e 69 63 6f 64 65 20 63 68 61 72 61 63 74 65 72 20 ecimal.24-bit.Unicode.character.
7760 63 6f 64 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 28 36 20 64 69 67 69 74 73 29 3c 2f 74 code.UTF-8.encoded.(6.digits)</t
7780 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 3c 2f 74 61 62 6c 65 3e 0a d>.........</tr>.......</table>.
77a0 20 20 20 20 20 20 3c 2f 64 69 76 3e 0a 20 20 20 20 20 20 3c 70 3e 4e 6f 74 65 20 74 68 61 74 20 ......</div>.......<p>Note.that.
77c0 74 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c 69 64 20 55 6e 69 63 6f 64 65 20 70 6f 69 6e 74 20 the.maximum.valid.Unicode.point.
77e0 69 73 20 3c 63 6f 64 65 3e 30 78 31 30 66 66 66 66 3c 2f 63 6f 64 65 3e 2e 3c 2f 70 3e 0a 20 20 is.<code>0x10ffff</code>.</p>...
7800 20 20 20 20 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 4d 75 6c 74 69 6c 69 6e 65 2d 53 74 72 ...........<h3.id="Multiline-Str
7820 69 6e 67 2d 4c 69 74 65 72 61 6c 73 22 3e 4d 75 6c 74 69 6c 69 6e 65 20 53 74 72 69 6e 67 20 4c ing-Literals">Multiline.String.L
7840 69 74 65 72 61 6c 73 3c 2f 68 33 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4d 75 iterals</h3>........<p>.......Mu
7860 6c 74 69 6c 69 6e 65 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 73 20 68 61 76 65 20 6e 6f 20 ltiline.string.literals.have.no.
7880 65 73 63 61 70 65 73 20 61 6e 64 20 63 61 6e 20 73 70 61 6e 20 61 63 72 6f 73 73 20 6d 75 6c 74 escapes.and.can.span.across.mult
78a0 69 70 6c 65 20 6c 69 6e 65 73 2e 0a 20 20 20 20 20 20 54 6f 20 73 74 61 72 74 20 61 20 6d 75 6c iple.lines........To.start.a.mul
78c0 74 69 6c 69 6e 65 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 2c 20 75 73 65 20 74 68 65 20 3c tiline.string.literal,.use.the.<
78e0 63 6f 64 65 3e 5c 5c 3c 2f 63 6f 64 65 3e 20 74 6f 6b 65 6e 2e 20 4a 75 73 74 20 6c 69 6b 65 20 code>\\</code>.token..Just.like.
7900 61 20 63 6f 6d 6d 65 6e 74 2c 0a 20 20 20 20 20 20 74 68 65 20 73 74 72 69 6e 67 20 6c 69 74 65 a.comment,.......the.string.lite
7920 72 61 6c 20 67 6f 65 73 20 75 6e 74 69 6c 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 6c 69 ral.goes.until.the.end.of.the.li
7940 6e 65 2e 20 54 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 6c 69 6e 65 20 69 73 0a 20 20 20 20 20 ne..The.end.of.the.line.is......
7960 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 73 74 72 69 6e 67 20 6c 69 74 65 .not.included.in.the.string.lite
7980 72 61 6c 2e 0a 20 20 20 20 20 20 48 6f 77 65 76 65 72 2c 20 69 66 20 74 68 65 20 6e 65 78 74 20 ral........However,.if.the.next.
79a0 6c 69 6e 65 20 62 65 67 69 6e 73 20 77 69 74 68 20 3c 63 6f 64 65 3e 5c 5c 3c 2f 63 6f 64 65 3e line.begins.with.<code>\\</code>
79c0 20 74 68 65 6e 20 61 20 6e 65 77 6c 69 6e 65 20 69 73 20 61 70 70 65 6e 64 65 64 20 61 6e 64 0a .then.a.newline.is.appended.and.
79e0 20 20 20 20 20 20 74 68 65 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 20 63 6f 6e 74 69 6e 75 ......the.string.literal.continu
7a00 65 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 es........</p>.......<pre><code.
7a20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 68 65 6c 6c 6f 5f 77 6f 72 6c 64 5f 69 6e class="zig">const.hello_world_in
7a40 5f 63 20 3d 0a 20 20 20 20 5c 5c 23 69 6e 63 6c 75 64 65 20 26 6c 74 3b 73 74 64 69 6f 2e 68 26 _c.=.....\\#include.&lt;stdio.h&
7a60 67 74 3b 0a 20 20 20 20 5c 5c 0a 20 20 20 20 5c 5c 69 6e 74 20 6d 61 69 6e 28 69 6e 74 20 61 72 gt;.....\\.....\\int.main(int.ar
7a80 67 63 2c 20 63 68 61 72 20 2a 2a 61 72 67 76 29 20 7b 0a 20 20 20 20 5c 5c 20 20 20 20 70 72 69 gc,.char.**argv).{.....\\....pri
7aa0 6e 74 66 28 26 71 75 6f 74 3b 68 65 6c 6c 6f 20 77 6f 72 6c 64 5c 6e 26 71 75 6f 74 3b 29 3b 0a ntf(&quot;hello.world\n&quot;);.
7ac0 20 20 20 20 5c 5c 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0a 20 20 20 20 5c 5c 7d 0a 3b 3c 2f 63 ....\\....return.0;.....\\}.;</c
7ae0 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 46 6f 72 20 61 ode></pre>.......<p>.......For.a
7b00 20 6d 75 6c 74 69 6c 69 6e 65 20 43 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 2c 20 70 72 65 .multiline.C.string.literal,.pre
7b20 70 65 6e 64 20 3c 63 6f 64 65 3e 63 3c 2f 63 6f 64 65 3e 20 74 6f 20 65 61 63 68 20 3c 63 6f 64 pend.<code>c</code>.to.each.<cod
7b40 65 3e 5c 5c 3c 2f 63 6f 64 65 3e 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 e>\\</code>:.......</p>.......<p
7b60 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 63 5f 73 74 72 re><code.class="zig">const.c_str
7b80 69 6e 67 5f 6c 69 74 65 72 61 6c 20 3d 0a 20 20 20 20 63 5c 5c 23 69 6e 63 6c 75 64 65 20 26 6c ing_literal.=.....c\\#include.&l
7ba0 74 3b 73 74 64 69 6f 2e 68 26 67 74 3b 0a 20 20 20 20 63 5c 5c 0a 20 20 20 20 63 5c 5c 69 6e 74 t;stdio.h&gt;.....c\\.....c\\int
7bc0 20 6d 61 69 6e 28 69 6e 74 20 61 72 67 63 2c 20 63 68 61 72 20 2a 2a 61 72 67 76 29 20 7b 0a 20 .main(int.argc,.char.**argv).{..
7be0 20 20 20 63 5c 5c 20 20 20 20 70 72 69 6e 74 66 28 26 71 75 6f 74 3b 68 65 6c 6c 6f 20 77 6f 72 ...c\\....printf(&quot;hello.wor
7c00 6c 64 5c 6e 26 71 75 6f 74 3b 29 3b 0a 20 20 20 20 63 5c 5c 20 20 20 20 72 65 74 75 72 6e 20 30 ld\n&quot;);.....c\\....return.0
7c20 3b 0a 20 20 20 20 63 5c 5c 7d 0a 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 ;.....c\\}.;</code></pre>.......
7c40 3c 70 3e 0a 20 20 20 20 20 20 49 6e 20 74 68 69 73 20 65 78 61 6d 70 6c 65 20 74 68 65 20 76 61 <p>.......In.this.example.the.va
7c60 72 69 61 62 6c 65 20 3c 63 6f 64 65 3e 63 5f 73 74 72 69 6e 67 5f 6c 69 74 65 72 61 6c 3c 2f 63 riable.<code>c_string_literal</c
7c80 6f 64 65 3e 20 68 61 73 20 74 79 70 65 20 3c 63 6f 64 65 3e 26 61 6d 70 3b 63 6f 6e 73 74 20 63 ode>.has.type.<code>&amp;const.c
7ca0 68 61 72 3c 2f 63 6f 64 65 3e 20 61 6e 64 0a 20 20 20 20 20 20 68 61 73 20 61 20 74 65 72 6d 69 har</code>.and.......has.a.termi
7cc0 6e 61 74 69 6e 67 20 6e 75 6c 6c 20 62 79 74 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 nating.null.byte........</p>....
7ce0 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 ...<p>See.also:</p><ul>.<li><a.h
7d00 72 65 66 3d 22 23 65 6d 62 65 64 46 69 6c 65 22 3e 40 65 6d 62 65 64 46 69 6c 65 3c 2f 61 3e 3c ref="#embedFile">@embedFile</a><
7d20 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 /li>.</ul>......................
7d40 3c 68 32 20 69 64 3d 22 41 73 73 69 67 6e 6d 65 6e 74 22 3e 41 73 73 69 67 6e 6d 65 6e 74 3c 2f <h2.id="Assignment">Assignment</
7d60 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 55 73 65 20 3c 63 6f 64 65 3e 63 6f 6e 73 74 3c 2f 63 h2>........<p>Use.<code>const</c
7d80 6f 64 65 3e 20 74 6f 20 61 73 73 69 67 6e 20 61 20 76 61 6c 75 65 20 74 6f 20 61 6e 20 69 64 65 ode>.to.assign.a.value.to.an.ide
7da0 6e 74 69 66 69 65 72 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c ntifier:</p>.......<p.class="fil
7dc0 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d e">test.zig</p><pre><code.class=
7de0 22 7a 69 67 22 3e 63 6f 6e 73 74 20 78 20 3d 20 31 32 33 34 3b 0a 0a 66 6e 20 66 6f 6f 28 29 20 "zig">const.x.=.1234;..fn.foo().
7e00 76 6f 69 64 20 7b 0a 20 20 20 20 2f 2f 20 49 74 20 77 6f 72 6b 73 20 61 74 20 67 6c 6f 62 61 6c void.{.....//.It.works.at.global
7e20 20 73 63 6f 70 65 20 61 73 20 77 65 6c 6c 20 61 73 20 69 6e 73 69 64 65 20 66 75 6e 63 74 69 6f .scope.as.well.as.inside.functio
7e40 6e 73 2e 0a 20 20 20 20 63 6f 6e 73 74 20 79 20 3d 20 35 36 37 38 3b 0a 0a 20 20 20 20 2f 2f 20 ns......const.y.=.5678;......//.
7e60 4f 6e 63 65 20 61 73 73 69 67 6e 65 64 2c 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 63 61 6e Once.assigned,.an.identifier.can
7e80 6e 6f 74 20 62 65 20 63 68 61 6e 67 65 64 2e 0a 20 20 20 20 79 20 2b 3d 20 31 3b 0a 7d 0a 0a 74 not.be.changed......y.+=.1;.}..t
7ea0 65 73 74 20 26 71 75 6f 74 3b 61 73 73 69 67 6e 6d 65 6e 74 26 71 75 6f 74 3b 20 7b 0a 20 20 20 est.&quot;assignment&quot;.{....
7ec0 20 66 6f 6f 28 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 .foo();.}</code></pre><pre><code
7ee0 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a .class="shell">$.zig.test.test.z
7f00 69 67 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 ig.<span.class="t0_1">/home/andy
7f20 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 38 3a 37 /dev/zig/docgen_tmp/test.zig:8:7
7f40 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 :.</span><span.class="t31_1">err
7f60 6f 72 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 or:</span><span.class="t0_1">.ca
7f80 6e 6e 6f 74 20 61 73 73 69 67 6e 20 74 6f 20 63 6f 6e 73 74 61 6e 74 3c 2f 73 70 61 6e 3e 0a 20 nnot.assign.to.constant</span>..
7fa0 20 20 20 79 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 ...y.+=.1;.......<span.class="t3
7fc0 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 2_1">^</span>.</code></pre>.....
7fe0 20 20 20 3c 70 3e 49 66 20 79 6f 75 20 6e 65 65 64 20 61 20 76 61 72 69 61 62 6c 65 20 74 68 61 ...<p>If.you.need.a.variable.tha
8000 74 20 79 6f 75 20 63 61 6e 20 6d 6f 64 69 66 79 2c 20 75 73 65 20 3c 63 6f 64 65 3e 76 61 72 3c t.you.can.modify,.use.<code>var<
8020 2f 63 6f 64 65 3e 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 /code>:</p>.......<p.class="file
8040 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 ">test.zig</p><pre><code.class="
8060 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f zig">const.assert.=.@import(&quo
8080 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 74 65 73 74 t;std&quot;).debug.assert;..test
80a0 20 26 71 75 6f 74 3b 76 61 72 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 76 61 72 20 79 3a 20 69 33 .&quot;var&quot;.{.....var.y:.i3
80c0 32 20 3d 20 35 36 37 38 3b 0a 0a 20 20 20 20 79 20 2b 3d 20 31 3b 0a 0a 20 20 20 20 61 73 73 65 2.=.5678;......y.+=.1;......asse
80e0 72 74 28 79 20 3d 3d 20 35 36 37 39 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 rt(y.==.5679);.}</code></pre><pr
8100 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 e><code.class="shell">$.zig.test
8120 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 76 61 72 2e 2e 2e 4f 4b 0a 3c 2f 63 6f .test.zig.Test.1/1.var...OK.</co
8140 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 56 61 72 69 61 62 6c 65 73 20 6d 75 de></pre>........<p>Variables.mu
8160 73 74 20 62 65 20 69 6e 69 74 69 61 6c 69 7a 65 64 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 st.be.initialized:</p>.......<p.
8180 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 class="file">test.zig</p><pre><c
81a0 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 74 65 73 74 20 26 71 75 6f 74 3b 69 6e 69 74 69 ode.class="zig">test.&quot;initi
81c0 61 6c 69 7a 61 74 69 6f 6e 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 76 61 72 20 78 3a 20 69 33 32 alization&quot;.{.....var.x:.i32
81e0 3b 0a 0a 20 20 20 20 78 20 3d 20 31 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 ;......x.=.1;.}</code></pre><pre
8200 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 ><code.class="shell">$.zig.test.
8220 74 65 73 74 2e 7a 69 67 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d test.zig.<span.class="t0_1">/hom
8240 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a e/andy/dev/zig/docgen_tmp/test.z
8260 69 67 3a 32 3a 35 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f ig:2:5:.</span><span.class="t31_
8280 31 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 1">error:</span><span.class="t0_
82a0 31 22 3e 20 76 61 72 69 61 62 6c 65 73 20 6d 75 73 74 20 62 65 20 69 6e 69 74 69 61 6c 69 7a 65 1">.variables.must.be.initialize
82c0 64 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 76 61 72 20 78 3a 20 69 33 32 3b 0a 20 20 20 20 3c 73 70 d</span>.....var.x:.i32;.....<sp
82e0 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 an.class="t32_1">^</span>.<span.
8300 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f class="t0_1">/home/andy/dev/zig/
8320 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 34 3a 35 3a 20 3c 2f 73 70 61 6e 3e docgen_tmp/test.zig:4:5:.</span>
8340 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 6e <span.class="t31_1">error:</span
8360 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 75 73 65 20 6f 66 20 75 6e 64 65 ><span.class="t0_1">.use.of.unde
8380 63 6c 61 72 65 64 20 69 64 65 6e 74 69 66 69 65 72 20 27 78 27 3c 2f 73 70 61 6e 3e 0a 20 20 20 clared.identifier.'x'</span>....
83a0 20 78 20 3d 20 31 3b 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e .x.=.1;.....<span.class="t32_1">
83c0 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 ^</span>.</code></pre>........<p
83e0 3e 55 73 65 20 3c 63 6f 64 65 3e 75 6e 64 65 66 69 6e 65 64 3c 2f 63 6f 64 65 3e 20 74 6f 20 6c >Use.<code>undefined</code>.to.l
8400 65 61 76 65 20 76 61 72 69 61 62 6c 65 73 20 75 6e 69 6e 69 74 69 61 6c 69 7a 65 64 3a 3c 2f 70 eave.variables.uninitialized:</p
8420 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 >.......<p.class="file">test.zig
8440 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 </p><pre><code.class="zig">const
8460 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 .assert.=.@import(&quot;std&quot
8480 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 69 6e 69 ;).debug.assert;..test.&quot;ini
84a0 74 20 77 69 74 68 20 75 6e 64 65 66 69 6e 65 64 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 76 61 72 t.with.undefined&quot;.{.....var
84c0 20 78 3a 20 69 33 32 20 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 78 20 3d 20 31 3b 0a .x:.i32.=.undefined;.....x.=.1;.
84e0 20 20 20 20 61 73 73 65 72 74 28 78 20 3d 3d 20 31 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 ....assert(x.==.1);.}</code></pr
8500 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 e><pre><code.class="shell">$.zig
8520 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 69 6e 69 74 20 77 69 74 .test.test.zig.Test.1/1.init.wit
8540 68 20 75 6e 64 65 66 69 6e 65 64 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a h.undefined...OK.</code></pre>..
8560 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 49 6e 74 65 ....................<h1.id="Inte
8580 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 68 32 20 69 gers">Integers</h1>........<h2.i
85a0 64 3d 22 49 6e 74 65 67 65 72 2d 4c 69 74 65 72 61 6c 73 22 3e 49 6e 74 65 67 65 72 20 4c 69 74 d="Integer-Literals">Integer.Lit
85c0 65 72 61 6c 73 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 erals</h2>........<pre><code.cla
85e0 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 64 65 63 69 6d 61 6c 5f 69 6e 74 20 3d 20 39 38 32 ss="zig">const.decimal_int.=.982
8600 32 32 3b 0a 63 6f 6e 73 74 20 68 65 78 5f 69 6e 74 20 3d 20 30 78 66 66 3b 0a 63 6f 6e 73 74 20 22;.const.hex_int.=.0xff;.const.
8620 61 6e 6f 74 68 65 72 5f 68 65 78 5f 69 6e 74 20 3d 20 30 78 46 46 3b 0a 63 6f 6e 73 74 20 6f 63 another_hex_int.=.0xFF;.const.oc
8640 74 61 6c 5f 69 6e 74 20 3d 20 30 6f 37 35 35 3b 0a 63 6f 6e 73 74 20 62 69 6e 61 72 79 5f 69 6e tal_int.=.0o755;.const.binary_in
8660 74 20 3d 20 30 62 31 31 31 31 30 30 30 30 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 t.=.0b11110000;</code></pre>....
8680 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 52 75 6e 74 69 6d 65 2d 49 6e 74 65 67 65 ..........<h2.id="Runtime-Intege
86a0 72 2d 56 61 6c 75 65 73 22 3e 52 75 6e 74 69 6d 65 20 49 6e 74 65 67 65 72 20 56 61 6c 75 65 73 r-Values">Runtime.Integer.Values
86c0 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 74 65 67 65 72 20 6c </h2>........<p>.......Integer.l
86e0 69 74 65 72 61 6c 73 20 68 61 76 65 20 6e 6f 20 73 69 7a 65 20 6c 69 6d 69 74 61 74 69 6f 6e 2c iterals.have.no.size.limitation,
8700 20 61 6e 64 20 69 66 20 61 6e 79 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 20 6f .and.if.any.undefined.behavior.o
8720 63 63 75 72 73 2c 0a 20 20 20 20 20 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 20 63 61 74 63 68 65 ccurs,.......the.compiler.catche
8740 73 20 69 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 s.it........</p>.......<p>......
8760 20 48 6f 77 65 76 65 72 2c 20 6f 6e 63 65 20 61 6e 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 20 .However,.once.an.integer.value.
8780 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 6b 6e 6f 77 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 is.no.longer.known.at.compile-ti
87a0 6d 65 2c 20 69 74 20 6d 75 73 74 20 68 61 76 65 20 61 0a 20 20 20 20 20 20 6b 6e 6f 77 6e 20 73 me,.it.must.have.a.......known.s
87c0 69 7a 65 2c 20 61 6e 64 20 69 73 20 76 75 6c 6e 65 72 61 62 6c 65 20 74 6f 20 75 6e 64 65 66 69 ize,.and.is.vulnerable.to.undefi
87e0 6e 65 64 20 62 65 68 61 76 69 6f 72 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c ned.behavior........</p>.......<
8800 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 6e 20 64 69 76 69 64 65 28 pre><code.class="zig">fn.divide(
8820 61 3a 20 69 33 32 2c 20 62 3a 20 69 33 32 29 20 69 33 32 20 7b 0a 20 20 20 20 72 65 74 75 72 6e a:.i32,.b:.i32).i32.{.....return
8840 20 61 20 2f 20 62 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e .a./.b;.}</code></pre>.......<p>
8860 0a 20 20 20 20 20 20 49 6e 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 2c 20 76 61 6c 75 65 73 20 .......In.this.function,.values.
8880 3c 63 6f 64 65 3e 61 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 3c 63 6f 64 65 3e 62 3c 2f 63 6f 64 65 <code>a</code>.and.<code>b</code
88a0 3e 20 61 72 65 20 6b 6e 6f 77 6e 20 6f 6e 6c 79 20 61 74 20 72 75 6e 74 69 6d 65 2c 0a 20 20 20 >.are.known.only.at.runtime,....
88c0 20 20 20 61 6e 64 20 74 68 75 73 20 74 68 69 73 20 64 69 76 69 73 69 6f 6e 20 6f 70 65 72 61 74 ...and.thus.this.division.operat
88e0 69 6f 6e 20 69 73 20 76 75 6c 6e 65 72 61 62 6c 65 20 74 6f 20 62 6f 74 68 20 69 6e 74 65 67 65 ion.is.vulnerable.to.both.intege
8900 72 20 6f 76 65 72 66 6c 6f 77 20 61 6e 64 0a 20 20 20 20 20 20 64 69 76 69 73 69 6f 6e 20 62 79 r.overflow.and.......division.by
8920 20 7a 65 72 6f 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 .zero........</p>.......<p>.....
8940 20 20 4f 70 65 72 61 74 6f 72 73 20 73 75 63 68 20 61 73 20 3c 63 6f 64 65 3e 2b 3c 2f 63 6f 64 ..Operators.such.as.<code>+</cod
8960 65 3e 20 61 6e 64 20 3c 63 6f 64 65 3e 2d 3c 2f 63 6f 64 65 3e 20 63 61 75 73 65 20 75 6e 64 65 e>.and.<code>-</code>.cause.unde
8980 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 20 6f 6e 0a 20 20 20 20 20 20 69 6e 74 65 67 65 72 20 fined.behavior.on.......integer.
89a0 6f 76 65 72 66 6c 6f 77 2e 20 41 6c 73 6f 20 61 76 61 69 6c 61 62 6c 65 20 61 72 65 20 6f 70 65 overflow..Also.available.are.ope
89c0 72 61 74 69 6f 6e 73 20 73 75 63 68 20 61 73 20 3c 63 6f 64 65 3e 2b 25 3c 2f 63 6f 64 65 3e 20 rations.such.as.<code>+%</code>.
89e0 61 6e 64 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 2d 25 3c 2f 63 6f 64 65 3e 20 77 68 69 63 68 20 and.......<code>-%</code>.which.
8a00 61 72 65 20 64 65 66 69 6e 65 64 20 74 6f 20 68 61 76 65 20 77 72 61 70 70 69 6e 67 20 61 72 69 are.defined.to.have.wrapping.ari
8a20 74 68 6d 65 74 69 63 20 6f 6e 20 61 6c 6c 20 74 61 72 67 65 74 73 2e 0a 20 20 20 20 20 20 3c 2f thmetic.on.all.targets........</
8a40 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c p>.......<p>See.also:</p><ul>.<l
8a60 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e 74 65 67 65 72 2d 4f 76 65 72 66 6c 6f 77 22 3e 49 6e i><a.href="#Integer-Overflow">In
8a80 74 65 67 65 72 20 4f 76 65 72 66 6c 6f 77 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 teger.Overflow</a></li>.<li><a.h
8aa0 72 65 66 3d 22 23 44 69 76 69 73 69 6f 6e 2d 62 79 2d 5a 65 72 6f 22 3e 44 69 76 69 73 69 6f 6e ref="#Division-by-Zero">Division
8ac0 20 62 79 20 5a 65 72 6f 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 .by.Zero</a></li>.<li><a.href="#
8ae0 57 72 61 70 70 69 6e 67 2d 4f 70 65 72 61 74 69 6f 6e 73 22 3e 57 72 61 70 70 69 6e 67 20 4f 70 Wrapping-Operations">Wrapping.Op
8b00 65 72 61 74 69 6f 6e 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a erations</a></li>.</ul>.........
8b20 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 46 6c 6f 61 74 73 22 3e 46 6c 6f .............<h1.id="Floats">Flo
8b40 61 74 73 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 46 6c 6f 61 74 2d 4c 69 ats</h1>........<h2.id="Float-Li
8b60 74 65 72 61 6c 73 22 3e 46 6c 6f 61 74 20 4c 69 74 65 72 61 6c 73 3c 2f 68 32 3e 0a 0a 20 20 20 terals">Float.Literals</h2>.....
8b80 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 ...<pre><code.class="zig">const.
8ba0 66 6c 6f 61 74 69 6e 67 5f 70 6f 69 6e 74 20 3d 20 31 32 33 2e 30 45 2b 37 37 3b 0a 63 6f 6e 73 floating_point.=.123.0E+77;.cons
8bc0 74 20 61 6e 6f 74 68 65 72 5f 66 6c 6f 61 74 20 3d 20 31 32 33 2e 30 3b 0a 63 6f 6e 73 74 20 79 t.another_float.=.123.0;.const.y
8be0 65 74 5f 61 6e 6f 74 68 65 72 20 3d 20 31 32 33 2e 30 65 2b 37 37 3b 0a 0a 63 6f 6e 73 74 20 68 et_another.=.123.0e+77;..const.h
8c00 65 78 5f 66 6c 6f 61 74 69 6e 67 5f 70 6f 69 6e 74 20 3d 20 30 78 31 30 33 2e 37 30 70 2d 35 3b ex_floating_point.=.0x103.70p-5;
8c20 0a 63 6f 6e 73 74 20 61 6e 6f 74 68 65 72 5f 68 65 78 5f 66 6c 6f 61 74 20 3d 20 30 78 31 30 33 .const.another_hex_float.=.0x103
8c40 2e 37 30 3b 0a 63 6f 6e 73 74 20 79 65 74 5f 61 6e 6f 74 68 65 72 5f 68 65 78 5f 66 6c 6f 61 74 .70;.const.yet_another_hex_float
8c60 20 3d 20 30 78 31 30 33 2e 37 30 50 2d 35 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 .=.0x103.70P-5;</code></pre>....
8c80 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 46 6c 6f 61 74 69 6e 67 2d 50 6f 69 6e 74 ..........<h2.id="Floating-Point
8ca0 2d 4f 70 65 72 61 74 69 6f 6e 73 22 3e 46 6c 6f 61 74 69 6e 67 20 50 6f 69 6e 74 20 4f 70 65 72 -Operations">Floating.Point.Oper
8cc0 61 74 69 6f 6e 73 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 42 79 20 64 65 66 61 75 6c 74 ations</h2>........<p>By.default
8ce0 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6f 70 65 72 61 74 69 6f 6e 73 20 75 73 65 20 3c .floating.point.operations.use.<
8d00 63 6f 64 65 3e 4f 70 74 69 6d 69 7a 65 64 3c 2f 63 6f 64 65 3e 20 6d 6f 64 65 2c 0a 20 20 20 20 code>Optimized</code>.mode,.....
8d20 20 20 62 75 74 20 79 6f 75 20 63 61 6e 20 73 77 69 74 63 68 20 74 6f 20 3c 63 6f 64 65 3e 53 74 ..but.you.can.switch.to.<code>St
8d40 72 69 63 74 3c 2f 63 6f 64 65 3e 20 6d 6f 64 65 20 6f 6e 20 61 20 70 65 72 2d 62 6c 6f 63 6b 20 rict</code>.mode.on.a.per-block.
8d60 62 61 73 69 73 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 basis:</p>.......<p.class="file"
8d80 3e 66 6f 6f 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 >foo.zig</p><pre><code.class="zi
8da0 67 22 3e 63 6f 6e 73 74 20 62 75 69 6c 74 69 6e 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 g">const.builtin.=.@import(&quot
8dc0 3b 62 75 69 6c 74 69 6e 26 71 75 6f 74 3b 29 3b 0a 63 6f 6e 73 74 20 62 69 67 20 3d 20 66 36 34 ;builtin&quot;);.const.big.=.f64
8de0 28 31 20 26 6c 74 3b 26 6c 74 3b 20 34 30 29 3b 0a 0a 65 78 70 6f 72 74 20 66 6e 20 66 6f 6f 5f (1.&lt;&lt;.40);..export.fn.foo_
8e00 73 74 72 69 63 74 28 78 3a 20 66 36 34 29 20 66 36 34 20 7b 0a 20 20 20 20 40 73 65 74 46 6c 6f strict(x:.f64).f64.{.....@setFlo
8e20 61 74 4d 6f 64 65 28 74 68 69 73 2c 20 62 75 69 6c 74 69 6e 2e 46 6c 6f 61 74 4d 6f 64 65 2e 53 atMode(this,.builtin.FloatMode.S
8e40 74 72 69 63 74 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 78 20 2b 20 62 69 67 20 2d 20 62 69 67 trict);.....return.x.+.big.-.big
8e60 3b 0a 7d 0a 0a 65 78 70 6f 72 74 20 66 6e 20 66 6f 6f 5f 6f 70 74 69 6d 69 7a 65 64 28 78 3a 20 ;.}..export.fn.foo_optimized(x:.
8e80 66 36 34 29 20 66 36 34 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 78 20 2b 20 62 69 67 20 2d 20 f64).f64.{.....return.x.+.big.-.
8ea0 62 69 67 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c big;.}</code></pre><pre><code.cl
8ec0 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 6f 62 6a 20 66 6f 6f 2e ass="shell">$.zig.build-obj.foo.
8ee0 7a 69 67 20 2d 2d 72 65 6c 65 61 73 65 2d 66 61 73 74 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a zig.--release-fast</code></pre>.
8f00 0a 20 20 20 20 20 20 3c 70 3e 46 6f 72 20 74 68 69 73 20 74 65 73 74 20 77 65 20 68 61 76 65 20 .......<p>For.this.test.we.have.
8f20 74 6f 20 73 65 70 61 72 61 74 65 20 63 6f 64 65 20 69 6e 74 6f 20 74 77 6f 20 6f 62 6a 65 63 74 to.separate.code.into.two.object
8f40 20 66 69 6c 65 73 20 2d 0a 20 20 20 20 20 20 6f 74 68 65 72 77 69 73 65 20 74 68 65 20 6f 70 74 .files.-.......otherwise.the.opt
8f60 69 6d 69 7a 65 72 20 66 69 67 75 72 65 73 20 6f 75 74 20 61 6c 6c 20 74 68 65 20 76 61 6c 75 65 imizer.figures.out.all.the.value
8f80 73 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 0a 20 20 20 20 20 20 77 68 69 63 68 20 6f s.at.compile-time,.......which.o
8fa0 70 65 72 61 74 65 73 20 69 6e 20 73 74 72 69 63 74 20 6d 6f 64 65 2e 3c 2f 70 3e 0a 20 20 20 20 perates.in.strict.mode.</p>.....
8fc0 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 66 6c 6f 61 74 5f 6d 6f 64 65 2e 7a 69 67 ..<p.class="file">float_mode.zig
8fe0 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 </p><pre><code.class="zig">const
9000 20 77 61 72 6e 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 .warn.=.@import(&quot;std&quot;)
9020 2e 64 65 62 75 67 2e 77 61 72 6e 3b 0a 0a 65 78 74 65 72 6e 20 66 6e 20 66 6f 6f 5f 73 74 72 69 .debug.warn;..extern.fn.foo_stri
9040 63 74 28 78 3a 20 66 36 34 29 20 66 36 34 3b 0a 65 78 74 65 72 6e 20 66 6e 20 66 6f 6f 5f 6f 70 ct(x:.f64).f64;.extern.fn.foo_op
9060 74 69 6d 69 7a 65 64 28 78 3a 20 66 36 34 29 20 66 36 34 3b 0a 0a 70 75 62 20 66 6e 20 6d 61 69 timized(x:.f64).f64;..pub.fn.mai
9080 6e 28 29 20 76 6f 69 64 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 78 20 3d 20 30 2e 30 30 31 3b 0a n().void.{.....const.x.=.0.001;.
90a0 20 20 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 6f 70 74 69 6d 69 7a 65 64 20 3d 20 7b 7d 5c 6e 26 ....warn(&quot;optimized.=.{}\n&
90c0 71 75 6f 74 3b 2c 20 66 6f 6f 5f 6f 70 74 69 6d 69 7a 65 64 28 78 29 29 3b 0a 20 20 20 20 77 61 quot;,.foo_optimized(x));.....wa
90e0 72 6e 28 26 71 75 6f 74 3b 73 74 72 69 63 74 20 3d 20 7b 7d 5c 6e 26 71 75 6f 74 3b 2c 20 66 6f rn(&quot;strict.=.{}\n&quot;,.fo
9100 6f 5f 73 74 72 69 63 74 28 78 29 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 o_strict(x));.}</code></pre><pre
9120 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 ><code.class="shell">$.zig.build
9140 2d 65 78 65 20 66 6c 6f 61 74 5f 6d 6f 64 65 2e 7a 69 67 20 2d 2d 6f 62 6a 65 63 74 20 66 6f 6f -exe.float_mode.zig.--object.foo
9160 2e 6f 0a 24 20 2e 2f 66 6c 6f 61 74 5f 6d 6f 64 65 0a 6f 70 74 69 6d 69 7a 65 64 20 3d 20 31 2e .o.$../float_mode.optimized.=.1.
9180 30 65 2d 33 0a 73 74 72 69 63 74 20 3d 20 39 2e 37 36 35 36 32 35 65 2d 34 0a 3c 2f 63 6f 64 65 0e-3.strict.=.9.765625e-4.</code
91a0 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c ></pre>........<p>See.also:</p><
91c0 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 65 74 46 6c 6f 61 74 4d 6f 64 65 22 3e ul>.<li><a.href="#setFloatMode">
91e0 40 73 65 74 46 6c 6f 61 74 4d 6f 64 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 @setFloatMode</a></li>.<li><a.hr
9200 65 66 3d 22 23 44 69 76 69 73 69 6f 6e 2d 62 79 2d 5a 65 72 6f 22 3e 44 69 76 69 73 69 6f 6e 20 ef="#Division-by-Zero">Division.
9220 62 79 20 5a 65 72 6f 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 by.Zero</a></li>.</ul>..........
9240 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 4f 70 65 72 61 74 6f 72 73 22 3e 4f ............<h1.id="Operators">O
9260 70 65 72 61 74 6f 72 73 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 54 61 62 perators</h1>........<h2.id="Tab
9280 6c 65 2d 6f 66 2d 4f 70 65 72 61 74 6f 72 73 22 3e 54 61 62 6c 65 20 6f 66 20 4f 70 65 72 61 74 le-of-Operators">Table.of.Operat
92a0 6f 72 73 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 64 69 76 20 63 6c 61 73 73 3d 22 74 61 62 6c ors</h2>........<div.class="tabl
92c0 65 2d 77 72 61 70 70 65 72 22 3e 0a 20 20 20 20 20 20 3c 74 61 62 6c 65 3e 0a 20 20 20 20 20 20 e-wrapper">.......<table>.......
92e0 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 ..<tr>...........<th>...........
9300 20 20 53 79 6e 74 61 78 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 68 3e 0a 20 20 20 20 20 20 20 ..Syntax...........</th>........
9320 20 20 20 3c 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 52 65 6c 65 76 61 6e 74 20 54 79 70 ...<th>.............Relevant.Typ
9340 65 73 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 68 es...........</th>...........<th
9360 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 20 20 20 >.............Description.......
9380 20 20 20 20 3c 2f 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 68 3e 0a 20 20 20 20 20 20 20 ....</th>...........<th>........
93a0 20 20 20 20 20 45 78 61 6d 70 6c 65 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 68 3e 0a 20 20 20 .....Example...........</th>....
93c0 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 .....</tr>.........<tr>.........
93e0 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 2b ..<td><pre><code.class="zig">a.+
9400 20 62 0a 61 20 2b 3d 20 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 .b.a.+=.b</code></pre></td>.....
9420 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 ......<td>.............<ul>.....
9440 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e 74 65 67 65 72 73 ..........<li><a.href="#Integers
9460 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 ">Integers</a></li>.............
9480 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 61 74 73 22 3e 46 6c 6f 61 74 73 3c 2f ..<li><a.href="#Floats">Floats</
94a0 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 a></li>.............</ul>.......
94c0 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 41 64 64 69 74 69 6f 6e ....</td>...........<td>Addition
94e0 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..............<ul>..............
9500 20 3c 6c 69 3e 43 61 6e 20 63 61 75 73 65 20 3c 61 20 68 72 65 66 3d 22 23 44 65 66 61 75 6c 74 .<li>Can.cause.<a.href="#Default
9520 2d 4f 70 65 72 61 74 69 6f 6e 73 22 3e 6f 76 65 72 66 6c 6f 77 3c 2f 61 3e 20 66 6f 72 20 69 6e -Operations">overflow</a>.for.in
9540 74 65 67 65 72 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 tegers.</li>.............</ul>..
9560 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 .........</td>...........<td>...
9580 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 ..........<pre><code.class="zig"
95a0 3e 32 20 2b 20 35 20 3d 3d 20 37 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 >2.+.5.==.7</code></pre>........
95c0 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c ...</td>.........</tr>.........<
95e0 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 tr>...........<td><pre><code.cla
9600 73 73 3d 22 7a 69 67 22 3e 61 20 2b 25 20 62 0a 61 20 2b 25 3d 20 62 3c 2f 63 6f 64 65 3e 3c 2f ss="zig">a.+%.b.a.+%=.b</code></
9620 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 pre></td>...........<td>........
9640 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 .....<ul>...............<li><a.h
9660 72 65 66 3d 22 23 49 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 ref="#Integers">Integers</a></li
9680 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f >.............</ul>...........</
96a0 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 57 72 61 70 70 69 6e 67 20 41 64 64 69 74 td>...........<td>Wrapping.Addit
96c0 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 ion..............<ul>...........
96e0 20 20 20 20 3c 6c 69 3e 47 75 61 72 61 6e 74 65 65 64 20 74 6f 20 68 61 76 65 20 74 77 6f 73 2d ....<li>Guaranteed.to.have.twos-
9700 63 6f 6d 70 6c 65 6d 65 6e 74 20 77 72 61 70 70 69 6e 67 20 62 65 68 61 76 69 6f 72 2e 3c 2f 6c complement.wrapping.behavior.</l
9720 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c i>.............</ul>...........<
9740 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 /td>...........<td>.............
9760 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 75 33 32 28 40 6d 61 78 56 <pre><code.class="zig">u32(@maxV
9780 61 6c 75 65 28 75 33 32 29 29 20 2b 25 20 31 20 3d 3d 20 30 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 alue(u32)).+%.1.==.0</code></pre
97a0 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a >...........</td>.........</tr>.
97c0 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e ........<tr>...........<td><pre>
97e0 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 2d 20 62 0a 61 20 2d 3d 20 62 3c 2f <code.class="zig">a.-.b.a.-=.b</
9800 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a code></pre></td>...........<td>.
9820 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c ............<ul>...............<
9840 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c li><a.href="#Integers">Integers<
9860 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 /a></li>...............<li><a.hr
9880 65 66 3d 22 23 46 6c 6f 61 74 73 22 3e 46 6c 6f 61 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 ef="#Floats">Floats</a></li>....
98a0 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 .........</ul>...........</td>..
98c0 20 20 20 20 20 20 20 20 20 3c 74 64 3e 53 75 62 74 72 61 63 74 69 6f 6e 2e 0a 20 20 20 20 20 20 .........<td>Subtraction........
98e0 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 43 61 6e ......<ul>...............<li>Can
9900 20 63 61 75 73 65 20 3c 61 20 68 72 65 66 3d 22 23 44 65 66 61 75 6c 74 2d 4f 70 65 72 61 74 69 .cause.<a.href="#Default-Operati
9920 6f 6e 73 22 3e 6f 76 65 72 66 6c 6f 77 3c 2f 61 3e 20 66 6f 72 20 69 6e 74 65 67 65 72 73 2e 3c ons">overflow</a>.for.integers.<
9940 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 /li>.............</ul>..........
9960 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 .</td>...........<td>...........
9980 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 32 20 2d 20 35 20 3d ..<pre><code.class="zig">2.-.5.=
99a0 3d 20 2d 33 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 =.-3</code></pre>...........</td
99c0 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 >.........</tr>.........<tr>....
99e0 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 .......<td><pre><code.class="zig
9a00 22 3e 61 20 2d 25 20 62 0a 61 20 2d 25 3d 20 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 ">a.-%.b.a.-%=.b</code></pre></t
9a20 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 d>...........<td>.............<u
9a40 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 l>...............<li><a.href="#I
9a60 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 ntegers">Integers</a></li>......
9a80 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 .......</ul>...........</td>....
9aa0 20 20 20 20 20 20 20 3c 74 64 3e 57 72 61 70 70 69 6e 67 20 53 75 62 74 72 61 63 74 69 6f 6e 2e .......<td>Wrapping.Subtraction.
9ac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .............<ul>...............
9ae0 3c 6c 69 3e 47 75 61 72 61 6e 74 65 65 64 20 74 6f 20 68 61 76 65 20 74 77 6f 73 2d 63 6f 6d 70 <li>Guaranteed.to.have.twos-comp
9b00 6c 65 6d 65 6e 74 20 77 72 61 70 70 69 6e 67 20 62 65 68 61 76 69 6f 72 2e 3c 2f 6c 69 3e 0a 20 lement.wrapping.behavior.</li>..
9b20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e ...........</ul>...........</td>
9b40 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 ...........<td>.............<pre
9b60 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 75 33 32 28 30 29 20 2d 25 20 31 20 3d ><code.class="zig">u32(0).-%.1.=
9b80 3d 20 40 6d 61 78 56 61 6c 75 65 28 75 33 32 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 =.@maxValue(u32)</code></pre>...
9ba0 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 ........</td>.........</tr>.....
9bc0 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 ....<tr>...........<td><pre><cod
9be0 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2d 61 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 e.class="zig">-a<code></pre></td
9c00 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c >...........<td>.............<ul
9c20 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e >...............<li><a.href="#In
9c40 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 tegers">Integers</a></li>.......
9c60 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 61 74 73 22 3e 46 6c ........<li><a.href="#Floats">Fl
9c80 6f 61 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a oats</a></li>.............</ul>.
9ca0 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 ..........</td>...........<td>..
9cc0 20 20 20 20 20 20 20 20 20 20 20 4e 65 67 61 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 ...........Negation.............
9ce0 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 43 61 6e 20 63 61 75 73 .<ul>...............<li>Can.caus
9d00 65 20 3c 61 20 68 72 65 66 3d 22 23 44 65 66 61 75 6c 74 2d 4f 70 65 72 61 74 69 6f 6e 73 22 3e e.<a.href="#Default-Operations">
9d20 6f 76 65 72 66 6c 6f 77 3c 2f 61 3e 20 66 6f 72 20 69 6e 74 65 67 65 72 73 2e 3c 2f 6c 69 3e 0a overflow</a>.for.integers.</li>.
9d40 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 ............</ul>...........</td
9d60 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 >...........<td>.............<pr
9d80 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2d 31 20 3d 3d 20 30 20 2d 20 31 3c e><code.class="zig">-1.==.0.-.1<
9da0 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 /code></pre>...........</td>....
9dc0 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 .....</tr>.........<tr>.........
9de0 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2d 25 61 ..<td><pre><code.class="zig">-%a
9e00 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e <code></pre></td>...........<td>
9e20 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .............<ul>...............
9e40 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 <li><a.href="#Integers">Integers
9e60 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 </a></li>.............</ul>.....
9e80 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 ......</td>...........<td>......
9ea0 20 20 20 20 20 20 20 57 72 61 70 70 69 6e 67 20 4e 65 67 61 74 69 6f 6e 2e 0a 20 20 20 20 20 20 .......Wrapping.Negation........
9ec0 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 47 75 61 ......<ul>...............<li>Gua
9ee0 72 61 6e 74 65 65 64 20 74 6f 20 68 61 76 65 20 74 77 6f 73 2d 63 6f 6d 70 6c 65 6d 65 6e 74 20 ranteed.to.have.twos-complement.
9f00 77 72 61 70 70 69 6e 67 20 62 65 68 61 76 69 6f 72 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 wrapping.behavior.</li>.........
9f20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 ....</ul>...........</td>.......
9f40 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 ....<td>.............<pre><code.
9f60 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2d 25 69 33 32 28 40 6d 69 6e 56 61 6c 75 65 28 69 33 32 29 class="zig">-%i32(@minValue(i32)
9f80 29 20 3d 3d 20 40 6d 69 6e 56 61 6c 75 65 28 69 33 32 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e ).==.@minValue(i32)</code></pre>
9fa0 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 ...........</td>.........</tr>..
9fc0 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c .......<tr>...........<td><pre><
9fe0 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 2a 20 62 0a 61 20 2a 3d 20 62 3c 2f 63 code.class="zig">a.*.b.a.*=.b</c
a000 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 ode></pre></td>...........<td>..
a020 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c ...........<ul>...............<l
a040 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f i><a.href="#Integers">Integers</
a060 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 a></li>...............<li><a.hre
a080 66 3d 22 23 46 6c 6f 61 74 73 22 3e 46 6c 6f 61 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 f="#Floats">Floats</a></li>.....
a0a0 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 ........</ul>...........</td>...
a0c0 20 20 20 20 20 20 20 20 3c 74 64 3e 4d 75 6c 74 69 70 6c 69 63 61 74 69 6f 6e 2e 0a 20 20 20 20 ........<td>Multiplication......
a0e0 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 43 ........<ul>...............<li>C
a100 61 6e 20 63 61 75 73 65 20 3c 61 20 68 72 65 66 3d 22 23 44 65 66 61 75 6c 74 2d 4f 70 65 72 61 an.cause.<a.href="#Default-Opera
a120 74 69 6f 6e 73 22 3e 6f 76 65 72 66 6c 6f 77 3c 2f 61 3e 20 66 6f 72 20 69 6e 74 65 67 65 72 73 tions">overflow</a>.for.integers
a140 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 .</li>.............</ul>........
a160 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 ...</td>...........<td>.........
a180 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 32 20 2a 20 35 ....<pre><code.class="zig">2.*.5
a1a0 20 3d 3d 20 31 30 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f .==.10</code></pre>...........</
a1c0 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 td>.........</tr>.........<tr>..
a1e0 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a .........<td><pre><code.class="z
a200 69 67 22 3e 61 20 2a 25 20 62 0a 61 20 2a 25 3d 20 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c ig">a.*%.b.a.*%=.b</code></pre><
a220 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 /td>...........<td>.............
a240 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 <ul>...............<li><a.href="
a260 23 49 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 #Integers">Integers</a></li>....
a280 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 .........</ul>...........</td>..
a2a0 20 20 20 20 20 20 20 20 20 3c 74 64 3e 57 72 61 70 70 69 6e 67 20 4d 75 6c 74 69 70 6c 69 63 61 .........<td>Wrapping.Multiplica
a2c0 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 tion..............<ul>..........
a2e0 20 20 20 20 20 3c 6c 69 3e 47 75 61 72 61 6e 74 65 65 64 20 74 6f 20 68 61 76 65 20 74 77 6f 73 .....<li>Guaranteed.to.have.twos
a300 2d 63 6f 6d 70 6c 65 6d 65 6e 74 20 77 72 61 70 70 69 6e 67 20 62 65 68 61 76 69 6f 72 2e 3c 2f -complement.wrapping.behavior.</
a320 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 li>.............</ul>...........
a340 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 </td>...........<td>............
a360 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 75 38 28 32 30 30 29 20 .<pre><code.class="zig">u8(200).
a380 2a 25 20 32 20 3d 3d 20 31 34 34 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 *%.2.==.144</code></pre>........
a3a0 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c ...</td>.........</tr>.........<
a3c0 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 tr>...........<td><pre><code.cla
a3e0 73 73 3d 22 7a 69 67 22 3e 61 20 2f 20 62 0a 61 20 2f 3d 20 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 ss="zig">a./.b.a./=.b</code></pr
a400 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 e></td>...........<td>..........
a420 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 ...<ul>...............<li><a.hre
a440 66 3d 22 23 49 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a f="#Integers">Integers</a></li>.
a460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 61 ..............<li><a.href="#Floa
a480 74 73 22 3e 46 6c 6f 61 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 ts">Floats</a></li>.............
a4a0 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 </ul>...........</td>...........
a4c0 3c 74 64 3e 44 69 76 69 73 6f 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 <td>Divison..............<ul>...
a4e0 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 43 61 6e 20 63 61 75 73 65 20 3c 61 20 68 72 65 ............<li>Can.cause.<a.hre
a500 66 3d 22 23 44 65 66 61 75 6c 74 2d 4f 70 65 72 61 74 69 6f 6e 73 22 3e 6f 76 65 72 66 6c 6f 77 f="#Default-Operations">overflow
a520 3c 2f 61 3e 20 66 6f 72 20 69 6e 74 65 67 65 72 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 </a>.for.integers.</li>.........
a540 20 20 20 20 20 20 3c 6c 69 3e 43 61 6e 20 63 61 75 73 65 20 3c 61 20 68 72 65 66 3d 22 23 44 69 ......<li>Can.cause.<a.href="#Di
a560 76 69 73 69 6f 6e 2d 62 79 2d 5a 65 72 6f 22 3e 44 69 76 69 73 69 6f 6e 20 62 79 20 5a 65 72 6f vision-by-Zero">Division.by.Zero
a580 3c 2f 61 3e 20 66 6f 72 20 69 6e 74 65 67 65 72 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 </a>.for.integers.</li>.........
a5a0 20 20 20 20 20 20 3c 6c 69 3e 43 61 6e 20 63 61 75 73 65 20 3c 61 20 68 72 65 66 3d 22 23 44 69 ......<li>Can.cause.<a.href="#Di
a5c0 76 69 73 69 6f 6e 2d 62 79 2d 5a 65 72 6f 22 3e 44 69 76 69 73 69 6f 6e 20 62 79 20 5a 65 72 6f vision-by-Zero">Division.by.Zero
a5e0 3c 2f 61 3e 20 66 6f 72 20 66 6c 6f 61 74 73 20 69 6e 20 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f </a>.for.floats.in.<a.href="#Flo
a600 61 74 69 6e 67 2d 50 6f 69 6e 74 2d 4f 70 65 72 61 74 69 6f 6e 73 22 3e 46 6c 6f 61 74 4d 6f 64 ating-Point-Operations">FloatMod
a620 65 2e 4f 70 74 69 6d 69 7a 65 64 20 4d 6f 64 65 3c 2f 61 3e 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 e.Optimized.Mode</a>.</li>......
a640 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 46 6f 72 20 6e 6f 6e 2d 63 6f 6d 70 69 6c 65 2d 74 69 6d .........<li>For.non-compile-tim
a660 65 2d 6b 6e 6f 77 6e 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 73 2c 20 6d 75 73 74 20 75 73 e-known.signed.integers,.must.us
a680 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 61 20 68 72 65 66 3d 22 23 64 69 76 54 e.................<a.href="#divT
a6a0 72 75 6e 63 22 3e 40 64 69 76 54 72 75 6e 63 3c 2f 61 3e 2c 0a 20 20 20 20 20 20 20 20 20 20 20 runc">@divTrunc</a>,............
a6c0 20 20 20 20 20 3c 61 20 68 72 65 66 3d 22 23 64 69 76 46 6c 6f 6f 72 22 3e 40 64 69 76 46 6c 6f .....<a.href="#divFloor">@divFlo
a6e0 6f 72 3c 2f 61 3e 2c 20 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 61 20 68 72 or</a>,.or.................<a.hr
a700 65 66 3d 22 23 64 69 76 45 78 61 63 74 22 3e 40 64 69 76 45 78 61 63 74 3c 2f 61 3e 20 69 6e 73 ef="#divExact">@divExact</a>.ins
a720 74 65 61 64 20 6f 66 20 3c 63 6f 64 65 3e 2f 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 tead.of.<code>/</code>..........
a740 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 ......</li>.............</ul>...
a760 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 ........</td>...........<td>....
a780 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e .........<pre><code.class="zig">
a7a0 31 30 20 2f 20 35 20 3d 3d 20 32 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 10./.5.==.2</code></pre>........
a7c0 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c ...</td>.........</tr>.........<
a7e0 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 tr>...........<td><pre><code.cla
a800 73 73 3d 22 7a 69 67 22 3e 61 20 25 20 62 0a 61 20 25 3d 20 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 ss="zig">a.%.b.a.%=.b</code></pr
a820 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 e></td>...........<td>..........
a840 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 ...<ul>...............<li><a.hre
a860 66 3d 22 23 49 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a f="#Integers">Integers</a></li>.
a880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 61 ..............<li><a.href="#Floa
a8a0 74 73 22 3e 46 6c 6f 61 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 ts">Floats</a></li>.............
a8c0 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 </ul>...........</td>...........
a8e0 3c 74 64 3e 52 65 6d 61 69 6e 64 65 72 20 44 69 76 69 73 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 <td>Remainder.Division..........
a900 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 43 61 6e 20 63 ....<ul>...............<li>Can.c
a920 61 75 73 65 20 3c 61 20 68 72 65 66 3d 22 23 44 69 76 69 73 69 6f 6e 2d 62 79 2d 5a 65 72 6f 22 ause.<a.href="#Division-by-Zero"
a940 3e 44 69 76 69 73 69 6f 6e 20 62 79 20 5a 65 72 6f 3c 2f 61 3e 20 66 6f 72 20 69 6e 74 65 67 65 >Division.by.Zero</a>.for.intege
a960 72 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 43 61 6e 20 63 rs.</li>...............<li>Can.c
a980 61 75 73 65 20 3c 61 20 68 72 65 66 3d 22 23 44 69 76 69 73 69 6f 6e 2d 62 79 2d 5a 65 72 6f 22 ause.<a.href="#Division-by-Zero"
a9a0 3e 44 69 76 69 73 69 6f 6e 20 62 79 20 5a 65 72 6f 3c 2f 61 3e 20 66 6f 72 20 66 6c 6f 61 74 73 >Division.by.Zero</a>.for.floats
a9c0 20 69 6e 20 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 61 74 69 6e 67 2d 50 6f 69 6e 74 2d 4f 70 65 .in.<a.href="#Floating-Point-Ope
a9e0 72 61 74 69 6f 6e 73 22 3e 46 6c 6f 61 74 4d 6f 64 65 2e 4f 70 74 69 6d 69 7a 65 64 20 4d 6f 64 rations">FloatMode.Optimized.Mod
aa00 65 3c 2f 61 3e 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 46 6f e</a>.</li>...............<li>Fo
aa20 72 20 6e 6f 6e 2d 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2d 6b 6e 6f 77 6e 20 73 69 67 6e 65 64 20 r.non-compile-time-known.signed.
aa40 69 6e 74 65 67 65 72 73 2c 20 6d 75 73 74 20 75 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 integers,.must.use..............
aa60 20 20 20 3c 61 20 68 72 65 66 3d 22 23 72 65 6d 22 3e 40 72 65 6d 3c 2f 61 3e 20 6f 72 0a 20 20 ...<a.href="#rem">@rem</a>.or...
aa80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 61 20 68 72 65 66 3d 22 23 6d 6f 64 22 3e 40 6d 6f ..............<a.href="#mod">@mo
aaa0 64 3c 2f 61 3e 20 69 6e 73 74 65 61 64 20 6f 66 20 3c 63 6f 64 65 3e 25 3c 2f 63 6f 64 65 3e 2e d</a>.instead.of.<code>%</code>.
aac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 ...............</li>............
aae0 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 .</ul>...........</td>..........
ab00 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 .<td>.............<pre><code.cla
ab20 73 73 3d 22 7a 69 67 22 3e 31 30 20 25 20 33 20 3d 3d 20 31 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 ss="zig">10.%.3.==.1</code></pre
ab40 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a >...........</td>.........</tr>.
ab60 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e ........<tr>...........<td><pre>
ab80 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 26 6c 74 3b 26 6c 74 3b 20 62 0a 61 <code.class="zig">a.&lt;&lt;.b.a
aba0 20 26 6c 74 3b 26 6c 74 3b 3d 20 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 .&lt;&lt;=.b</code></pre></td>..
abc0 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 .........<td>.............<ul>..
abe0 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e 74 65 67 .............<li><a.href="#Integ
ac00 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 ers">Integers</a></li>..........
ac20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 ...</ul>...........</td>........
ac40 20 20 20 3c 74 64 3e 42 69 74 20 53 68 69 66 74 20 4c 65 66 74 2e 0a 20 20 20 20 20 20 20 20 20 ...<td>Bit.Shift.Left...........
ac60 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 53 65 65 20 61 6c ...<ul>...............<li>See.al
ac80 73 6f 20 3c 61 20 68 72 65 66 3d 22 23 73 68 6c 45 78 61 63 74 22 3e 40 73 68 6c 45 78 61 63 74 so.<a.href="#shlExact">@shlExact
aca0 3c 2f 61 3e 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 53 65 65 </a>.</li>...............<li>See
acc0 20 61 6c 73 6f 20 3c 61 20 68 72 65 66 3d 22 23 73 68 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 22 .also.<a.href="#shlWithOverflow"
ace0 3e 40 73 68 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 61 3e 2e 3c 2f 6c 69 3e 0a 20 20 20 20 >@shlWithOverflow</a>.</li>.....
ad00 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 ........</ul>...........</td>...
ad20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 ........<td>.............<pre><c
ad40 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 31 20 26 6c 74 3b 26 6c 74 3b 20 38 20 3d 3d 20 ode.class="zig">1.&lt;&lt;.8.==.
ad60 32 35 36 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 256</code></pre>...........</td>
ad80 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 .........</tr>.........<tr>.....
ada0 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 ......<td><pre><code.class="zig"
adc0 3e 61 20 26 67 74 3b 26 67 74 3b 20 62 0a 61 20 26 67 74 3b 26 67 74 3b 3d 20 62 3c 2f 63 6f 64 >a.&gt;&gt;.b.a.&gt;&gt;=.b</cod
ade0 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 e></pre></td>...........<td>....
ae00 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e .........<ul>...............<li>
ae20 3c 61 20 68 72 65 66 3d 22 23 49 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e <a.href="#Integers">Integers</a>
ae40 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 </li>.............</ul>.........
ae60 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 42 69 74 20 53 68 69 66 74 20 ..</td>...........<td>Bit.Shift.
ae80 52 69 67 68 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 Right..............<ul>.........
aea0 20 20 20 20 20 20 3c 6c 69 3e 53 65 65 20 61 6c 73 6f 20 3c 61 20 68 72 65 66 3d 22 23 73 68 72 ......<li>See.also.<a.href="#shr
aec0 45 78 61 63 74 22 3e 40 73 68 72 45 78 61 63 74 3c 2f 61 3e 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 Exact">@shrExact</a>.</li>......
aee0 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 .......</ul>...........</td>....
af00 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f .......<td>.............<pre><co
af20 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 31 30 20 26 67 74 3b 26 67 74 3b 20 31 20 3d 3d 20 de.class="zig">10.&gt;&gt;.1.==.
af40 35 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 5</code></pre>...........</td>..
af60 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 .......</tr>.........<tr>.......
af80 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 ....<td><pre><code.class="zig">a
afa0 20 26 61 6d 70 3b 20 62 0a 61 20 26 61 6d 70 3b 3d 20 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e .&amp;.b.a.&amp;=.b</code></pre>
afc0 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 </td>...........<td>............
afe0 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d .<ul>...............<li><a.href=
b000 22 23 49 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 "#Integers">Integers</a></li>...
b020 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a ..........</ul>...........</td>.
b040 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 42 69 74 77 69 73 65 20 41 4e 44 2e 0a 20 20 20 20 20 ..........<td>Bitwise.AND.......
b060 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 .....</td>...........<td>.......
b080 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 30 62 30 ......<pre><code.class="zig">0b0
b0a0 31 31 20 26 61 6d 70 3b 20 30 62 31 30 31 20 3d 3d 20 30 62 30 30 31 3c 2f 63 6f 64 65 3e 3c 2f 11.&amp;.0b101.==.0b001</code></
b0c0 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 pre>...........</td>.........</t
b0e0 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 r>.........<tr>...........<td><p
b100 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 7c 20 62 0a 61 20 7c 3d 20 re><code.class="zig">a.|.b.a.|=.
b120 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 b</code></pre></td>...........<t
b140 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 d>.............<ul>.............
b160 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 ..<li><a.href="#Integers">Intege
b180 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 rs</a></li>.............</ul>...
b1a0 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 42 69 74 77 ........</td>...........<td>Bitw
b1c0 69 73 65 20 4f 52 2e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 ise.OR............</td>.........
b1e0 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c ..<td>.............<pre><code.cl
b200 61 73 73 3d 22 7a 69 67 22 3e 30 62 30 31 30 20 7c 20 30 62 31 30 30 20 3d 3d 20 30 62 31 31 30 ass="zig">0b010.|.0b100.==.0b110
b220 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 </code></pre>...........</td>...
b240 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 ......</tr>.........<tr>........
b260 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 ...<td><pre><code.class="zig">a.
b280 5e 20 62 0a 61 20 5e 3d 20 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 ^.b.a.^=.b</code></pre></td>....
b2a0 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 .......<td>.............<ul>....
b2c0 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e 74 65 67 65 72 ...........<li><a.href="#Integer
b2e0 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 s">Integers</a></li>............
b300 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 .</ul>...........</td>..........
b320 20 3c 74 64 3e 42 69 74 77 69 73 65 20 58 4f 52 2e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 .<td>Bitwise.XOR............</td
b340 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 >...........<td>.............<pr
b360 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 30 62 30 31 31 20 5e 20 30 62 31 30 e><code.class="zig">0b011.^.0b10
b380 31 20 3d 3d 20 30 62 31 31 30 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 1.==.0b110</code></pre>.........
b3a0 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 ..</td>.........</tr>.........<t
b3c0 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 r>...........<td><pre><code.clas
b3e0 73 3d 22 7a 69 67 22 3e 7e 61 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 s="zig">~a<code></pre></td>.....
b400 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 ......<td>.............<ul>.....
b420 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e 74 65 67 65 72 73 ..........<li><a.href="#Integers
b440 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 ">Integers</a></li>.............
b460 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 </ul>...........</td>...........
b480 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 42 69 74 77 69 73 65 20 4e 4f 54 2e 0a 20 20 <td>.............Bitwise.NOT....
b4a0 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 ........</td>...........<td>....
b4c0 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e .........<pre><code.class="zig">
b4e0 7e 75 38 28 30 62 30 31 30 31 31 31 31 29 20 3d 3d 20 30 62 31 30 31 30 30 30 30 3c 2f 63 6f 64 ~u8(0b0101111).==.0b1010000</cod
b500 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 e></pre>...........</td>........
b520 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 .</tr>.........<tr>...........<t
b540 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 3f 3f 20 62 3c d><pre><code.class="zig">a.??.b<
b560 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e /code></pre></td>...........<td>
b580 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .............<ul>...............
b5a0 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 4e 75 6c 6c 61 62 6c 65 73 22 3e 4e 75 6c 6c 61 62 6c <li><a.href="#Nullables">Nullabl
b5c0 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 es</a></li>.............</ul>...
b5e0 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 49 66 20 3c ........</td>...........<td>If.<
b600 63 6f 64 65 3e 61 3c 2f 63 6f 64 65 3e 20 69 73 20 3c 63 6f 64 65 3e 6e 75 6c 6c 3c 2f 63 6f 64 code>a</code>.is.<code>null</cod
b620 65 3e 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 62 3c e>,.............returns.<code>b<
b640 2f 63 6f 64 65 3e 20 28 22 64 65 66 61 75 6c 74 20 76 61 6c 75 65 22 29 2c 0a 20 20 20 20 20 20 /code>.("default.value"),.......
b660 20 20 20 20 20 20 6f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e 73 20 74 68 65 20 75 6e 77 72 ......otherwise.returns.the.unwr
b680 61 70 70 65 64 20 76 61 6c 75 65 20 6f 66 20 3c 63 6f 64 65 3e 61 3c 2f 63 6f 64 65 3e 2e 0a 20 apped.value.of.<code>a</code>...
b6a0 20 20 20 20 20 20 20 20 20 20 20 4e 6f 74 65 20 74 68 61 74 20 3c 63 6f 64 65 3e 62 3c 2f 63 6f ...........Note.that.<code>b</co
b6c0 64 65 3e 20 6d 61 79 20 62 65 20 61 20 76 61 6c 75 65 20 6f 66 20 74 79 70 65 20 3c 61 20 68 72 de>.may.be.a.value.of.type.<a.hr
b6e0 65 66 3d 22 23 6e 6f 72 65 74 75 72 6e 22 3e 6e 6f 72 65 74 75 72 6e 3c 2f 61 3e 2e 0a 20 20 20 ef="#noreturn">noreturn</a>.....
b700 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 .......</td>...........<td>.....
b720 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 ........<pre><code.class="zig">c
b740 6f 6e 73 74 20 76 61 6c 75 65 3a 20 3f 75 33 32 20 3d 20 6e 75 6c 6c 3b 0a 63 6f 6e 73 74 20 75 onst.value:.?u32.=.null;.const.u
b760 6e 77 72 61 70 70 65 64 20 3d 20 76 61 6c 75 65 20 3f 3f 20 31 32 33 34 3b 0a 75 6e 77 72 61 70 nwrapped.=.value.??.1234;.unwrap
b780 70 65 64 20 3d 3d 20 31 32 33 34 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 ped.==.1234</code></pre>........
b7a0 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c ...</td>.........</tr>.........<
b7c0 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 tr>...........<td><pre><code.cla
b7e0 73 73 3d 22 7a 69 67 22 3e 3f 3f 61 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 ss="zig">??a</code></pre></td>..
b800 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 .........<td>.............<ul>..
b820 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 4e 75 6c 6c 61 .............<li><a.href="#Nulla
b840 62 6c 65 73 22 3e 4e 75 6c 6c 61 62 6c 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 bles">Nullables</a></li>........
b860 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 .....</ul>...........</td>......
b880 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 45 71 75 69 76 61 6c 65 6e 74 .....<td>.............Equivalent
b8a0 20 74 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 .to:.............<pre><code.clas
b8c0 73 3d 22 7a 69 67 22 3e 61 20 3f 3f 20 75 6e 72 65 61 63 68 61 62 6c 65 3c 2f 63 6f 64 65 3e 3c s="zig">a.??.unreachable</code><
b8e0 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 /pre>...........</td>...........
b900 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 <td>.............<pre><code.clas
b920 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 76 61 6c 75 65 3a 20 3f 75 33 32 20 3d 20 35 36 37 38 s="zig">const.value:.?u32.=.5678
b940 3b 0a 3f 3f 76 61 6c 75 65 20 3d 3d 20 35 36 37 38 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 ;.??value.==.5678</code></pre>..
b960 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 .........</td>.........</tr>....
b980 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f .....<tr>...........<td><pre><co
b9a0 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 63 61 74 63 68 20 62 0a 61 20 63 61 74 63 68 de.class="zig">a.catch.b.a.catch
b9c0 20 7c 65 72 72 7c 20 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 .|err|.b</code></pre></td>......
b9e0 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 .....<td>.............<ul>......
ba00 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 45 72 72 6f 72 73 22 3e 45 .........<li><a.href="#Errors">E
ba20 72 72 6f 72 20 55 6e 69 6f 6e 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 rror.Unions</a></li>............
ba40 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 .</ul>...........</td>..........
ba60 20 3c 74 64 3e 49 66 20 3c 63 6f 64 65 3e 61 3c 2f 63 6f 64 65 3e 20 69 73 20 61 6e 20 3c 63 6f .<td>If.<code>a</code>.is.an.<co
ba80 64 65 3e 65 72 72 6f 72 3c 2f 63 6f 64 65 3e 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 de>error</code>,.............ret
baa0 75 72 6e 73 20 3c 63 6f 64 65 3e 62 3c 2f 63 6f 64 65 3e 20 28 22 64 65 66 61 75 6c 74 20 76 61 urns.<code>b</code>.("default.va
bac0 6c 75 65 22 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 74 68 65 72 77 69 73 65 20 72 65 74 lue"),.............otherwise.ret
bae0 75 72 6e 73 20 74 68 65 20 75 6e 77 72 61 70 70 65 64 20 76 61 6c 75 65 20 6f 66 20 3c 63 6f 64 urns.the.unwrapped.value.of.<cod
bb00 65 3e 61 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 4e 6f 74 65 20 74 68 61 e>a</code>..............Note.tha
bb20 74 20 3c 63 6f 64 65 3e 62 3c 2f 63 6f 64 65 3e 20 6d 61 79 20 62 65 20 61 20 76 61 6c 75 65 20 t.<code>b</code>.may.be.a.value.
bb40 6f 66 20 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 23 6e 6f 72 65 74 75 72 6e 22 3e 6e 6f 72 65 of.type.<a.href="#noreturn">nore
bb60 74 75 72 6e 3c 2f 61 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 63 6f 64 65 3e 65 72 72 3c turn</a>..............<code>err<
bb80 2f 63 6f 64 65 3e 20 69 73 20 74 68 65 20 3c 63 6f 64 65 3e 65 72 72 6f 72 3c 2f 63 6f 64 65 3e /code>.is.the.<code>error</code>
bba0 20 61 6e 64 20 69 73 20 69 6e 20 73 63 6f 70 65 20 6f 66 20 74 68 65 20 65 78 70 72 65 73 73 69 .and.is.in.scope.of.the.expressi
bbc0 6f 6e 20 3c 63 6f 64 65 3e 62 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 on.<code>b</code>............</t
bbe0 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 d>...........<td>.............<p
bc00 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 76 61 6c 75 65 re><code.class="zig">const.value
bc20 3a 20 65 72 72 6f 72 21 75 33 32 20 3d 20 65 72 72 6f 72 2e 42 72 6f 6b 65 6e 3b 0a 63 6f 6e 73 :.error!u32.=.error.Broken;.cons
bc40 74 20 75 6e 77 72 61 70 70 65 64 20 3d 20 76 61 6c 75 65 20 63 61 74 63 68 20 31 32 33 34 3b 0a t.unwrapped.=.value.catch.1234;.
bc60 75 6e 77 72 61 70 70 65 64 20 3d 3d 20 31 32 33 34 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 unwrapped.==.1234</code></pre>..
bc80 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 .........</td>.........</tr>....
bca0 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f .....<tr>...........<td><pre><co
bcc0 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 61 6e 64 20 62 3c 63 6f 64 65 3e 3c 2f 70 72 de.class="zig">a.and.b<code></pr
bce0 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 e></td>...........<td>..........
bd00 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 ...<ul>...............<li><a.hre
bd20 66 3d 22 23 50 72 69 6d 69 74 69 76 65 2d 54 79 70 65 73 22 3e 62 6f 6f 6c 3c 2f 61 3e 3c 2f 6c f="#Primitive-Types">bool</a></l
bd40 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c i>.............</ul>...........<
bd60 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 /td>...........<td>.............
bd80 49 66 20 3c 63 6f 64 65 3e 61 3c 2f 63 6f 64 65 3e 20 69 73 20 3c 63 6f 64 65 3e 66 61 6c 73 65 If.<code>a</code>.is.<code>false
bda0 3c 2f 63 6f 64 65 3e 2c 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 66 61 6c 73 65 3c 2f 63 6f </code>,.returns.<code>false</co
bdc0 64 65 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 69 74 68 6f 75 74 20 65 76 61 6c 75 61 74 69 de>.............without.evaluati
bde0 6e 67 20 3c 63 6f 64 65 3e 62 3c 2f 63 6f 64 65 3e 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 72 65 ng.<code>b</code>..Otherwise,.re
be00 74 75 6e 73 20 3c 63 6f 64 65 3e 62 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 3c tuns.<code>b</code>............<
be20 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 /td>...........<td>.............
be40 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 61 6c 73 65 20 61 6e 64 <pre><code.class="zig">false.and
be60 20 74 72 75 65 20 3d 3d 20 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 .true.==.false</code></pre>.....
be80 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 ......</td>.........</tr>.......
bea0 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 ..<tr>...........<td><pre><code.
bec0 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 6f 72 20 62 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f class="zig">a.or.b<code></pre></
bee0 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c td>...........<td>.............<
bf00 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 ul>...............<li><a.href="#
bf20 50 72 69 6d 69 74 69 76 65 2d 54 79 70 65 73 22 3e 62 6f 6f 6c 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 Primitive-Types">bool</a></li>..
bf40 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e ...........</ul>...........</td>
bf60 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 66 20 3c ...........<td>.............If.<
bf80 63 6f 64 65 3e 61 3c 2f 63 6f 64 65 3e 20 69 73 20 3c 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f 64 code>a</code>.is.<code>true</cod
bfa0 65 3e 2c 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f 64 65 3e 0a 20 20 e>,.returns.<code>true</code>...
bfc0 20 20 20 20 20 20 20 20 20 20 77 69 74 68 6f 75 74 20 65 76 61 6c 75 61 74 69 6e 67 20 3c 63 6f ..........without.evaluating.<co
bfe0 64 65 3e 62 3c 2f 63 6f 64 65 3e 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 72 65 74 75 6e 73 20 3c de>b</code>..Otherwise,.retuns.<
c000 63 6f 64 65 3e 62 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 code>b</code>............</td>..
c020 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c .........<td>.............<pre><
c040 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 61 6c 73 65 20 6f 72 20 74 72 75 65 20 3d code.class="zig">false.or.true.=
c060 3d 20 74 72 75 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f =.true</code></pre>...........</
c080 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 td>.........</tr>.........<tr>..
c0a0 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a .........<td><pre><code.class="z
c0c0 69 67 22 3e 21 61 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 ig">!a<code></pre></td>.........
c0e0 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 ..<td>.............<ul>.........
c100 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 50 72 69 6d 69 74 69 76 65 2d 54 79 ......<li><a.href="#Primitive-Ty
c120 70 65 73 22 3e 62 6f 6f 6c 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c pes">bool</a></li>.............<
c140 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c /ul>...........</td>...........<
c160 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 42 6f 6f 6c 65 61 6e 20 4e 4f 54 2e 0a 20 20 20 td>.............Boolean.NOT.....
c180 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 .......</td>...........<td>.....
c1a0 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 21 ........<pre><code.class="zig">!
c1c0 66 61 6c 73 65 20 3d 3d 20 74 72 75 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 false.==.true</code></pre>......
c1e0 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 .....</td>.........</tr>........
c200 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 .<tr>...........<td><pre><code.c
c220 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 3d 3d 20 62 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 lass="zig">a.==.b<code></pre></t
c240 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 d>...........<td>.............<u
c260 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 l>...............<li><a.href="#I
c280 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 ntegers">Integers</a></li>......
c2a0 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 61 74 73 22 3e 46 .........<li><a.href="#Floats">F
c2c0 6c 6f 61 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 loats</a></li>...............<li
c2e0 3e 3c 61 20 68 72 65 66 3d 22 23 50 72 69 6d 69 74 69 76 65 2d 54 79 70 65 73 22 3e 62 6f 6f 6c ><a.href="#Primitive-Types">bool
c300 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 </a></li>...............<li><a.h
c320 72 65 66 3d 22 23 50 72 69 6d 69 74 69 76 65 2d 54 79 70 65 73 22 3e 74 79 70 65 3c 2f 61 3e 3c ref="#Primitive-Types">type</a><
c340 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 /li>.............</ul>..........
c360 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 .</td>...........<td>...........
c380 20 20 52 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f 64 65 3e 20 69 66 20 61 ..Returns.<code>true</code>.if.a
c3a0 20 61 6e 64 20 62 20 61 72 65 20 65 71 75 61 6c 2c 20 6f 74 68 65 72 77 69 73 65 20 72 65 74 75 .and.b.are.equal,.otherwise.retu
c3c0 72 6e 73 20 3c 63 6f 64 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 rns.<code>false</code>..........
c3e0 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 ..</td>...........<td>..........
c400 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 28 31 20 3d 3d 20 ...<pre><code.class="zig">(1.==.
c420 31 29 20 3d 3d 20 74 72 75 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 1).==.true</code></pre>.........
c440 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 ..</td>.........</tr>.........<t
c460 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 r>...........<td><pre><code.clas
c480 73 3d 22 7a 69 67 22 3e 61 20 3d 3d 20 6e 75 6c 6c 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 s="zig">a.==.null<code></pre></t
c4a0 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 d>...........<td>.............<u
c4c0 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 4e l>...............<li><a.href="#N
c4e0 75 6c 6c 61 62 6c 65 73 22 3e 4e 75 6c 6c 61 62 6c 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 ullables">Nullables</a></li>....
c500 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 .........</ul>...........</td>..
c520 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 52 65 74 75 72 6e .........<td>.............Return
c540 73 20 3c 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f 64 65 3e 20 69 66 20 61 20 69 73 20 3c 63 6f 64 s.<code>true</code>.if.a.is.<cod
c560 65 3e 6e 75 6c 6c 3c 2f 63 6f 64 65 3e 2c 20 6f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e 73 e>null</code>,.otherwise.returns
c580 20 3c 63 6f 64 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 3c .<code>false</code>............<
c5a0 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 /td>...........<td>.............
c5c0 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 76 61 6c <pre><code.class="zig">const.val
c5e0 75 65 3a 20 3f 75 33 32 20 3d 20 6e 75 6c 6c 3b 0a 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 3c 2f ue:.?u32.=.null;.value.==.null</
c600 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 code></pre>...........</td>.....
c620 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 ....</tr>.........<tr>..........
c640 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 21 3d .<td><pre><code.class="zig">a.!=
c660 20 62 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 .b<code></pre></td>...........<t
c680 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 d>.............<ul>.............
c6a0 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 ..<li><a.href="#Integers">Intege
c6c0 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 rs</a></li>...............<li><a
c6e0 20 68 72 65 66 3d 22 23 46 6c 6f 61 74 73 22 3e 46 6c 6f 61 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a .href="#Floats">Floats</a></li>.
c700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 50 72 69 6d ..............<li><a.href="#Prim
c720 69 74 69 76 65 2d 54 79 70 65 73 22 3e 62 6f 6f 6c 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 itive-Types">bool</a></li>......
c740 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 50 72 69 6d 69 74 69 76 65 .........<li><a.href="#Primitive
c760 2d 54 79 70 65 73 22 3e 74 79 70 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 -Types">type</a></li>...........
c780 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 ..</ul>...........</td>.........
c7a0 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 73 20 3c 63 6f 64 65 ..<td>.............Returns.<code
c7c0 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 20 69 66 20 61 20 61 6e 64 20 62 20 61 72 65 20 65 71 75 >false</code>.if.a.and.b.are.equ
c7e0 61 6c 2c 20 6f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 74 72 75 65 al,.otherwise.returns.<code>true
c800 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 </code>............</td>........
c820 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 ...<td>.............<pre><code.c
c840 6c 61 73 73 3d 22 7a 69 67 22 3e 28 31 20 21 3d 20 31 29 20 3d 3d 20 66 61 6c 73 65 3c 2f 63 6f lass="zig">(1.!=.1).==.false</co
c860 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 de></pre>...........</td>.......
c880 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c ..</tr>.........<tr>...........<
c8a0 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 26 67 74 3b td><pre><code.class="zig">a.&gt;
c8c0 20 62 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 .b<code></pre></td>...........<t
c8e0 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 d>.............<ul>.............
c900 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 ..<li><a.href="#Integers">Intege
c920 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 rs</a></li>...............<li><a
c940 20 68 72 65 66 3d 22 23 46 6c 6f 61 74 73 22 3e 46 6c 6f 61 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a .href="#Floats">Floats</a></li>.
c960 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 ............</ul>...........</td
c980 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 52 65 74 >...........<td>.............Ret
c9a0 75 72 6e 73 20 3c 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f 64 65 3e 20 69 66 20 61 20 69 73 20 67 urns.<code>true</code>.if.a.is.g
c9c0 72 65 61 74 65 72 20 74 68 61 6e 20 62 2c 20 6f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e 73 reater.than.b,.otherwise.returns
c9e0 20 3c 63 6f 64 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 3c .<code>false</code>............<
ca00 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 /td>...........<td>.............
ca20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 28 32 20 26 67 74 3b 20 31 <pre><code.class="zig">(2.&gt;.1
ca40 29 20 3d 3d 20 74 72 75 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 ).==.true</code></pre>..........
ca60 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 .</td>.........</tr>.........<tr
ca80 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 >...........<td><pre><code.class
caa0 3d 22 7a 69 67 22 3e 61 20 26 67 74 3b 3d 20 62 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 ="zig">a.&gt;=.b<code></pre></td
cac0 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c >...........<td>.............<ul
cae0 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e >...............<li><a.href="#In
cb00 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 tegers">Integers</a></li>.......
cb20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 61 74 73 22 3e 46 6c ........<li><a.href="#Floats">Fl
cb40 6f 61 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a oats</a></li>.............</ul>.
cb60 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 ..........</td>...........<td>..
cb80 20 20 20 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 74 72 75 65 3c 2f 63 ...........Returns.<code>true</c
cba0 6f 64 65 3e 20 69 66 20 61 20 69 73 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 6f 72 20 65 71 75 ode>.if.a.is.greater.than.or.equ
cbc0 61 6c 20 74 6f 20 62 2c 20 6f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 65 al.to.b,.otherwise.returns.<code
cbe0 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 >false</code>............</td>..
cc00 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c .........<td>.............<pre><
cc20 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 28 32 20 26 67 74 3b 3d 20 31 29 20 3d 3d 20 code.class="zig">(2.&gt;=.1).==.
cc40 74 72 75 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 true</code></pre>...........</td
cc60 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 >.........</tr>.........<tr>....
cc80 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 .......<td><pre><code.class="zig
cca0 22 3e 61 20 26 6c 74 3b 20 62 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 ">a.&lt;.b<code></pre></td>.....
ccc0 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 ......<td>.............<ul>.....
cce0 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6e 74 65 67 65 72 73 ..........<li><a.href="#Integers
cd00 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 ">Integers</a></li>.............
cd20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 61 74 73 22 3e 46 6c 6f 61 74 73 3c 2f ..<li><a.href="#Floats">Floats</
cd40 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 a></li>.............</ul>.......
cd60 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 ....</td>...........<td>........
cd80 20 20 20 20 20 52 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f 64 65 3e 20 69 .....Returns.<code>true</code>.i
cda0 66 20 61 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20 62 2c 20 6f 74 68 65 72 77 69 73 65 20 72 65 f.a.is.less.than.b,.otherwise.re
cdc0 74 75 72 6e 73 20 3c 63 6f 64 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 turns.<code>false</code>........
cde0 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 ....</td>...........<td>........
ce00 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 28 31 20 26 .....<pre><code.class="zig">(1.&
ce20 6c 74 3b 20 32 29 20 3d 3d 20 74 72 75 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 lt;.2).==.true</code></pre>.....
ce40 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 ......</td>.........</tr>.......
ce60 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 ..<tr>...........<td><pre><code.
ce80 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 26 6c 74 3b 3d 20 62 3c 63 6f 64 65 3e 3c 2f 70 72 65 class="zig">a.&lt;=.b<code></pre
cea0 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 ></td>...........<td>...........
cec0 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 ..<ul>...............<li><a.href
cee0 3d 22 23 49 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 ="#Integers">Integers</a></li>..
cf00 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 61 74 .............<li><a.href="#Float
cf20 73 22 3e 46 6c 6f 61 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c s">Floats</a></li>.............<
cf40 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c /ul>...........</td>...........<
cf60 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 74 72 td>.............Returns.<code>tr
cf80 75 65 3c 2f 63 6f 64 65 3e 20 69 66 20 61 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20 6f 72 20 65 ue</code>.if.a.is.less.than.or.e
cfa0 71 75 61 6c 20 74 6f 20 62 2c 20 6f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e 73 20 3c 63 6f qual.to.b,.otherwise.returns.<co
cfc0 64 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e de>false</code>............</td>
cfe0 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 ...........<td>.............<pre
d000 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 28 31 20 26 6c 74 3b 3d 20 32 29 20 3d ><code.class="zig">(1.&lt;=.2).=
d020 3d 20 74 72 75 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f =.true</code></pre>...........</
d040 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 td>.........</tr>.........<tr>..
d060 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a .........<td><pre><code.class="z
d080 69 67 22 3e 61 20 2b 2b 20 62 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 ig">a.++.b<code></pre></td>.....
d0a0 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 ......<td>.............<ul>.....
d0c0 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 41 72 72 61 79 73 22 3e ..........<li><a.href="#Arrays">
d0e0 41 72 72 61 79 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c Arrays</a></li>.............</ul
d100 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e >...........</td>...........<td>
d120 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 72 72 61 79 20 63 6f 6e 63 61 74 65 6e 61 74 69 6f 6e .............Array.concatenation
d140 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..............<ul>..............
d160 20 3c 6c 69 3e 4f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 77 68 65 6e 20 3c 63 6f 64 65 3e 61 .<li>Only.available.when.<code>a
d180 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 3c 63 6f 64 65 3e 62 3c 2f 63 6f 64 65 3e 20 61 72 65 20 3c </code>.and.<code>b</code>.are.<
d1a0 61 20 68 72 65 66 3d 22 23 63 6f 6d 70 74 69 6d 65 22 3e 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 a.href="#comptime">compile-time.
d1c0 6b 6e 6f 77 6e 3c 2f 61 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 known</a>..............</ul>....
d1e0 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 .......</td>...........<td>.....
d200 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 ........<pre><code.class="zig">c
d220 6f 6e 73 74 20 6d 65 6d 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 65 6d 3b 0a 63 onst.mem.=.@import("std").mem;.c
d240 6f 6e 73 74 20 61 72 72 61 79 31 20 3d 20 5b 5d 75 33 32 7b 31 2c 32 7d 3b 0a 63 6f 6e 73 74 20 onst.array1.=.[]u32{1,2};.const.
d260 61 72 72 61 79 32 20 3d 20 5b 5d 75 33 32 7b 33 2c 34 7d 3b 0a 63 6f 6e 73 74 20 74 6f 67 65 74 array2.=.[]u32{3,4};.const.toget
d280 68 65 72 20 3d 20 61 72 72 61 79 31 20 2b 2b 20 61 72 72 61 79 32 3b 0a 6d 65 6d 2e 65 71 6c 28 her.=.array1.++.array2;.mem.eql(
d2a0 75 33 32 2c 20 74 6f 67 65 74 68 65 72 2c 20 5b 5d 75 33 32 7b 31 2c 32 2c 33 2c 34 7d 29 3c 2f u32,.together,.[]u32{1,2,3,4})</
d2c0 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 code></pre>...........</td>.....
d2e0 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 ....</tr>.........<tr>..........
d300 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 2a 2a .<td><pre><code.class="zig">a.**
d320 20 62 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 .b<code></pre></td>...........<t
d340 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 d>.............<ul>.............
d360 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 41 72 72 61 79 73 22 3e 41 72 72 61 79 73 3c 2f ..<li><a.href="#Arrays">Arrays</
d380 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 a></li>.............</ul>.......
d3a0 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 ....</td>...........<td>........
d3c0 20 20 20 20 20 41 72 72 61 79 20 6d 75 6c 74 69 70 6c 69 63 61 74 69 6f 6e 2e 0a 20 20 20 20 20 .....Array.multiplication.......
d3e0 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 4f 6e .......<ul>...............<li>On
d400 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 77 68 65 6e 20 3c 63 6f 64 65 3e 61 3c 2f 63 6f 64 65 3e ly.available.when.<code>a</code>
d420 20 61 6e 64 20 3c 63 6f 64 65 3e 62 3c 2f 63 6f 64 65 3e 20 61 72 65 20 3c 61 20 68 72 65 66 3d .and.<code>b</code>.are.<a.href=
d440 22 23 63 6f 6d 70 74 69 6d 65 22 3e 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6b 6e 6f 77 6e 3c 2f "#comptime">compile-time.known</
d460 61 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 a>..............</ul>...........
d480 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 </td>...........<td>............
d4a0 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 6d 65 .<pre><code.class="zig">const.me
d4c0 6d 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 65 6d 3b 0a 63 6f 6e 73 74 20 70 61 m.=.@import("std").mem;.const.pa
d4e0 74 74 65 72 6e 20 3d 20 22 61 62 22 20 2a 2a 20 33 3b 0a 6d 65 6d 2e 65 71 6c 28 75 38 2c 20 70 ttern.=."ab".**.3;.mem.eql(u8,.p
d500 61 74 74 65 72 6e 2c 20 22 61 62 61 62 61 62 22 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 attern,."ababab")</code></pre>..
d520 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 .........</td>.........</tr>....
d540 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f .....<tr>...........<td><pre><co
d560 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2a 61 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 de.class="zig">*a<code></pre></t
d580 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 d>...........<td>.............<u
d5a0 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 50 l>...............<li><a.href="#P
d5c0 6f 69 6e 74 65 72 73 22 3e 50 6f 69 6e 74 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 ointers">Pointers</a></li>......
d5e0 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 .......</ul>...........</td>....
d600 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 50 6f 69 6e 74 65 72 20 .......<td>.............Pointer.
d620 64 65 72 65 66 65 72 65 6e 63 65 2e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 dereference............</td>....
d640 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f .......<td>.............<pre><co
d660 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 78 3a 20 75 33 32 20 3d 20 31 32 de.class="zig">const.x:.u32.=.12
d680 33 34 3b 0a 63 6f 6e 73 74 20 70 74 72 20 3d 20 26 61 6d 70 3b 78 3b 0a 2a 78 20 3d 3d 20 31 32 34;.const.ptr.=.&amp;x;.*x.==.12
d6a0 33 34 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 34</code></pre>...........</td>.
d6c0 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 ........</tr>.........<tr>......
d6e0 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e .....<td><pre><code.class="zig">
d700 26 61 6d 70 3b 61 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 &amp;a<code></pre></td>.........
d720 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 6c 6c 20 74 79 70 65 73 0a 20 20 20 ..<td>.............All.types....
d740 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 .......</td>...........<td>.....
d760 20 20 20 20 20 20 20 20 41 64 64 72 65 73 73 20 6f 66 2e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f ........Address.of............</
d780 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c td>...........<td>.............<
d7a0 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 78 3a 20 75 pre><code.class="zig">const.x:.u
d7c0 33 32 20 3d 20 31 32 33 34 3b 0a 63 6f 6e 73 74 20 70 74 72 20 3d 20 26 61 6d 70 3b 78 3b 0a 2a 32.=.1234;.const.ptr.=.&amp;x;.*
d7e0 78 20 3d 3d 20 31 32 33 34 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 x.==.1234</code></pre>..........
d800 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 3c 2f 74 61 62 .</td>.........</tr>.......</tab
d820 6c 65 3e 0a 20 20 20 20 20 20 3c 2f 64 69 76 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 le>.......</div>..............<h
d840 32 20 69 64 3d 22 50 72 65 63 65 64 65 6e 63 65 22 3e 50 72 65 63 65 64 65 6e 63 65 3c 2f 68 32 2.id="Precedence">Precedence</h2
d860 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 3e 78 28 29 20 78 5b 5d 20 78 2e 79 0a >........<pre><code>x().x[].x.y.
d880 61 21 62 0a 21 78 20 2d 78 20 2d 25 78 20 7e 78 20 2a 78 20 26 61 6d 70 3b 78 20 3f 78 20 3f 3f a!b.!x.-x.-%x.~x.*x.&amp;x.?x.??
d8a0 78 0a 78 7b 7d 0a 21 20 2a 20 2f 20 25 20 2a 2a 20 2a 25 0a 2b 20 2d 20 2b 2b 20 2b 25 20 2d 25 x.x{}.!.*./.%.**.*%.+.-.++.+%.-%
d8c0 0a 26 6c 74 3b 26 6c 74 3b 20 26 67 74 3b 26 67 74 3b 0a 26 61 6d 70 3b 0a 5e 0a 7c 0a 3d 3d 20 .&lt;&lt;.&gt;&gt;.&amp;.^.|.==.
d8e0 21 3d 20 26 6c 74 3b 20 26 67 74 3b 20 26 6c 74 3b 3d 20 26 67 74 3b 3d 0a 61 6e 64 0a 6f 72 0a !=.&lt;.&gt;.&lt;=.&gt;=.and.or.
d900 3f 3f 20 63 61 74 63 68 0a 3d 20 2a 3d 20 2f 3d 20 25 3d 20 2b 3d 20 2d 3d 20 26 6c 74 3b 26 6c ??.catch.=.*=./=.%=.+=.-=.&lt;&l
d920 74 3b 3d 20 26 67 74 3b 26 67 74 3b 3d 20 26 61 6d 70 3b 3d 20 5e 3d 20 7c 3d 3c 2f 63 6f 64 65 t;=.&gt;&gt;=.&amp;=.^=.|=</code
d940 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 ></pre>.....................<h1.
d960 69 64 3d 22 41 72 72 61 79 73 22 3e 41 72 72 61 79 73 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c id="Arrays">Arrays</h1>........<
d980 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 61 72 72 61 79 73 2e 7a 69 67 3c 2f 70 3e 3c 70 72 p.class="file">arrays.zig</p><pr
d9a0 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 e><code.class="zig">const.assert
d9c0 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 .=.@import(&quot;std&quot;).debu
d9e0 67 2e 61 73 73 65 72 74 3b 0a 63 6f 6e 73 74 20 6d 65 6d 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 g.assert;.const.mem.=.@import(&q
da00 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 6d 65 6d 3b 0a 0a 2f 2f 20 61 72 72 61 79 20 6c 69 uot;std&quot;).mem;..//.array.li
da20 74 65 72 61 6c 0a 63 6f 6e 73 74 20 6d 65 73 73 61 67 65 20 3d 20 5b 5d 75 38 7b 27 68 27 2c 20 teral.const.message.=.[]u8{'h',.
da40 27 65 27 2c 20 27 6c 27 2c 20 27 6c 27 2c 20 27 6f 27 7d 3b 0a 0a 2f 2f 20 67 65 74 20 74 68 65 'e',.'l',.'l',.'o'};..//.get.the
da60 20 73 69 7a 65 20 6f 66 20 61 6e 20 61 72 72 61 79 0a 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 .size.of.an.array.comptime.{....
da80 20 61 73 73 65 72 74 28 6d 65 73 73 61 67 65 2e 6c 65 6e 20 3d 3d 20 35 29 3b 0a 7d 0a 0a 2f 2f .assert(message.len.==.5);.}..//
daa0 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 20 69 73 20 61 6e 20 61 72 72 61 79 20 6c 69 .a.string.literal.is.an.array.li
dac0 74 65 72 61 6c 0a 63 6f 6e 73 74 20 73 61 6d 65 5f 6d 65 73 73 61 67 65 20 3d 20 26 71 75 6f 74 teral.const.same_message.=.&quot
dae0 3b 68 65 6c 6c 6f 26 71 75 6f 74 3b 3b 0a 0a 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 61 73 ;hello&quot;;..comptime.{.....as
db00 73 65 72 74 28 6d 65 6d 2e 65 71 6c 28 75 38 2c 20 6d 65 73 73 61 67 65 2c 20 73 61 6d 65 5f 6d sert(mem.eql(u8,.message,.same_m
db20 65 73 73 61 67 65 29 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 6d 65 73 essage));.....assert(@typeOf(mes
db40 73 61 67 65 29 20 3d 3d 20 40 74 79 70 65 4f 66 28 73 61 6d 65 5f 6d 65 73 73 61 67 65 29 29 3b sage).==.@typeOf(same_message));
db60 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 69 74 65 72 61 74 65 20 6f 76 65 72 20 61 6e 20 61 .}..test.&quot;iterate.over.an.a
db80 72 72 61 79 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 76 61 72 20 73 75 6d 3a 20 75 73 69 7a 65 20 rray&quot;.{.....var.sum:.usize.
dba0 3d 20 30 3b 0a 20 20 20 20 66 6f 72 20 28 6d 65 73 73 61 67 65 29 20 7c 62 79 74 65 7c 20 7b 0a =.0;.....for.(message).|byte|.{.
dbc0 20 20 20 20 20 20 20 20 73 75 6d 20 2b 3d 20 62 79 74 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 61 ........sum.+=.byte;.....}.....a
dbe0 73 73 65 72 74 28 73 75 6d 20 3d 3d 20 75 73 69 7a 65 28 27 68 27 29 20 2b 20 75 73 69 7a 65 28 ssert(sum.==.usize('h').+.usize(
dc00 27 65 27 29 20 2b 20 75 73 69 7a 65 28 27 6c 27 29 20 2a 20 32 20 2b 20 75 73 69 7a 65 28 27 6f 'e').+.usize('l').*.2.+.usize('o
dc20 27 29 29 3b 0a 7d 0a 0a 2f 2f 20 6d 6f 64 69 66 69 61 62 6c 65 20 61 72 72 61 79 0a 76 61 72 20 '));.}..//.modifiable.array.var.
dc40 73 6f 6d 65 5f 69 6e 74 65 67 65 72 73 3a 20 5b 31 30 30 5d 69 33 32 20 3d 20 75 6e 64 65 66 69 some_integers:.[100]i32.=.undefi
dc60 6e 65 64 3b 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 6d 6f 64 69 66 79 20 61 6e 20 61 72 72 61 79 ned;..test.&quot;modify.an.array
dc80 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 66 6f 72 20 28 73 6f 6d 65 5f 69 6e 74 65 67 65 72 73 29 &quot;.{.....for.(some_integers)
dca0 20 7c 2a 69 74 65 6d 2c 20 69 7c 20 7b 0a 20 20 20 20 20 20 20 20 2a 69 74 65 6d 20 3d 20 69 33 .|*item,.i|.{.........*item.=.i3
dcc0 32 28 69 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 61 73 73 65 72 74 28 73 6f 6d 65 5f 69 6e 74 65 2(i);.....}.....assert(some_inte
dce0 67 65 72 73 5b 31 30 5d 20 3d 3d 20 31 30 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 73 6f 6d 65 gers[10].==.10);.....assert(some
dd00 5f 69 6e 74 65 67 65 72 73 5b 39 39 5d 20 3d 3d 20 39 39 29 3b 0a 7d 0a 0a 2f 2f 20 61 72 72 61 _integers[99].==.99);.}..//.arra
dd20 79 20 63 6f 6e 63 61 74 65 6e 61 74 69 6f 6e 20 77 6f 72 6b 73 20 69 66 20 74 68 65 20 76 61 6c y.concatenation.works.if.the.val
dd40 75 65 73 20 61 72 65 20 6b 6e 6f 77 6e 0a 2f 2f 20 61 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 ues.are.known.//.at.compile.time
dd60 0a 63 6f 6e 73 74 20 70 61 72 74 5f 6f 6e 65 20 3d 20 5b 5d 69 33 32 7b 31 2c 20 32 2c 20 33 2c .const.part_one.=.[]i32{1,.2,.3,
dd80 20 34 7d 3b 0a 63 6f 6e 73 74 20 70 61 72 74 5f 74 77 6f 20 3d 20 5b 5d 69 33 32 7b 35 2c 20 36 .4};.const.part_two.=.[]i32{5,.6
dda0 2c 20 37 2c 20 38 7d 3b 0a 63 6f 6e 73 74 20 61 6c 6c 5f 6f 66 5f 69 74 20 3d 20 70 61 72 74 5f ,.7,.8};.const.all_of_it.=.part_
ddc0 6f 6e 65 20 2b 2b 20 70 61 72 74 5f 74 77 6f 3b 0a 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 one.++.part_two;.comptime.{.....
dde0 61 73 73 65 72 74 28 6d 65 6d 2e 65 71 6c 28 69 33 32 2c 20 61 6c 6c 5f 6f 66 5f 69 74 2c 20 5b assert(mem.eql(i32,.all_of_it,.[
de00 5d 69 33 32 7b 31 2c 32 2c 33 2c 34 2c 35 2c 36 2c 37 2c 38 7d 29 29 3b 0a 7d 0a 0a 2f 2f 20 72 ]i32{1,2,3,4,5,6,7,8}));.}..//.r
de20 65 6d 65 6d 62 65 72 20 74 68 61 74 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 73 20 61 72 65 emember.that.string.literals.are
de40 20 61 72 72 61 79 73 0a 63 6f 6e 73 74 20 68 65 6c 6c 6f 20 3d 20 26 71 75 6f 74 3b 68 65 6c 6c .arrays.const.hello.=.&quot;hell
de60 6f 26 71 75 6f 74 3b 3b 0a 63 6f 6e 73 74 20 77 6f 72 6c 64 20 3d 20 26 71 75 6f 74 3b 77 6f 72 o&quot;;.const.world.=.&quot;wor
de80 6c 64 26 71 75 6f 74 3b 3b 0a 63 6f 6e 73 74 20 68 65 6c 6c 6f 5f 77 6f 72 6c 64 20 3d 20 68 65 ld&quot;;.const.hello_world.=.he
dea0 6c 6c 6f 20 2b 2b 20 26 71 75 6f 74 3b 20 26 71 75 6f 74 3b 20 2b 2b 20 77 6f 72 6c 64 3b 0a 63 llo.++.&quot;.&quot;.++.world;.c
dec0 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 6d 65 6d 2e 65 71 6c 28 75 38 2c omptime.{.....assert(mem.eql(u8,
dee0 20 68 65 6c 6c 6f 5f 77 6f 72 6c 64 2c 20 26 71 75 6f 74 3b 68 65 6c 6c 6f 20 77 6f 72 6c 64 26 .hello_world,.&quot;hello.world&
df00 71 75 6f 74 3b 29 29 3b 0a 7d 0a 0a 2f 2f 20 2a 2a 20 64 6f 65 73 20 72 65 70 65 61 74 69 6e 67 quot;));.}..//.**.does.repeating
df20 20 70 61 74 74 65 72 6e 73 0a 63 6f 6e 73 74 20 70 61 74 74 65 72 6e 20 3d 20 26 71 75 6f 74 3b .patterns.const.pattern.=.&quot;
df40 61 62 26 71 75 6f 74 3b 20 2a 2a 20 33 3b 0a 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 61 73 ab&quot;.**.3;.comptime.{.....as
df60 73 65 72 74 28 6d 65 6d 2e 65 71 6c 28 75 38 2c 20 70 61 74 74 65 72 6e 2c 20 26 71 75 6f 74 3b sert(mem.eql(u8,.pattern,.&quot;
df80 61 62 61 62 61 62 26 71 75 6f 74 3b 29 29 3b 0a 7d 0a 0a 2f 2f 20 69 6e 69 74 69 61 6c 69 7a 65 ababab&quot;));.}..//.initialize
dfa0 20 61 6e 20 61 72 72 61 79 20 74 6f 20 7a 65 72 6f 0a 63 6f 6e 73 74 20 61 6c 6c 5f 7a 65 72 6f .an.array.to.zero.const.all_zero
dfc0 20 3d 20 5b 5d 75 31 36 7b 30 7d 20 2a 2a 20 31 30 3b 0a 0a 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 .=.[]u16{0}.**.10;..comptime.{..
dfe0 20 20 20 61 73 73 65 72 74 28 61 6c 6c 5f 7a 65 72 6f 2e 6c 65 6e 20 3d 3d 20 31 30 29 3b 0a 20 ...assert(all_zero.len.==.10);..
e000 20 20 20 61 73 73 65 72 74 28 61 6c 6c 5f 7a 65 72 6f 5b 35 5d 20 3d 3d 20 30 29 3b 0a 7d 0a 0a ...assert(all_zero[5].==.0);.}..
e020 2f 2f 20 75 73 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 63 6f 64 65 20 74 6f 20 69 6e 69 74 //.use.compile-time.code.to.init
e040 69 61 6c 69 7a 65 20 61 6e 20 61 72 72 61 79 0a 76 61 72 20 66 61 6e 63 79 5f 61 72 72 61 79 20 ialize.an.array.var.fancy_array.
e060 3d 20 69 6e 69 74 3a 20 7b 0a 20 20 20 20 76 61 72 20 69 6e 69 74 69 61 6c 5f 76 61 6c 75 65 3a =.init:.{.....var.initial_value:
e080 20 5b 31 30 5d 50 6f 69 6e 74 20 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 66 6f 72 20 .[10]Point.=.undefined;.....for.
e0a0 28 69 6e 69 74 69 61 6c 5f 76 61 6c 75 65 29 20 7c 2a 70 74 2c 20 69 7c 20 7b 0a 20 20 20 20 20 (initial_value).|*pt,.i|.{......
e0c0 20 20 20 2a 70 74 20 3d 20 50 6f 69 6e 74 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2e 78 20 ...*pt.=.Point.{..............x.
e0e0 3d 20 69 33 32 28 69 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 2e 79 20 3d 20 69 33 32 28 69 =.i32(i),..............y.=.i32(i
e100 29 20 2a 20 32 2c 0a 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 20 20 7d 0a 20 20 20 20 62 72 65 61 ).*.2,.........};.....}.....brea
e120 6b 20 3a 69 6e 69 74 20 69 6e 69 74 69 61 6c 5f 76 61 6c 75 65 3b 0a 7d 3b 0a 63 6f 6e 73 74 20 k.:init.initial_value;.};.const.
e140 50 6f 69 6e 74 20 3d 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 78 3a 20 69 33 32 2c 0a 20 20 20 Point.=.struct.{.....x:.i32,....
e160 20 79 3a 20 69 33 32 2c 0a 7d 3b 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 63 6f 6d 70 69 6c 65 2d .y:.i32,.};..test.&quot;compile-
e180 74 69 6d 65 20 61 72 72 61 79 20 69 6e 69 74 61 6c 69 7a 61 74 69 6f 6e 26 71 75 6f 74 3b 20 7b time.array.initalization&quot;.{
e1a0 0a 20 20 20 20 61 73 73 65 72 74 28 66 61 6e 63 79 5f 61 72 72 61 79 5b 34 5d 2e 78 20 3d 3d 20 .....assert(fancy_array[4].x.==.
e1c0 34 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 66 61 6e 63 79 5f 61 72 72 61 79 5b 34 5d 2e 79 20 4);.....assert(fancy_array[4].y.
e1e0 3d 3d 20 38 29 3b 0a 7d 0a 0a 2f 2f 20 63 61 6c 6c 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 ==.8);.}..//.call.a.function.to.
e200 69 6e 69 74 69 61 6c 69 7a 65 20 61 6e 20 61 72 72 61 79 0a 76 61 72 20 6d 6f 72 65 5f 70 6f 69 initialize.an.array.var.more_poi
e220 6e 74 73 20 3d 20 5b 5d 50 6f 69 6e 74 7b 6d 61 6b 65 50 6f 69 6e 74 28 33 29 7d 20 2a 2a 20 31 nts.=.[]Point{makePoint(3)}.**.1
e240 30 3b 0a 66 6e 20 6d 61 6b 65 50 6f 69 6e 74 28 78 3a 20 69 33 32 29 20 50 6f 69 6e 74 20 7b 0a 0;.fn.makePoint(x:.i32).Point.{.
e260 20 20 20 20 72 65 74 75 72 6e 20 50 6f 69 6e 74 20 7b 0a 20 20 20 20 20 20 20 20 2e 78 20 3d 20 ....return.Point.{..........x.=.
e280 78 2c 0a 20 20 20 20 20 20 20 20 2e 79 20 3d 20 78 20 2a 20 32 2c 0a 20 20 20 20 7d 3b 0a 7d 0a x,..........y.=.x.*.2,.....};.}.
e2a0 74 65 73 74 20 26 71 75 6f 74 3b 61 72 72 61 79 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 test.&quot;array.initialization.
e2c0 77 69 74 68 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 with.function.calls&quot;.{.....
e2e0 61 73 73 65 72 74 28 6d 6f 72 65 5f 70 6f 69 6e 74 73 5b 34 5d 2e 78 20 3d 3d 20 33 29 3b 0a 20 assert(more_points[4].x.==.3);..
e300 20 20 20 61 73 73 65 72 74 28 6d 6f 72 65 5f 70 6f 69 6e 74 73 5b 34 5d 2e 79 20 3d 3d 20 36 29 ...assert(more_points[4].y.==.6)
e320 3b 0a 20 20 20 20 61 73 73 65 72 74 28 6d 6f 72 65 5f 70 6f 69 6e 74 73 2e 6c 65 6e 20 3d 3d 20 ;.....assert(more_points.len.==.
e340 31 30 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 10);.}</code></pre><pre><code.cl
e360 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 61 72 72 61 79 73 2e 7a 69 ass="shell">$.zig.test.arrays.zi
e380 67 0a 54 65 73 74 20 31 2f 34 20 69 74 65 72 61 74 65 20 6f 76 65 72 20 61 6e 20 61 72 72 61 79 g.Test.1/4.iterate.over.an.array
e3a0 2e 2e 2e 4f 4b 0a 54 65 73 74 20 32 2f 34 20 6d 6f 64 69 66 79 20 61 6e 20 61 72 72 61 79 2e 2e ...OK.Test.2/4.modify.an.array..
e3c0 2e 4f 4b 0a 54 65 73 74 20 33 2f 34 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 61 72 72 61 79 20 .OK.Test.3/4.compile-time.array.
e3e0 69 6e 69 74 61 6c 69 7a 61 74 69 6f 6e 2e 2e 2e 4f 4b 0a 54 65 73 74 20 34 2f 34 20 61 72 72 61 initalization...OK.Test.4/4.arra
e400 79 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 77 69 74 68 20 66 75 6e 63 74 69 6f 6e 20 63 y.initialization.with.function.c
e420 61 6c 6c 73 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c alls...OK.</code></pre>........<
e440 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d p>See.also:</p><ul>.<li><a.href=
e460 22 23 66 6f 72 22 3e 66 6f 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d "#for">for</a></li>.<li><a.href=
e480 22 23 53 6c 69 63 65 73 22 3e 53 6c 69 63 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a "#Slices">Slices</a></li>.</ul>.
e4a0 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 50 6f 69 6e 74 65 72 73 22 3e ..............<h1.id="Pointers">
e4c0 50 6f 69 6e 74 65 72 73 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 Pointers</h1>........<p.class="f
e4e0 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 ile">test.zig</p><pre><code.clas
e500 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 s="zig">const.assert.=.@import(&
e520 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 74 quot;std&quot;).debug.assert;..t
e540 65 73 74 20 26 71 75 6f 74 3b 61 64 64 72 65 73 73 20 6f 66 20 73 79 6e 74 61 78 26 71 75 6f 74 est.&quot;address.of.syntax&quot
e560 3b 20 7b 0a 20 20 20 20 2f 2f 20 47 65 74 20 74 68 65 20 61 64 64 72 65 73 73 20 6f 66 20 61 20 ;.{.....//.Get.the.address.of.a.
e580 76 61 72 69 61 62 6c 65 3a 0a 20 20 20 20 63 6f 6e 73 74 20 78 3a 20 69 33 32 20 3d 20 31 32 33 variable:.....const.x:.i32.=.123
e5a0 34 3b 0a 20 20 20 20 63 6f 6e 73 74 20 78 5f 70 74 72 20 3d 20 26 61 6d 70 3b 78 3b 0a 0a 20 20 4;.....const.x_ptr.=.&amp;x;....
e5c0 20 20 2f 2f 20 44 65 66 65 72 65 6e 63 65 20 61 20 70 6f 69 6e 74 65 72 3a 0a 20 20 20 20 61 73 ..//.Deference.a.pointer:.....as
e5e0 73 65 72 74 28 2a 78 5f 70 74 72 20 3d 3d 20 31 32 33 34 29 3b 0a 0a 20 20 20 20 2f 2f 20 57 68 sert(*x_ptr.==.1234);......//.Wh
e600 65 6e 20 79 6f 75 20 67 65 74 20 74 68 65 20 61 64 64 72 65 73 73 20 6f 66 20 61 20 63 6f 6e 73 en.you.get.the.address.of.a.cons
e620 74 20 76 61 72 69 61 62 6c 65 2c 20 79 6f 75 20 67 65 74 20 61 20 63 6f 6e 73 74 20 70 6f 69 6e t.variable,.you.get.a.const.poin
e640 74 65 72 2e 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 78 5f 70 74 72 29 20 3d ter......assert(@typeOf(x_ptr).=
e660 3d 20 26 61 6d 70 3b 63 6f 6e 73 74 20 69 33 32 29 3b 0a 0a 20 20 20 20 2f 2f 20 49 66 20 79 6f =.&amp;const.i32);......//.If.yo
e680 75 20 77 61 6e 74 20 74 6f 20 6d 75 74 61 74 65 20 74 68 65 20 76 61 6c 75 65 2c 20 79 6f 75 27 u.want.to.mutate.the.value,.you'
e6a0 64 20 6e 65 65 64 20 61 6e 20 61 64 64 72 65 73 73 20 6f 66 20 61 20 6d 75 74 61 62 6c 65 20 76 d.need.an.address.of.a.mutable.v
e6c0 61 72 69 61 62 6c 65 3a 0a 20 20 20 20 76 61 72 20 79 3a 20 69 33 32 20 3d 20 35 36 37 38 3b 0a ariable:.....var.y:.i32.=.5678;.
e6e0 20 20 20 20 63 6f 6e 73 74 20 79 5f 70 74 72 20 3d 20 26 61 6d 70 3b 79 3b 0a 20 20 20 20 61 73 ....const.y_ptr.=.&amp;y;.....as
e700 73 65 72 74 28 40 74 79 70 65 4f 66 28 79 5f 70 74 72 29 20 3d 3d 20 26 61 6d 70 3b 69 33 32 29 sert(@typeOf(y_ptr).==.&amp;i32)
e720 3b 0a 20 20 20 20 2a 79 5f 70 74 72 20 2b 3d 20 31 3b 0a 20 20 20 20 61 73 73 65 72 74 28 2a 79 ;.....*y_ptr.+=.1;.....assert(*y
e740 5f 70 74 72 20 3d 3d 20 35 36 37 39 29 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 70 6f 69 _ptr.==.5679);.}..test.&quot;poi
e760 6e 74 65 72 20 61 72 72 61 79 20 61 63 63 65 73 73 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 2f 2f nter.array.access&quot;.{.....//
e780 20 50 6f 69 6e 74 65 72 73 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 70 6f 69 6e 74 65 72 .Pointers.do.not.support.pointer
e7a0 20 61 72 69 74 68 6d 65 74 69 63 2e 20 49 66 20 79 6f 75 0a 20 20 20 20 2f 2f 20 6e 65 65 64 20 .arithmetic..If.you.....//.need.
e7c0 73 75 63 68 20 61 20 74 68 69 6e 67 2c 20 75 73 65 20 61 72 72 61 79 20 69 6e 64 65 78 20 73 79 such.a.thing,.use.array.index.sy
e7e0 6e 74 61 78 3a 0a 0a 20 20 20 20 76 61 72 20 61 72 72 61 79 20 3d 20 5b 5d 75 38 7b 31 2c 20 32 ntax:......var.array.=.[]u8{1,.2
e800 2c 20 33 2c 20 34 2c 20 35 2c 20 36 2c 20 37 2c 20 38 2c 20 39 2c 20 31 30 7d 3b 0a 20 20 20 20 ,.3,.4,.5,.6,.7,.8,.9,.10};.....
e820 63 6f 6e 73 74 20 70 74 72 20 3d 20 26 61 6d 70 3b 61 72 72 61 79 5b 31 5d 3b 0a 0a 20 20 20 20 const.ptr.=.&amp;array[1];......
e840 61 73 73 65 72 74 28 61 72 72 61 79 5b 32 5d 20 3d 3d 20 33 29 3b 0a 20 20 20 20 70 74 72 5b 31 assert(array[2].==.3);.....ptr[1
e860 5d 20 2b 3d 20 31 3b 0a 20 20 20 20 61 73 73 65 72 74 28 61 72 72 61 79 5b 32 5d 20 3d 3d 20 34 ].+=.1;.....assert(array[2].==.4
e880 29 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 70 6f 69 6e 74 65 72 20 73 6c 69 63 69 6e 67 );.}..test.&quot;pointer.slicing
e8a0 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 2f 2f 20 49 6e 20 5a 69 67 2c 20 77 65 20 70 72 65 66 65 &quot;.{.....//.In.Zig,.we.prefe
e8c0 72 20 75 73 69 6e 67 20 73 6c 69 63 65 73 20 6f 76 65 72 20 6e 75 6c 6c 2d 74 65 72 6d 69 6e 61 r.using.slices.over.null-termina
e8e0 74 65 64 20 70 6f 69 6e 74 65 72 73 2e 0a 20 20 20 20 2f 2f 20 59 6f 75 20 63 61 6e 20 74 75 72 ted.pointers......//.You.can.tur
e900 6e 20 61 20 70 6f 69 6e 74 65 72 20 69 6e 74 6f 20 61 20 73 6c 69 63 65 20 75 73 69 6e 67 20 73 n.a.pointer.into.a.slice.using.s
e920 6c 69 63 65 20 73 79 6e 74 61 78 3a 0a 20 20 20 20 76 61 72 20 61 72 72 61 79 20 3d 20 5b 5d 75 lice.syntax:.....var.array.=.[]u
e940 38 7b 31 2c 20 32 2c 20 33 2c 20 34 2c 20 35 2c 20 36 2c 20 37 2c 20 38 2c 20 39 2c 20 31 30 7d 8{1,.2,.3,.4,.5,.6,.7,.8,.9,.10}
e960 3b 0a 20 20 20 20 63 6f 6e 73 74 20 70 74 72 20 3d 20 26 61 6d 70 3b 61 72 72 61 79 5b 31 5d 3b ;.....const.ptr.=.&amp;array[1];
e980 0a 20 20 20 20 63 6f 6e 73 74 20 73 6c 69 63 65 20 3d 20 70 74 72 5b 31 2e 2e 33 5d 3b 0a 0a 20 .....const.slice.=.ptr[1..3];...
e9a0 20 20 20 61 73 73 65 72 74 28 73 6c 69 63 65 2e 70 74 72 20 3d 3d 20 26 61 6d 70 3b 70 74 72 5b ...assert(slice.ptr.==.&amp;ptr[
e9c0 31 5d 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 73 6c 69 63 65 2e 6c 65 6e 20 3d 3d 20 32 29 3b 1]);.....assert(slice.len.==.2);
e9e0 0a 0a 20 20 20 20 2f 2f 20 53 6c 69 63 65 73 20 68 61 76 65 20 62 6f 75 6e 64 73 20 63 68 65 63 ......//.Slices.have.bounds.chec
ea00 6b 69 6e 67 20 61 6e 64 20 61 72 65 20 74 68 65 72 65 66 6f 72 65 20 70 72 6f 74 65 63 74 65 64 king.and.are.therefore.protected
ea20 0a 20 20 20 20 2f 2f 20 61 67 61 69 6e 73 74 20 74 68 69 73 20 6b 69 6e 64 20 6f 66 20 75 6e 64 .....//.against.this.kind.of.und
ea40 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 2e 20 54 68 69 73 20 69 73 20 6f 6e 65 20 72 65 61 efined.behavior..This.is.one.rea
ea60 73 6f 6e 0a 20 20 20 20 2f 2f 20 77 65 20 70 72 65 66 65 72 20 73 6c 69 63 65 73 20 74 6f 20 70 son.....//.we.prefer.slices.to.p
ea80 6f 69 6e 74 65 72 73 2e 0a 20 20 20 20 61 73 73 65 72 74 28 61 72 72 61 79 5b 33 5d 20 3d 3d 20 ointers......assert(array[3].==.
eaa0 34 29 3b 0a 20 20 20 20 73 6c 69 63 65 5b 31 5d 20 2b 3d 20 31 3b 0a 20 20 20 20 61 73 73 65 72 4);.....slice[1].+=.1;.....asser
eac0 74 28 61 72 72 61 79 5b 33 5d 20 3d 3d 20 35 29 3b 0a 7d 0a 0a 63 6f 6d 70 74 69 6d 65 20 7b 0a t(array[3].==.5);.}..comptime.{.
eae0 20 20 20 20 2f 2f 20 50 6f 69 6e 74 65 72 73 20 77 6f 72 6b 20 61 74 20 63 6f 6d 70 69 6c 65 2d ....//.Pointers.work.at.compile-
eb00 74 69 6d 65 20 74 6f 6f 2c 20 61 73 20 6c 6f 6e 67 20 61 73 20 79 6f 75 20 64 6f 6e 27 74 20 75 time.too,.as.long.as.you.don't.u
eb20 73 65 0a 20 20 20 20 2f 2f 20 40 70 74 72 43 61 73 74 2e 0a 20 20 20 20 76 61 72 20 78 3a 20 69 se.....//.@ptrCast......var.x:.i
eb40 33 32 20 3d 20 31 3b 0a 20 20 20 20 63 6f 6e 73 74 20 70 74 72 20 3d 20 26 61 6d 70 3b 78 3b 0a 32.=.1;.....const.ptr.=.&amp;x;.
eb60 20 20 20 20 2a 70 74 72 20 2b 3d 20 31 3b 0a 20 20 20 20 78 20 2b 3d 20 31 3b 0a 20 20 20 20 61 ....*ptr.+=.1;.....x.+=.1;.....a
eb80 73 73 65 72 74 28 2a 70 74 72 20 3d 3d 20 33 29 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b ssert(*ptr.==.3);.}..test.&quot;
eba0 40 70 74 72 54 6f 49 6e 74 20 61 6e 64 20 40 69 6e 74 54 6f 50 74 72 26 71 75 6f 74 3b 20 7b 0a @ptrToInt.and.@intToPtr&quot;.{.
ebc0 20 20 20 20 2f 2f 20 54 6f 20 63 6f 6e 76 65 72 74 20 61 6e 20 69 6e 74 65 67 65 72 20 61 64 64 ....//.To.convert.an.integer.add
ebe0 72 65 73 73 20 69 6e 74 6f 20 61 20 70 6f 69 6e 74 65 72 2c 20 75 73 65 20 40 69 6e 74 54 6f 50 ress.into.a.pointer,.use.@intToP
ec00 74 72 3a 0a 20 20 20 20 63 6f 6e 73 74 20 70 74 72 20 3d 20 40 69 6e 74 54 6f 50 74 72 28 26 61 tr:.....const.ptr.=.@intToPtr(&a
ec20 6d 70 3b 69 33 32 2c 20 30 78 64 65 61 64 62 65 65 66 29 3b 0a 0a 20 20 20 20 2f 2f 20 54 6f 20 mp;i32,.0xdeadbeef);......//.To.
ec40 63 6f 6e 76 65 72 74 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72 2c convert.a.pointer.to.an.integer,
ec60 20 75 73 65 20 40 70 74 72 54 6f 49 6e 74 3a 0a 20 20 20 20 63 6f 6e 73 74 20 61 64 64 72 20 3d .use.@ptrToInt:.....const.addr.=
ec80 20 40 70 74 72 54 6f 49 6e 74 28 70 74 72 29 3b 0a 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 .@ptrToInt(ptr);......assert(@ty
eca0 70 65 4f 66 28 61 64 64 72 29 20 3d 3d 20 75 73 69 7a 65 29 3b 0a 20 20 20 20 61 73 73 65 72 74 peOf(addr).==.usize);.....assert
ecc0 28 61 64 64 72 20 3d 3d 20 30 78 64 65 61 64 62 65 65 66 29 3b 0a 7d 0a 0a 63 6f 6d 70 74 69 6d (addr.==.0xdeadbeef);.}..comptim
ece0 65 20 7b 0a 20 20 20 20 2f 2f 20 5a 69 67 20 69 73 20 61 62 6c 65 20 74 6f 20 64 6f 20 74 68 69 e.{.....//.Zig.is.able.to.do.thi
ed00 73 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 61 73 20 6c 6f 6e 67 20 61 73 0a 20 20 s.at.compile-time,.as.long.as...
ed20 20 20 2f 2f 20 70 74 72 20 69 73 20 6e 65 76 65 72 20 64 65 72 65 66 65 72 65 6e 63 65 64 2e 0a ..//.ptr.is.never.dereferenced..
ed40 20 20 20 20 63 6f 6e 73 74 20 70 74 72 20 3d 20 40 69 6e 74 54 6f 50 74 72 28 26 61 6d 70 3b 69 ....const.ptr.=.@intToPtr(&amp;i
ed60 33 32 2c 20 30 78 64 65 61 64 62 65 65 66 29 3b 0a 20 20 20 20 63 6f 6e 73 74 20 61 64 64 72 20 32,.0xdeadbeef);.....const.addr.
ed80 3d 20 40 70 74 72 54 6f 49 6e 74 28 70 74 72 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 =.@ptrToInt(ptr);.....assert(@ty
eda0 70 65 4f 66 28 61 64 64 72 29 20 3d 3d 20 75 73 69 7a 65 29 3b 0a 20 20 20 20 61 73 73 65 72 74 peOf(addr).==.usize);.....assert
edc0 28 61 64 64 72 20 3d 3d 20 30 78 64 65 61 64 62 65 65 66 29 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 (addr.==.0xdeadbeef);.}..test.&q
ede0 75 6f 74 3b 76 6f 6c 61 74 69 6c 65 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 2f 2f 20 49 6e 20 5a uot;volatile&quot;.{.....//.In.Z
ee00 69 67 2c 20 6c 6f 61 64 73 20 61 6e 64 20 73 74 6f 72 65 73 20 61 72 65 20 61 73 73 75 6d 65 64 ig,.loads.and.stores.are.assumed
ee20 20 74 6f 20 6e 6f 74 20 68 61 76 65 20 73 69 64 65 20 65 66 66 65 63 74 73 2e 0a 20 20 20 20 2f .to.not.have.side.effects....../
ee40 2f 20 49 66 20 61 20 67 69 76 65 6e 20 6c 6f 61 64 20 6f 72 20 73 74 6f 72 65 20 73 68 6f 75 6c /.If.a.given.load.or.store.shoul
ee60 64 20 68 61 76 65 20 73 69 64 65 20 65 66 66 65 63 74 73 2c 20 73 75 63 68 20 61 73 0a 20 20 20 d.have.side.effects,.such.as....
ee80 20 2f 2f 20 4d 65 6d 6f 72 79 20 4d 61 70 70 65 64 20 49 6e 70 75 74 2f 4f 75 74 70 75 74 20 28 .//.Memory.Mapped.Input/Output.(
eea0 4d 4d 49 4f 29 2c 20 75 73 65 20 60 76 6f 6c 61 74 69 6c 65 60 3a 0a 20 20 20 20 63 6f 6e 73 74 MMIO),.use.`volatile`:.....const
eec0 20 6d 6d 69 6f 5f 70 74 72 20 3d 20 40 69 6e 74 54 6f 50 74 72 28 26 61 6d 70 3b 76 6f 6c 61 74 .mmio_ptr.=.@intToPtr(&amp;volat
eee0 69 6c 65 20 75 38 2c 20 30 78 31 32 33 34 35 36 37 38 29 3b 0a 0a 20 20 20 20 2f 2f 20 4e 6f 77 ile.u8,.0x12345678);......//.Now
ef00 20 6c 6f 61 64 73 20 61 6e 64 20 73 74 6f 72 65 73 20 77 69 74 68 20 6d 6d 69 6f 5f 70 74 72 20 .loads.and.stores.with.mmio_ptr.
ef20 61 72 65 20 67 75 61 72 61 6e 74 65 65 64 20 74 6f 20 61 6c 6c 20 68 61 70 70 65 6e 0a 20 20 20 are.guaranteed.to.all.happen....
ef40 20 2f 2f 20 61 6e 64 20 69 6e 20 74 68 65 20 73 61 6d 65 20 6f 72 64 65 72 20 61 73 20 69 6e 20 .//.and.in.the.same.order.as.in.
ef60 73 6f 75 72 63 65 20 63 6f 64 65 2e 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 source.code......assert(@typeOf(
ef80 6d 6d 69 6f 5f 70 74 72 29 20 3d 3d 20 26 61 6d 70 3b 76 6f 6c 61 74 69 6c 65 20 75 38 29 3b 0a mmio_ptr).==.&amp;volatile.u8);.
efa0 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 6e 75 6c 6c 61 62 6c 65 20 70 6f 69 6e 74 65 72 73 26 }..test.&quot;nullable.pointers&
efc0 71 75 6f 74 3b 20 7b 0a 20 20 20 20 2f 2f 20 50 6f 69 6e 74 65 72 73 20 63 61 6e 6e 6f 74 20 62 quot;.{.....//.Pointers.cannot.b
efe0 65 20 6e 75 6c 6c 2e 20 49 66 20 79 6f 75 20 77 61 6e 74 20 61 20 6e 75 6c 6c 20 70 6f 69 6e 74 e.null..If.you.want.a.null.point
f000 65 72 2c 20 75 73 65 20 74 68 65 20 6e 75 6c 6c 61 62 6c 65 0a 20 20 20 20 2f 2f 20 70 72 65 66 er,.use.the.nullable.....//.pref
f020 69 78 20 60 3f 60 20 74 6f 20 6d 61 6b 65 20 74 68 65 20 70 6f 69 6e 74 65 72 20 74 79 70 65 20 ix.`?`.to.make.the.pointer.type.
f040 6e 75 6c 6c 61 62 6c 65 2e 0a 20 20 20 20 76 61 72 20 70 74 72 3a 20 3f 26 61 6d 70 3b 69 33 32 nullable......var.ptr:.?&amp;i32
f060 20 3d 20 6e 75 6c 6c 3b 0a 0a 20 20 20 20 76 61 72 20 78 3a 20 69 33 32 20 3d 20 31 3b 0a 20 20 .=.null;......var.x:.i32.=.1;...
f080 20 20 70 74 72 20 3d 20 26 61 6d 70 3b 78 3b 0a 0a 20 20 20 20 61 73 73 65 72 74 28 2a 3f 3f 70 ..ptr.=.&amp;x;......assert(*??p
f0a0 74 72 20 3d 3d 20 31 29 3b 0a 0a 20 20 20 20 2f 2f 20 4e 75 6c 6c 61 62 6c 65 20 70 6f 69 6e 74 tr.==.1);......//.Nullable.point
f0c0 65 72 73 20 61 72 65 20 74 68 65 20 73 61 6d 65 20 73 69 7a 65 20 61 73 20 6e 6f 72 6d 61 6c 20 ers.are.the.same.size.as.normal.
f0e0 70 6f 69 6e 74 65 72 73 2c 20 62 65 63 61 75 73 65 20 70 6f 69 6e 74 65 72 0a 20 20 20 20 2f 2f pointers,.because.pointer.....//
f100 20 76 61 6c 75 65 20 30 20 69 73 20 75 73 65 64 20 61 73 20 74 68 65 20 6e 75 6c 6c 20 76 61 6c .value.0.is.used.as.the.null.val
f120 75 65 2e 0a 20 20 20 20 61 73 73 65 72 74 28 40 73 69 7a 65 4f 66 28 3f 26 61 6d 70 3b 69 33 32 ue......assert(@sizeOf(?&amp;i32
f140 29 20 3d 3d 20 40 73 69 7a 65 4f 66 28 26 61 6d 70 3b 69 33 32 29 29 3b 0a 7d 0a 0a 74 65 73 74 ).==.@sizeOf(&amp;i32));.}..test
f160 20 26 71 75 6f 74 3b 70 6f 69 6e 74 65 72 20 63 61 73 74 69 6e 67 26 71 75 6f 74 3b 20 7b 0a 20 .&quot;pointer.casting&quot;.{..
f180 20 20 20 2f 2f 20 54 6f 20 63 6f 6e 76 65 72 74 20 6f 6e 65 20 70 6f 69 6e 74 65 72 20 74 79 70 ...//.To.convert.one.pointer.typ
f1a0 65 20 74 6f 20 61 6e 6f 74 68 65 72 2c 20 75 73 65 20 40 70 74 72 43 61 73 74 2e 20 54 68 69 73 e.to.another,.use.@ptrCast..This
f1c0 20 69 73 20 61 6e 20 75 6e 73 61 66 65 0a 20 20 20 20 2f 2f 20 6f 70 65 72 61 74 69 6f 6e 20 74 .is.an.unsafe.....//.operation.t
f1e0 68 61 74 20 5a 69 67 20 63 61 6e 6e 6f 74 20 70 72 6f 74 65 63 74 20 79 6f 75 20 61 67 61 69 6e hat.Zig.cannot.protect.you.again
f200 73 74 2e 20 55 73 65 20 40 70 74 72 43 61 73 74 20 6f 6e 6c 79 20 77 68 65 6e 20 6f 74 68 65 72 st..Use.@ptrCast.only.when.other
f220 0a 20 20 20 20 2f 2f 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 61 72 65 20 6e 6f 74 20 70 6f 73 73 .....//.conversions.are.not.poss
f240 69 62 6c 65 2e 0a 20 20 20 20 63 6f 6e 73 74 20 62 79 74 65 73 20 61 6c 69 67 6e 28 40 61 6c 69 ible......const.bytes.align(@ali
f260 67 6e 4f 66 28 75 33 32 29 29 20 3d 20 5b 5d 75 38 7b 30 78 31 32 2c 20 30 78 31 32 2c 20 30 78 gnOf(u32)).=.[]u8{0x12,.0x12,.0x
f280 31 32 2c 20 30 78 31 32 7d 3b 0a 20 20 20 20 63 6f 6e 73 74 20 75 33 32 5f 70 74 72 20 3d 20 40 12,.0x12};.....const.u32_ptr.=.@
f2a0 70 74 72 43 61 73 74 28 26 61 6d 70 3b 63 6f 6e 73 74 20 75 33 32 2c 20 26 61 6d 70 3b 62 79 74 ptrCast(&amp;const.u32,.&amp;byt
f2c0 65 73 5b 30 5d 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 2a 75 33 32 5f 70 74 72 20 3d 3d 20 30 es[0]);.....assert(*u32_ptr.==.0
f2e0 78 31 32 31 32 31 32 31 32 29 3b 0a 0a 20 20 20 20 2f 2f 20 45 76 65 6e 20 74 68 69 73 20 65 78 x12121212);......//.Even.this.ex
f300 61 6d 70 6c 65 20 69 73 20 63 6f 6e 74 72 69 76 65 64 20 2d 20 74 68 65 72 65 20 61 72 65 20 62 ample.is.contrived.-.there.are.b
f320 65 74 74 65 72 20 77 61 79 73 20 74 6f 20 64 6f 20 74 68 65 20 61 62 6f 76 65 20 74 68 61 6e 0a etter.ways.to.do.the.above.than.
f340 20 20 20 20 2f 2f 20 70 6f 69 6e 74 65 72 20 63 61 73 74 69 6e 67 2e 20 46 6f 72 20 65 78 61 6d ....//.pointer.casting..For.exam
f360 70 6c 65 2c 20 75 73 69 6e 67 20 61 20 73 6c 69 63 65 20 6e 61 72 72 6f 77 69 6e 67 20 63 61 73 ple,.using.a.slice.narrowing.cas
f380 74 3a 0a 20 20 20 20 63 6f 6e 73 74 20 75 33 32 5f 76 61 6c 75 65 20 3d 20 28 5b 5d 63 6f 6e 73 t:.....const.u32_value.=.([]cons
f3a0 74 20 75 33 32 29 28 62 79 74 65 73 5b 30 2e 2e 5d 29 5b 30 5d 3b 0a 20 20 20 20 61 73 73 65 72 t.u32)(bytes[0..])[0];.....asser
f3c0 74 28 75 33 32 5f 76 61 6c 75 65 20 3d 3d 20 30 78 31 32 31 32 31 32 31 32 29 3b 0a 0a 20 20 20 t(u32_value.==.0x12121212);.....
f3e0 20 2f 2f 20 41 6e 64 20 65 76 65 6e 20 61 6e 6f 74 68 65 72 20 77 61 79 2c 20 74 68 65 20 6d 6f .//.And.even.another.way,.the.mo
f400 73 74 20 73 74 72 61 69 67 68 74 66 6f 72 77 61 72 64 20 77 61 79 20 74 6f 20 64 6f 20 69 74 3a st.straightforward.way.to.do.it:
f420 0a 20 20 20 20 61 73 73 65 72 74 28 40 62 69 74 43 61 73 74 28 75 33 32 2c 20 62 79 74 65 73 29 .....assert(@bitCast(u32,.bytes)
f440 20 3d 3d 20 30 78 31 32 31 32 31 32 31 32 29 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 70 .==.0x12121212);.}..test.&quot;p
f460 6f 69 6e 74 65 72 20 63 68 69 6c 64 20 74 79 70 65 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 2f 2f ointer.child.type&quot;.{.....//
f480 20 70 6f 69 6e 74 65 72 20 74 79 70 65 73 20 68 61 76 65 20 61 20 60 63 68 69 6c 64 60 20 66 69 .pointer.types.have.a.`child`.fi
f4a0 65 6c 64 20 77 68 69 63 68 20 74 65 6c 6c 73 20 79 6f 75 20 74 68 65 20 74 79 70 65 20 74 68 65 eld.which.tells.you.the.type.the
f4c0 79 20 70 6f 69 6e 74 20 74 6f 2e 0a 20 20 20 20 61 73 73 65 72 74 28 28 26 61 6d 70 3b 75 33 32 y.point.to......assert((&amp;u32
f4e0 29 2e 43 68 69 6c 64 20 3d 3d 20 75 33 32 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c ).Child.==.u32);.}</code></pre><
f500 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 pre><code.class="shell">$.zig.te
f520 73 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 38 20 61 64 64 72 65 73 73 20 6f 66 20 st.test.zig.Test.1/8.address.of.
f540 73 79 6e 74 61 78 2e 2e 2e 4f 4b 0a 54 65 73 74 20 32 2f 38 20 70 6f 69 6e 74 65 72 20 61 72 72 syntax...OK.Test.2/8.pointer.arr
f560 61 79 20 61 63 63 65 73 73 2e 2e 2e 4f 4b 0a 54 65 73 74 20 33 2f 38 20 70 6f 69 6e 74 65 72 20 ay.access...OK.Test.3/8.pointer.
f580 73 6c 69 63 69 6e 67 2e 2e 2e 4f 4b 0a 54 65 73 74 20 34 2f 38 20 40 70 74 72 54 6f 49 6e 74 20 slicing...OK.Test.4/8.@ptrToInt.
f5a0 61 6e 64 20 40 69 6e 74 54 6f 50 74 72 2e 2e 2e 4f 4b 0a 54 65 73 74 20 35 2f 38 20 76 6f 6c 61 and.@intToPtr...OK.Test.5/8.vola
f5c0 74 69 6c 65 2e 2e 2e 4f 4b 0a 54 65 73 74 20 36 2f 38 20 6e 75 6c 6c 61 62 6c 65 20 70 6f 69 6e tile...OK.Test.6/8.nullable.poin
f5e0 74 65 72 73 2e 2e 2e 4f 4b 0a 54 65 73 74 20 37 2f 38 20 70 6f 69 6e 74 65 72 20 63 61 73 74 69 ters...OK.Test.7/8.pointer.casti
f600 6e 67 2e 2e 2e 4f 4b 0a 54 65 73 74 20 38 2f 38 20 70 6f 69 6e 74 65 72 20 63 68 69 6c 64 20 74 ng...OK.Test.8/8.pointer.child.t
f620 79 70 65 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 68 ype...OK.</code></pre>........<h
f640 32 20 69 64 3d 22 41 6c 69 67 6e 6d 65 6e 74 22 3e 41 6c 69 67 6e 6d 65 6e 74 3c 2f 68 32 3e 0a 2.id="Alignment">Alignment</h2>.
f660 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 45 61 63 68 20 74 79 70 65 20 68 61 73 20 61 .......<p>.......Each.type.has.a
f680 6e 20 3c 73 74 72 6f 6e 67 3e 61 6c 69 67 6e 6d 65 6e 74 3c 2f 73 74 72 6f 6e 67 3e 20 2d 20 61 n.<strong>alignment</strong>.-.a
f6a0 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 73 75 63 68 20 74 68 61 74 2c 0a 20 20 20 20 .number.of.bytes.such.that,.....
f6c0 20 20 77 68 65 6e 20 61 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 74 79 70 65 20 69 73 20 6c 6f ..when.a.value.of.the.type.is.lo
f6e0 61 64 65 64 20 66 72 6f 6d 20 6f 72 20 73 74 6f 72 65 64 20 74 6f 20 6d 65 6d 6f 72 79 2c 0a 20 aded.from.or.stored.to.memory,..
f700 20 20 20 20 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 64 64 72 65 73 73 20 6d 75 73 74 20 62 65 20 .....the.memory.address.must.be.
f720 65 76 65 6e 6c 79 20 64 69 76 69 73 69 62 6c 65 20 62 79 20 74 68 69 73 20 6e 75 6d 62 65 72 2e evenly.divisible.by.this.number.
f740 20 59 6f 75 20 63 61 6e 20 75 73 65 0a 20 20 20 20 20 20 3c 61 20 68 72 65 66 3d 22 23 61 6c 69 .You.can.use.......<a.href="#ali
f760 67 6e 4f 66 22 3e 40 61 6c 69 67 6e 4f 66 3c 2f 61 3e 20 74 6f 20 66 69 6e 64 20 6f 75 74 20 74 gnOf">@alignOf</a>.to.find.out.t
f780 68 69 73 20 76 61 6c 75 65 20 66 6f 72 20 61 6e 79 20 74 79 70 65 2e 0a 20 20 20 20 20 20 3c 2f his.value.for.any.type........</
f7a0 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 41 6c 69 67 6e 6d 65 6e 74 20 64 65 70 p>.......<p>.......Alignment.dep
f7c0 65 6e 64 73 20 6f 6e 20 74 68 65 20 43 50 55 20 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 62 75 ends.on.the.CPU.architecture,.bu
f7e0 74 20 69 73 20 61 6c 77 61 79 73 20 61 20 70 6f 77 65 72 20 6f 66 20 74 77 6f 2c 20 61 6e 64 0a t.is.always.a.power.of.two,.and.
f800 20 20 20 20 20 20 6c 65 73 73 20 74 68 61 6e 20 3c 63 6f 64 65 3e 31 20 26 6c 74 3b 26 6c 74 3b ......less.than.<code>1.&lt;&lt;
f820 20 32 39 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e .29</code>........</p>.......<p>
f840 0a 20 20 20 20 20 20 49 6e 20 5a 69 67 2c 20 61 20 70 6f 69 6e 74 65 72 20 74 79 70 65 20 68 61 .......In.Zig,.a.pointer.type.ha
f860 73 20 61 6e 20 61 6c 69 67 6e 6d 65 6e 74 20 76 61 6c 75 65 2e 20 49 66 20 74 68 65 20 76 61 6c s.an.alignment.value..If.the.val
f880 75 65 20 69 73 20 65 71 75 61 6c 20 74 6f 20 74 68 65 0a 20 20 20 20 20 20 61 6c 69 67 6e 6d 65 ue.is.equal.to.the.......alignme
f8a0 6e 74 20 6f 66 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 74 79 70 65 2c 20 69 74 20 63 61 nt.of.the.underlying.type,.it.ca
f8c0 6e 20 62 65 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 74 79 70 65 3a 0a 20 20 20 20 n.be.omitted.from.the.type:.....
f8e0 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 ..</p>.......<p.class="file">tes
f900 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e t.zig</p><pre><code.class="zig">
f920 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 const.assert.=.@import(&quot;std
f940 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 63 6f 6e 73 74 20 62 75 69 6c &quot;).debug.assert;.const.buil
f960 74 69 6e 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 62 75 69 6c 74 69 6e 26 71 75 6f 74 tin.=.@import(&quot;builtin&quot
f980 3b 29 3b 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 76 61 72 69 61 62 6c 65 20 61 6c 69 67 6e 6d 65 ;);..test.&quot;variable.alignme
f9a0 6e 74 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 76 61 72 20 78 3a 20 69 33 32 20 3d 20 31 32 33 34 nt&quot;.{.....var.x:.i32.=.1234
f9c0 3b 0a 20 20 20 20 63 6f 6e 73 74 20 61 6c 69 67 6e 5f 6f 66 5f 69 33 32 20 3d 20 40 61 6c 69 67 ;.....const.align_of_i32.=.@alig
f9e0 6e 4f 66 28 40 74 79 70 65 4f 66 28 78 29 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 nOf(@typeOf(x));.....assert(@typ
fa00 65 4f 66 28 26 61 6d 70 3b 78 29 20 3d 3d 20 26 61 6d 70 3b 69 33 32 29 3b 0a 20 20 20 20 61 73 eOf(&amp;x).==.&amp;i32);.....as
fa20 73 65 72 74 28 26 61 6d 70 3b 69 33 32 20 3d 3d 20 26 61 6d 70 3b 61 6c 69 67 6e 28 61 6c 69 67 sert(&amp;i32.==.&amp;align(alig
fa40 6e 5f 6f 66 5f 69 33 32 29 20 69 33 32 29 3b 0a 20 20 20 20 69 66 20 28 62 75 69 6c 74 69 6e 2e n_of_i32).i32);.....if.(builtin.
fa60 61 72 63 68 20 3d 3d 20 62 75 69 6c 74 69 6e 2e 41 72 63 68 2e 78 38 36 5f 36 34 29 20 7b 0a 20 arch.==.builtin.Arch.x86_64).{..
fa80 20 20 20 20 20 20 20 61 73 73 65 72 74 28 28 26 61 6d 70 3b 69 33 32 29 2e 61 6c 69 67 6e 6d 65 .......assert((&amp;i32).alignme
faa0 6e 74 20 3d 3d 20 34 29 3b 0a 20 20 20 20 7d 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 nt.==.4);.....}.}</code></pre><p
fac0 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 re><code.class="shell">$.zig.tes
fae0 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 76 61 72 69 61 62 6c 65 20 61 6c 69 t.test.zig.Test.1/1.variable.ali
fb00 67 6e 6d 65 6e 74 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 gnment...OK.</code></pre>.......
fb20 20 3c 70 3e 49 6e 20 74 68 65 20 73 61 6d 65 20 77 61 79 20 74 68 61 74 20 61 20 3c 63 6f 64 65 .<p>In.the.same.way.that.a.<code
fb40 3e 26 61 6d 70 3b 69 33 32 3c 2f 63 6f 64 65 3e 20 63 61 6e 20 62 65 20 69 6d 70 6c 69 63 69 74 >&amp;i32</code>.can.be.implicit
fb60 6c 79 20 63 61 73 74 20 74 6f 20 61 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 26 61 6d 70 3b 63 6f ly.cast.to.a.......<code>&amp;co
fb80 6e 73 74 20 69 33 32 3c 2f 63 6f 64 65 3e 2c 20 61 20 70 6f 69 6e 74 65 72 20 77 69 74 68 20 61 nst.i32</code>,.a.pointer.with.a
fba0 20 6c 61 72 67 65 72 20 61 6c 69 67 6e 6d 65 6e 74 20 63 61 6e 20 62 65 20 69 6d 70 6c 69 63 69 .larger.alignment.can.be.implici
fbc0 74 6c 79 0a 20 20 20 20 20 20 63 61 73 74 20 74 6f 20 61 20 70 6f 69 6e 74 65 72 20 77 69 74 68 tly.......cast.to.a.pointer.with
fbe0 20 61 20 73 6d 61 6c 6c 65 72 20 61 6c 69 67 6e 6d 65 6e 74 2c 20 62 75 74 20 6e 6f 74 20 76 69 .a.smaller.alignment,.but.not.vi
fc00 63 65 20 76 65 72 73 61 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 ce.versa........</p>.......<p>..
fc20 20 20 20 20 20 59 6f 75 20 63 61 6e 20 73 70 65 63 69 66 79 20 61 6c 69 67 6e 6d 65 6e 74 20 6f .....You.can.specify.alignment.o
fc40 6e 20 76 61 72 69 61 62 6c 65 73 20 61 6e 64 20 66 75 6e 63 74 69 6f 6e 73 2e 20 49 66 20 79 6f n.variables.and.functions..If.yo
fc60 75 20 64 6f 20 74 68 69 73 2c 20 74 68 65 6e 0a 20 20 20 20 20 20 70 6f 69 6e 74 65 72 73 20 74 u.do.this,.then.......pointers.t
fc80 6f 20 74 68 65 6d 20 67 65 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 61 6c 69 67 6e 6d 65 o.them.get.the.specified.alignme
fca0 6e 74 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 nt:.......</p>.......<p.class="f
fcc0 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 ile">test.zig</p><pre><code.clas
fce0 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 s="zig">const.assert.=.@import(&
fd00 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 76 quot;std&quot;).debug.assert;..v
fd20 61 72 20 66 6f 6f 3a 20 75 38 20 61 6c 69 67 6e 28 34 29 20 3d 20 31 30 30 3b 0a 0a 74 65 73 74 ar.foo:.u8.align(4).=.100;..test
fd40 20 26 71 75 6f 74 3b 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 20 61 6c 69 67 6e 6d 65 6e 74 .&quot;global.variable.alignment
fd60 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 26 61 6d 70 &quot;.{.....assert(@typeOf(&amp
fd80 3b 66 6f 6f 29 2e 61 6c 69 67 6e 6d 65 6e 74 20 3d 3d 20 34 29 3b 0a 20 20 20 20 61 73 73 65 72 ;foo).alignment.==.4);.....asser
fda0 74 28 40 74 79 70 65 4f 66 28 26 61 6d 70 3b 66 6f 6f 29 20 3d 3d 20 26 61 6d 70 3b 61 6c 69 67 t(@typeOf(&amp;foo).==.&amp;alig
fdc0 6e 28 34 29 20 75 38 29 3b 0a 20 20 20 20 63 6f 6e 73 74 20 73 6c 69 63 65 20 3d 20 28 26 61 6d n(4).u8);.....const.slice.=.(&am
fde0 70 3b 66 6f 6f 29 5b 30 2e 2e 31 5d 3b 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 p;foo)[0..1];.....assert(@typeOf
fe00 28 73 6c 69 63 65 29 20 3d 3d 20 5b 5d 61 6c 69 67 6e 28 34 29 20 75 38 29 3b 0a 7d 0a 0a 66 6e (slice).==.[]align(4).u8);.}..fn
fe20 20 64 65 72 70 28 29 20 61 6c 69 67 6e 28 40 73 69 7a 65 4f 66 28 75 73 69 7a 65 29 20 2a 20 32 .derp().align(@sizeOf(usize).*.2
fe40 29 20 69 33 32 20 7b 20 72 65 74 75 72 6e 20 31 32 33 34 3b 20 7d 0a 66 6e 20 6e 6f 6f 70 31 28 ).i32.{.return.1234;.}.fn.noop1(
fe60 29 20 61 6c 69 67 6e 28 31 29 20 76 6f 69 64 20 7b 7d 0a 66 6e 20 6e 6f 6f 70 34 28 29 20 61 6c ).align(1).void.{}.fn.noop4().al
fe80 69 67 6e 28 34 29 20 76 6f 69 64 20 7b 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 66 75 6e 63 74 ign(4).void.{}..test.&quot;funct
fea0 69 6f 6e 20 61 6c 69 67 6e 6d 65 6e 74 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 61 73 73 65 72 74 ion.alignment&quot;.{.....assert
fec0 28 64 65 72 70 28 29 20 3d 3d 20 31 32 33 34 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 (derp().==.1234);.....assert(@ty
fee0 70 65 4f 66 28 6e 6f 6f 70 31 29 20 3d 3d 20 66 6e 28 29 20 61 6c 69 67 6e 28 31 29 20 76 6f 69 peOf(noop1).==.fn().align(1).voi
ff00 64 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 6e 6f 6f 70 34 29 20 3d 3d d);.....assert(@typeOf(noop4).==
ff20 20 66 6e 28 29 20 61 6c 69 67 6e 28 34 29 20 76 6f 69 64 29 3b 0a 20 20 20 20 6e 6f 6f 70 31 28 .fn().align(4).void);.....noop1(
ff40 29 3b 0a 20 20 20 20 6e 6f 6f 70 34 28 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 );.....noop4();.}</code></pre><p
ff60 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 re><code.class="shell">$.zig.tes
ff80 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 32 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 t.test.zig.Test.1/2.global.varia
ffa0 62 6c 65 20 61 6c 69 67 6e 6d 65 6e 74 2e 2e 2e 4f 4b 0a 54 65 73 74 20 32 2f 32 20 66 75 6e 63 ble.alignment...OK.Test.2/2.func
ffc0 74 69 6f 6e 20 61 6c 69 67 6e 6d 65 6e 74 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 tion.alignment...OK.</code></pre
ffe0 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 66 20 79 6f 75 20 68 61 76 65 20 61 >........<p>.......If.you.have.a
10000 20 70 6f 69 6e 74 65 72 20 6f 72 20 61 20 73 6c 69 63 65 20 74 68 61 74 20 68 61 73 20 61 20 73 .pointer.or.a.slice.that.has.a.s
10020 6d 61 6c 6c 20 61 6c 69 67 6e 6d 65 6e 74 2c 20 62 75 74 20 79 6f 75 20 6b 6e 6f 77 20 74 68 61 mall.alignment,.but.you.know.tha
10040 74 20 69 74 20 61 63 74 75 61 6c 6c 79 0a 20 20 20 20 20 20 68 61 73 20 61 20 62 69 67 67 65 72 t.it.actually.......has.a.bigger
10060 20 61 6c 69 67 6e 6d 65 6e 74 2c 20 75 73 65 20 3c 61 20 68 72 65 66 3d 22 23 61 6c 69 67 6e 43 .alignment,.use.<a.href="#alignC
10080 61 73 74 22 3e 40 61 6c 69 67 6e 43 61 73 74 3c 2f 61 3e 20 74 6f 20 63 68 61 6e 67 65 20 74 68 ast">@alignCast</a>.to.change.th
100a0 65 0a 20 20 20 20 20 20 70 6f 69 6e 74 65 72 20 69 6e 74 6f 20 61 20 6d 6f 72 65 20 61 6c 69 67 e.......pointer.into.a.more.alig
100c0 6e 65 64 20 70 6f 69 6e 74 65 72 2e 20 54 68 69 73 20 69 73 20 61 20 6e 6f 2d 6f 70 20 61 74 20 ned.pointer..This.is.a.no-op.at.
100e0 72 75 6e 74 69 6d 65 2c 20 62 75 74 20 69 6e 73 65 72 74 73 20 61 0a 20 20 20 20 20 20 3c 61 20 runtime,.but.inserts.a.......<a.
10100 68 72 65 66 3d 22 23 49 6e 63 6f 72 72 65 63 74 2d 50 6f 69 6e 74 65 72 2d 41 6c 69 67 6e 6d 65 href="#Incorrect-Pointer-Alignme
10120 6e 74 22 3e 73 61 66 65 74 79 20 63 68 65 63 6b 3c 2f 61 3e 3a 0a 20 20 20 20 20 20 3c 2f 70 3e nt">safety.check</a>:.......</p>
10140 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c .......<p.class="file">test.zig<
10160 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 /p><pre><code.class="zig">const.
10180 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b assert.=.@import(&quot;std&quot;
101a0 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 70 6f 69 6e ).debug.assert;..test.&quot;poin
101c0 74 65 72 20 61 6c 69 67 6e 6d 65 6e 74 20 73 61 66 65 74 79 26 71 75 6f 74 3b 20 7b 0a 20 20 20 ter.alignment.safety&quot;.{....
101e0 20 76 61 72 20 61 72 72 61 79 20 61 6c 69 67 6e 28 34 29 20 3d 20 5b 5d 75 33 32 7b 30 78 31 31 .var.array.align(4).=.[]u32{0x11
10200 31 31 31 31 31 31 2c 20 30 78 31 31 31 31 31 31 31 31 7d 3b 0a 20 20 20 20 63 6f 6e 73 74 20 62 111111,.0x11111111};.....const.b
10220 79 74 65 73 20 3d 20 28 5b 5d 75 38 29 28 61 72 72 61 79 5b 30 2e 2e 5d 29 3b 0a 20 20 20 20 61 ytes.=.([]u8)(array[0..]);.....a
10240 73 73 65 72 74 28 66 6f 6f 28 62 79 74 65 73 29 20 3d 3d 20 30 78 31 31 31 31 31 31 31 31 29 3b ssert(foo(bytes).==.0x11111111);
10260 0a 7d 0a 66 6e 20 66 6f 6f 28 62 79 74 65 73 3a 20 5b 5d 75 38 29 20 75 33 32 20 7b 0a 20 20 20 .}.fn.foo(bytes:.[]u8).u32.{....
10280 20 63 6f 6e 73 74 20 73 6c 69 63 65 34 20 3d 20 62 79 74 65 73 5b 31 2e 2e 35 5d 3b 0a 20 20 20 .const.slice4.=.bytes[1..5];....
102a0 20 63 6f 6e 73 74 20 69 6e 74 5f 73 6c 69 63 65 20 3d 20 28 5b 5d 75 33 32 29 28 40 61 6c 69 67 .const.int_slice.=.([]u32)(@alig
102c0 6e 43 61 73 74 28 34 2c 20 73 6c 69 63 65 34 29 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 69 6e nCast(4,.slice4));.....return.in
102e0 74 5f 73 6c 69 63 65 5b 30 5d 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c t_slice[0];.}</code></pre><pre><
10300 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 code.class="shell">$.zig.test.te
10320 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 70 6f 69 6e 74 65 72 20 61 6c 69 67 6e 6d 65 6e st.zig.Test.1/1.pointer.alignmen
10340 74 20 73 61 66 65 74 79 2e 2e 2e 69 6e 63 6f 72 72 65 63 74 20 61 6c 69 67 6e 6d 65 6e 74 0a 3c t.safety...incorrect.alignment.<
10360 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 37 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 span.class="t37_1">/home/andy/de
10380 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 31 30 3a 34 35 3c v/zig/docgen_tmp/test.zig:10:45<
103a0 2f 73 70 61 6e 3e 3a 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 30 33 /span>:.<span.class="t2_0">0x203
103c0 39 37 33 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 63 6f 6e 973.in.???.(test)</span>.....con
103e0 73 74 20 69 6e 74 5f 73 6c 69 63 65 20 3d 20 28 5b 5d 75 33 32 29 28 40 61 6c 69 67 6e 43 61 73 st.int_slice.=.([]u32)(@alignCas
10400 74 28 34 2c 20 73 6c 69 63 65 34 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t(4,.slice4));..................
10420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e ...........................<span
10440 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c .class="t32_1">^</span>.<span.cl
10460 61 73 73 3d 22 74 33 37 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 ass="t37_1">/home/andy/dev/zig/d
10480 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 36 3a 31 35 3c 2f 73 70 61 6e 3e 3a 20 ocgen_tmp/test.zig:6:15</span>:.
104a0 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 30 33 36 64 36 20 69 6e 20 3f <span.class="t2_0">0x2036d6.in.?
104c0 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 61 73 73 65 72 74 28 66 6f 6f 28 ??.(test)</span>.....assert(foo(
104e0 62 79 74 65 73 29 20 3d 3d 20 30 78 31 31 31 31 31 31 31 31 29 3b 0a 20 20 20 20 20 20 20 20 20 bytes).==.0x11111111);..........
10500 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e .....<span.class="t32_1">^</span
10520 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 37 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 >.<span.class="t37_1">/home/andy
10540 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 /dev/zig/build/lib/zig/std/speci
10560 61 6c 2f 74 65 73 74 5f 72 75 6e 6e 65 72 2e 7a 69 67 3a 31 31 3a 32 35 3c 2f 73 70 61 6e 3e 3a al/test_runner.zig:11:25</span>:
10580 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 31 64 36 33 38 20 69 6e 20 .<span.class="t2_0">0x21d638.in.
105a0 3f 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 20 20 20 20 74 72 79 20 74 65 ???.(test)</span>.........try.te
105c0 73 74 5f 66 6e 2e 66 75 6e 63 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 st_fn.func();...................
105e0 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 ......<span.class="t32_1">^</spa
10600 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 37 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 n>.<span.class="t37_1">/home/and
10620 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 y/dev/zig/build/lib/zig/std/spec
10640 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 2e 7a 69 67 3a 38 35 3a 32 32 3c 2f 73 70 61 6e 3e 3a 20 ial/bootstrap.zig:85:22</span>:.
10660 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 31 64 34 33 62 20 69 6e 20 3f <span.class="t2_0">0x21d43b.in.?
10680 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 6f ??.(test)</span>.............roo
106a0 74 2e 6d 61 69 6e 28 29 20 63 61 74 63 68 20 7c 65 72 72 7c 20 7b 0a 20 20 20 20 20 20 20 20 20 t.main().catch.|err|.{..........
106c0 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e ............<span.class="t32_1">
106e0 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 37 5f 31 22 3e 2f 68 6f ^</span>.<span.class="t37_1">/ho
10700 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 me/andy/dev/zig/build/lib/zig/st
10720 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 2e 7a 69 67 3a 36 32 3a 32 30 3c 2f 73 d/special/bootstrap.zig:62:20</s
10740 70 61 6e 3e 3a 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 31 64 33 39 pan>:.<span.class="t2_0">0x21d39
10760 62 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 72 65 74 75 72 b.in.???.(test)</span>.....retur
10780 6e 20 63 61 6c 6c 4d 61 69 6e 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n.callMain();...................
107a0 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 .<span.class="t32_1">^</span>.<s
107c0 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 37 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 pan.class="t37_1">/home/andy/dev
107e0 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 62 /zig/build/lib/zig/std/special/b
10800 6f 6f 74 73 74 72 61 70 2e 7a 69 67 3a 35 32 3a 33 39 3c 2f 73 70 61 6e 3e 3a 20 3c 73 70 61 6e ootstrap.zig:52:39</span>:.<span
10820 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 31 64 32 32 63 20 69 6e 20 3f 3f 3f 20 28 74 .class="t2_0">0x21d22c.in.???.(t
10840 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 73 74 64 2e 6f 73 2e 70 6f 73 69 78 2e 65 78 69 est)</span>.....std.os.posix.exi
10860 74 28 63 61 6c 6c 4d 61 69 6e 57 69 74 68 41 72 67 73 28 61 72 67 63 2c 20 61 72 67 76 2c 20 65 t(callMainWithArgs(argc,.argv,.e
10880 6e 76 70 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nvp));..........................
108a0 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 .............<span.class="t32_1"
108c0 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 37 5f 31 22 3e 2f 68 >^</span>.<span.class="t37_1">/h
108e0 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 ome/andy/dev/zig/build/lib/zig/s
10900 74 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 2e 7a 69 67 3a 33 39 3a 35 3c 2f 73 td/special/bootstrap.zig:39:5</s
10920 70 61 6e 3e 3a 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 31 64 31 62 pan>:.<span.class="t2_0">0x21d1b
10940 30 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 40 6e 6f 49 6e 0.in.???.(test)</span>.....@noIn
10960 6c 69 6e 65 43 61 6c 6c 28 70 6f 73 69 78 43 61 6c 6c 4d 61 69 6e 41 6e 64 45 78 69 74 29 3b 0a lineCall(posixCallMainAndExit);.
10980 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e ....<span.class="t32_1">^</span>
109a0 0a 0a 54 65 73 74 73 20 66 61 69 6c 65 64 2e 20 55 73 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e ..Tests.failed..Use.the.followin
109c0 67 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 72 65 70 72 6f 64 75 63 65 20 74 68 65 20 66 61 69 6c 75 g.command.to.reproduce.the.failu
109e0 72 65 3a 0a 2e 2f 7a 69 67 2d 63 61 63 68 65 2f 74 65 73 74 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 re:../zig-cache/test.</code></pr
10a00 65 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 54 79 70 65 2d 42 61 e>...............<h2.id="Type-Ba
10a20 73 65 64 2d 41 6c 69 61 73 2d 41 6e 61 6c 79 73 69 73 22 3e 54 79 70 65 20 42 61 73 65 64 20 41 sed-Alias-Analysis">Type.Based.A
10a40 6c 69 61 73 20 41 6e 61 6c 79 73 69 73 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 5a 69 67 lias.Analysis</h2>........<p>Zig
10a60 20 75 73 65 73 20 54 79 70 65 20 42 61 73 65 64 20 41 6c 69 61 73 20 41 6e 61 6c 79 73 69 73 20 .uses.Type.Based.Alias.Analysis.
10a80 28 61 6c 73 6f 20 6b 6e 6f 77 6e 20 61 73 20 53 74 72 69 63 74 20 41 6c 69 61 73 69 6e 67 29 20 (also.known.as.Strict.Aliasing).
10aa0 74 6f 0a 20 20 20 20 20 20 70 65 72 66 6f 72 6d 20 73 6f 6d 65 20 6f 70 74 69 6d 69 7a 61 74 69 to.......perform.some.optimizati
10ac0 6f 6e 73 2e 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20 70 6f 69 6e 74 65 72 73 20 6f 66 ons..This.means.that.pointers.of
10ae0 20 64 69 66 66 65 72 65 6e 74 20 74 79 70 65 73 20 6d 75 73 74 0a 20 20 20 20 20 20 6e 6f 74 20 .different.types.must.......not.
10b00 61 6c 69 61 73 20 74 68 65 20 73 61 6d 65 20 6d 65 6d 6f 72 79 2c 20 77 69 74 68 20 74 68 65 20 alias.the.same.memory,.with.the.
10b20 65 78 63 65 70 74 69 6f 6e 20 6f 66 20 3c 63 6f 64 65 3e 75 38 3c 2f 63 6f 64 65 3e 2e 20 50 6f exception.of.<code>u8</code>..Po
10b40 69 6e 74 65 72 73 20 74 6f 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 75 38 3c 2f 63 6f 64 65 3e 20 inters.to.......<code>u8</code>.
10b60 63 61 6e 20 61 6c 69 61 73 20 61 6e 79 20 6d 65 6d 6f 72 79 2e 0a 20 20 20 20 20 20 3c 2f 70 3e can.alias.any.memory........</p>
10b80 0a 20 20 20 20 20 20 3c 70 3e 41 73 20 61 6e 20 65 78 61 6d 70 6c 65 2c 20 74 68 69 73 20 63 6f .......<p>As.an.example,.this.co
10ba0 64 65 20 70 72 6f 64 75 63 65 73 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 3a 3c de.produces.undefined.behavior:<
10bc0 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 /p>.......<pre><code.class="zig"
10be0 3e 2a 40 70 74 72 43 61 73 74 28 26 61 6d 70 3b 75 33 32 2c 20 66 33 32 28 31 32 2e 33 34 29 29 >*@ptrCast(&amp;u32,.f32(12.34))
10c00 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 49 6e 73 74 65 61 64 2c 20 </code></pre>.......<p>Instead,.
10c20 75 73 65 20 3c 61 20 68 72 65 66 3d 22 23 62 69 74 43 61 73 74 22 3e 40 62 69 74 43 61 73 74 3c use.<a.href="#bitCast">@bitCast<
10c40 2f 61 3e 3a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 /a>:.......<pre><code.class="zig
10c60 22 3e 40 62 69 74 43 61 73 74 28 75 33 32 2c 20 66 33 32 28 31 32 2e 33 34 29 29 3c 2f 63 6f 64 ">@bitCast(u32,.f32(12.34))</cod
10c80 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 41 73 20 61 6e 20 61 64 64 65 64 20 62 65 e></pre>.......<p>As.an.added.be
10ca0 6e 65 66 69 74 2c 20 74 68 65 20 3c 63 6f 64 65 3e 40 62 69 74 63 61 73 74 3c 2f 63 6f 64 65 3e nefit,.the.<code>@bitcast</code>
10cc0 20 76 65 72 73 69 6f 6e 20 77 6f 72 6b 73 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2e 3c .version.works.at.compile-time.<
10ce0 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c /p>.......<p>See.also:</p><ul>.<
10d00 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 53 6c 69 63 65 73 22 3e 53 6c 69 63 65 73 3c 2f 61 3e 3c li><a.href="#Slices">Slices</a><
10d20 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 4d 65 6d 6f 72 79 22 3e 4d 65 6d 6f 72 /li>.<li><a.href="#Memory">Memor
10d40 79 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a y</a></li>.</ul>................
10d60 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 53 6c 69 63 65 73 22 3e 53 6c 69 63 65 73 3c 2f 68 31 ......<h1.id="Slices">Slices</h1
10d80 3e 0a 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 >........<p.class="file">test.zi
10da0 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 g</p><pre><code.class="zig">cons
10dc0 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f t.assert.=.@import(&quot;std&quo
10de0 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 62 61 t;).debug.assert;..test.&quot;ba
10e00 73 69 63 20 73 6c 69 63 65 73 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 76 61 72 20 61 72 72 61 79 sic.slices&quot;.{.....var.array
10e20 20 3d 20 5b 5d 69 33 32 7b 31 2c 20 32 2c 20 33 2c 20 34 7d 3b 0a 20 20 20 20 2f 2f 20 41 20 73 .=.[]i32{1,.2,.3,.4};.....//.A.s
10e40 6c 69 63 65 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 61 6e 64 20 61 20 6c 65 6e 67 74 68 2e 20 lice.is.a.pointer.and.a.length..
10e60 54 68 65 20 64 69 66 66 65 72 65 6e 63 65 20 62 65 74 77 65 65 6e 20 61 6e 20 61 72 72 61 79 20 The.difference.between.an.array.
10e80 61 6e 64 0a 20 20 20 20 2f 2f 20 61 20 73 6c 69 63 65 20 69 73 20 74 68 61 74 20 74 68 65 20 61 and.....//.a.slice.is.that.the.a
10ea0 72 72 61 79 27 73 20 6c 65 6e 67 74 68 20 69 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 74 79 70 rray's.length.is.part.of.the.typ
10ec0 65 20 61 6e 64 20 6b 6e 6f 77 6e 20 61 74 0a 20 20 20 20 2f 2f 20 63 6f 6d 70 69 6c 65 2d 74 69 e.and.known.at.....//.compile-ti
10ee0 6d 65 2c 20 77 68 65 72 65 61 73 20 74 68 65 20 73 6c 69 63 65 27 73 20 6c 65 6e 67 74 68 20 69 me,.whereas.the.slice's.length.i
10f00 73 20 6b 6e 6f 77 6e 20 61 74 20 72 75 6e 74 69 6d 65 2e 0a 20 20 20 20 2f 2f 20 42 6f 74 68 20 s.known.at.runtime......//.Both.
10f20 63 61 6e 20 62 65 20 61 63 63 65 73 73 65 64 20 77 69 74 68 20 74 68 65 20 60 6c 65 6e 60 20 66 can.be.accessed.with.the.`len`.f
10f40 69 65 6c 64 2e 0a 20 20 20 20 63 6f 6e 73 74 20 73 6c 69 63 65 20 3d 20 61 72 72 61 79 5b 30 2e ield......const.slice.=.array[0.
10f60 2e 61 72 72 61 79 2e 6c 65 6e 5d 3b 0a 20 20 20 20 61 73 73 65 72 74 28 73 6c 69 63 65 2e 70 74 .array.len];.....assert(slice.pt
10f80 72 20 3d 3d 20 26 61 6d 70 3b 61 72 72 61 79 5b 30 5d 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 r.==.&amp;array[0]);.....assert(
10fa0 73 6c 69 63 65 2e 6c 65 6e 20 3d 3d 20 61 72 72 61 79 2e 6c 65 6e 29 3b 0a 0a 20 20 20 20 2f 2f slice.len.==.array.len);......//
10fc0 20 53 6c 69 63 65 73 20 68 61 76 65 20 61 72 72 61 79 20 62 6f 75 6e 64 73 20 63 68 65 63 6b 69 .Slices.have.array.bounds.checki
10fe0 6e 67 2e 20 49 66 20 79 6f 75 20 74 72 79 20 74 6f 20 61 63 63 65 73 73 20 73 6f 6d 65 74 68 69 ng..If.you.try.to.access.somethi
11000 6e 67 20 6f 75 74 0a 20 20 20 20 2f 2f 20 6f 66 20 62 6f 75 6e 64 73 2c 20 79 6f 75 27 6c 6c 20 ng.out.....//.of.bounds,.you'll.
11020 67 65 74 20 61 20 73 61 66 65 74 79 20 63 68 65 63 6b 20 66 61 69 6c 75 72 65 3a 0a 20 20 20 20 get.a.safety.check.failure:.....
11040 73 6c 69 63 65 5b 31 30 5d 20 2b 3d 20 31 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 slice[10].+=.1;.}</code></pre><p
11060 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 re><code.class="shell">$.zig.tes
11080 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 62 61 73 69 63 20 73 6c 69 63 65 73 t.test.zig.Test.1/1.basic.slices
110a0 2e 2e 2e 69 6e 64 65 78 20 6f 75 74 20 6f 66 20 62 6f 75 6e 64 73 0a 3c 73 70 61 6e 20 63 6c 61 ...index.out.of.bounds.<span.cla
110c0 73 73 3d 22 74 33 37 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f ss="t37_1">/home/andy/dev/zig/do
110e0 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 31 35 3a 31 30 3c 2f 73 70 61 6e 3e 3a 20 cgen_tmp/test.zig:15:10</span>:.
11100 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 30 33 37 32 62 20 69 6e 20 3f <span.class="t2_0">0x20372b.in.?
11120 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 73 6c 69 63 65 5b 31 30 5d 20 2b ??.(test)</span>.....slice[10].+
11140 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 =.1;..........<span.class="t32_1
11160 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 37 5f 31 22 3e 2f ">^</span>.<span.class="t37_1">/
11180 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f home/andy/dev/zig/build/lib/zig/
111a0 73 74 64 2f 73 70 65 63 69 61 6c 2f 74 65 73 74 5f 72 75 6e 6e 65 72 2e 7a 69 67 3a 31 31 3a 32 std/special/test_runner.zig:11:2
111c0 35 3c 2f 73 70 61 6e 3e 3a 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 5</span>:.<span.class="t2_0">0x2
111e0 31 64 35 36 38 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 20 1d568.in.???.(test)</span>......
11200 20 20 20 74 72 79 20 74 65 73 74 5f 66 6e 2e 66 75 6e 63 28 29 3b 0a 20 20 20 20 20 20 20 20 20 ...try.test_fn.func();..........
11220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f ...............<span.class="t32_
11240 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 37 5f 31 22 3e 1">^</span>.<span.class="t37_1">
11260 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 /home/andy/dev/zig/build/lib/zig
11280 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 2e 7a 69 67 3a 38 35 3a 32 32 /std/special/bootstrap.zig:85:22
112a0 3c 2f 73 70 61 6e 3e 3a 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 31 </span>:.<span.class="t2_0">0x21
112c0 64 33 36 62 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 20 20 d36b.in.???.(test)</span>.......
112e0 20 20 20 20 20 20 72 6f 6f 74 2e 6d 61 69 6e 28 29 20 63 61 74 63 68 20 7c 65 72 72 7c 20 7b 0a ......root.main().catch.|err|.{.
11300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 .....................<span.class
11320 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 ="t32_1">^</span>.<span.class="t
11340 33 37 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 37_1">/home/andy/dev/zig/build/l
11360 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 2e 7a 69 67 ib/zig/std/special/bootstrap.zig
11380 3a 36 32 3a 32 30 3c 2f 73 70 61 6e 3e 3a 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 :62:20</span>:.<span.class="t2_0
113a0 22 3e 30 78 32 31 64 32 63 62 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a ">0x21d2cb.in.???.(test)</span>.
113c0 20 20 20 20 72 65 74 75 72 6e 20 63 61 6c 6c 4d 61 69 6e 28 29 3b 0a 20 20 20 20 20 20 20 20 20 ....return.callMain();..........
113e0 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c ..........<span.class="t32_1">^<
11400 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 37 5f 31 22 3e 2f 68 6f 6d 65 /span>.<span.class="t37_1">/home
11420 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f /andy/dev/zig/build/lib/zig/std/
11440 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 2e 7a 69 67 3a 35 32 3a 33 39 3c 2f 73 70 61 special/bootstrap.zig:52:39</spa
11460 6e 3e 3a 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 31 64 31 35 63 20 n>:.<span.class="t2_0">0x21d15c.
11480 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 73 74 64 2e 6f 73 2e in.???.(test)</span>.....std.os.
114a0 70 6f 73 69 78 2e 65 78 69 74 28 63 61 6c 6c 4d 61 69 6e 57 69 74 68 41 72 67 73 28 61 72 67 63 posix.exit(callMainWithArgs(argc
114c0 2c 20 61 72 67 76 2c 20 65 6e 76 70 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ,.argv,.envp));.................
114e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 ......................<span.clas
11500 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 s="t32_1">^</span>.<span.class="
11520 74 33 37 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f t37_1">/home/andy/dev/zig/build/
11540 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 2e 7a 69 lib/zig/std/special/bootstrap.zi
11560 67 3a 33 39 3a 35 3c 2f 73 70 61 6e 3e 3a 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 g:39:5</span>:.<span.class="t2_0
11580 22 3e 30 78 32 31 64 30 65 30 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a ">0x21d0e0.in.???.(test)</span>.
115a0 20 20 20 20 40 6e 6f 49 6e 6c 69 6e 65 43 61 6c 6c 28 70 6f 73 69 78 43 61 6c 6c 4d 61 69 6e 41 ....@noInlineCall(posixCallMainA
115c0 6e 64 45 78 69 74 29 3b 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 ndExit);.....<span.class="t32_1"
115e0 3e 5e 3c 2f 73 70 61 6e 3e 0a 0a 54 65 73 74 73 20 66 61 69 6c 65 64 2e 20 55 73 65 20 74 68 65 >^</span>..Tests.failed..Use.the
11600 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 72 65 70 72 6f 64 75 63 65 20 .following.command.to.reproduce.
11620 74 68 65 20 66 61 69 6c 75 72 65 3a 0a 2e 2f 7a 69 67 2d 63 61 63 68 65 2f 74 65 73 74 0a 3c 2f the.failure:../zig-cache/test.</
11640 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 54 68 69 73 20 69 73 20 6f 6e code></pre>........<p>This.is.on
11660 65 20 72 65 61 73 6f 6e 20 77 65 20 70 72 65 66 65 72 20 73 6c 69 63 65 73 20 74 6f 20 70 6f 69 e.reason.we.prefer.slices.to.poi
11680 6e 74 65 72 73 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 nters.</p>.......<p.class="file"
116a0 3e 73 6c 69 63 65 73 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d >slices.zig</p><pre><code.class=
116c0 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 "zig">const.assert.=.@import(&qu
116e0 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 63 6f 6e 73 ot;std&quot;).debug.assert;.cons
11700 74 20 6d 65 6d 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 t.mem.=.@import(&quot;std&quot;)
11720 2e 6d 65 6d 3b 0a 63 6f 6e 73 74 20 66 6d 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b .mem;.const.fmt.=.@import(&quot;
11740 73 74 64 26 71 75 6f 74 3b 29 2e 66 6d 74 3b 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 75 73 69 6e std&quot;).fmt;..test.&quot;usin
11760 67 20 73 6c 69 63 65 73 20 66 6f 72 20 73 74 72 69 6e 67 73 26 71 75 6f 74 3b 20 7b 0a 20 20 20 g.slices.for.strings&quot;.{....
11780 20 2f 2f 20 5a 69 67 20 68 61 73 20 6e 6f 20 63 6f 6e 63 65 70 74 20 6f 66 20 73 74 72 69 6e 67 .//.Zig.has.no.concept.of.string
117a0 73 2e 20 53 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 73 20 61 72 65 20 61 72 72 61 79 73 20 6f 66 s..String.literals.are.arrays.of
117c0 20 75 38 2c 20 61 6e 64 0a 20 20 20 20 2f 2f 20 69 6e 20 67 65 6e 65 72 61 6c 20 74 68 65 20 73 .u8,.and.....//.in.general.the.s
117e0 74 72 69 6e 67 20 74 79 70 65 20 69 73 20 5b 5d 75 38 20 28 73 6c 69 63 65 20 6f 66 20 75 38 29 tring.type.is.[]u8.(slice.of.u8)
11800 2e 0a 20 20 20 20 2f 2f 20 48 65 72 65 20 77 65 20 69 6d 70 6c 69 63 69 74 6c 79 20 63 61 73 74 ......//.Here.we.implicitly.cast
11820 20 5b 35 5d 75 38 20 74 6f 20 5b 5d 63 6f 6e 73 74 20 75 38 0a 20 20 20 20 63 6f 6e 73 74 20 68 .[5]u8.to.[]const.u8.....const.h
11840 65 6c 6c 6f 3a 20 5b 5d 63 6f 6e 73 74 20 75 38 20 3d 20 26 71 75 6f 74 3b 68 65 6c 6c 6f 26 71 ello:.[]const.u8.=.&quot;hello&q
11860 75 6f 74 3b 3b 0a 20 20 20 20 63 6f 6e 73 74 20 77 6f 72 6c 64 3a 20 5b 5d 63 6f 6e 73 74 20 75 uot;;.....const.world:.[]const.u
11880 38 20 3d 20 26 71 75 6f 74 3b e4 b8 96 e7 95 8c 26 71 75 6f 74 3b 3b 0a 0a 20 20 20 20 76 61 72 8.=.&quot;......&quot;;......var
118a0 20 61 6c 6c 5f 74 6f 67 65 74 68 65 72 3a 20 5b 31 30 30 5d 75 38 20 3d 20 75 6e 64 65 66 69 6e .all_together:.[100]u8.=.undefin
118c0 65 64 3b 0a 20 20 20 20 2f 2f 20 59 6f 75 20 63 61 6e 20 75 73 65 20 73 6c 69 63 65 20 73 79 6e ed;.....//.You.can.use.slice.syn
118e0 74 61 78 20 6f 6e 20 61 6e 20 61 72 72 61 79 20 74 6f 20 63 6f 6e 76 65 72 74 20 61 6e 20 61 72 tax.on.an.array.to.convert.an.ar
11900 72 61 79 20 69 6e 74 6f 20 61 20 73 6c 69 63 65 2e 0a 20 20 20 20 63 6f 6e 73 74 20 61 6c 6c 5f ray.into.a.slice......const.all_
11920 74 6f 67 65 74 68 65 72 5f 73 6c 69 63 65 20 3d 20 61 6c 6c 5f 74 6f 67 65 74 68 65 72 5b 30 2e together_slice.=.all_together[0.
11940 2e 5d 3b 0a 20 20 20 20 2f 2f 20 53 74 72 69 6e 67 20 63 6f 6e 63 61 74 65 6e 61 74 69 6f 6e 20 .];.....//.String.concatenation.
11960 65 78 61 6d 70 6c 65 2e 0a 20 20 20 20 63 6f 6e 73 74 20 68 65 6c 6c 6f 5f 77 6f 72 6c 64 20 3d example......const.hello_world.=
11980 20 74 72 79 20 66 6d 74 2e 62 75 66 50 72 69 6e 74 28 61 6c 6c 5f 74 6f 67 65 74 68 65 72 5f 73 .try.fmt.bufPrint(all_together_s
119a0 6c 69 63 65 2c 20 26 71 75 6f 74 3b 7b 7d 20 7b 7d 26 71 75 6f 74 3b 2c 20 68 65 6c 6c 6f 2c 20 lice,.&quot;{}.{}&quot;,.hello,.
119c0 77 6f 72 6c 64 29 3b 0a 0a 20 20 20 20 2f 2f 20 47 65 6e 65 72 61 6c 6c 79 2c 20 79 6f 75 20 63 world);......//.Generally,.you.c
119e0 61 6e 20 75 73 65 20 55 54 46 2d 38 20 61 6e 64 20 6e 6f 74 20 77 6f 72 72 79 20 61 62 6f 75 74 an.use.UTF-8.and.not.worry.about
11a00 20 77 68 65 74 68 65 72 20 73 6f 6d 65 74 68 69 6e 67 20 69 73 20 61 0a 20 20 20 20 2f 2f 20 73 .whether.something.is.a.....//.s
11a20 74 72 69 6e 67 2e 20 49 66 20 79 6f 75 20 64 6f 6e 27 74 20 6e 65 65 64 20 74 6f 20 64 65 61 6c tring..If.you.don't.need.to.deal
11a40 20 77 69 74 68 20 69 6e 64 69 76 69 64 75 61 6c 20 63 68 61 72 61 63 74 65 72 73 2c 20 6e 6f 20 .with.individual.characters,.no.
11a60 6e 65 65 64 0a 20 20 20 20 2f 2f 20 74 6f 20 64 65 63 6f 64 65 2e 0a 20 20 20 20 61 73 73 65 72 need.....//.to.decode......asser
11a80 74 28 6d 65 6d 2e 65 71 6c 28 75 38 2c 20 68 65 6c 6c 6f 5f 77 6f 72 6c 64 2c 20 26 71 75 6f 74 t(mem.eql(u8,.hello_world,.&quot
11aa0 3b 68 65 6c 6c 6f 20 e4 b8 96 e7 95 8c 26 71 75 6f 74 3b 29 29 3b 0a 7d 0a 0a 74 65 73 74 20 26 ;hello.......&quot;));.}..test.&
11ac0 71 75 6f 74 3b 73 6c 69 63 65 20 70 6f 69 6e 74 65 72 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 76 quot;slice.pointer&quot;.{.....v
11ae0 61 72 20 61 72 72 61 79 3a 20 5b 31 30 5d 75 38 20 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 ar.array:.[10]u8.=.undefined;...
11b00 20 20 63 6f 6e 73 74 20 70 74 72 20 3d 20 26 61 6d 70 3b 61 72 72 61 79 5b 30 5d 3b 0a 0a 20 20 ..const.ptr.=.&amp;array[0];....
11b20 20 20 2f 2f 20 59 6f 75 20 63 61 6e 20 75 73 65 20 73 6c 69 63 69 6e 67 20 73 79 6e 74 61 78 20 ..//.You.can.use.slicing.syntax.
11b40 74 6f 20 63 6f 6e 76 65 72 74 20 61 20 70 6f 69 6e 74 65 72 20 69 6e 74 6f 20 61 20 73 6c 69 63 to.convert.a.pointer.into.a.slic
11b60 65 3a 0a 20 20 20 20 63 6f 6e 73 74 20 73 6c 69 63 65 20 3d 20 70 74 72 5b 30 2e 2e 35 5d 3b 0a e:.....const.slice.=.ptr[0..5];.
11b80 20 20 20 20 73 6c 69 63 65 5b 32 5d 20 3d 20 33 3b 0a 20 20 20 20 61 73 73 65 72 74 28 73 6c 69 ....slice[2].=.3;.....assert(sli
11ba0 63 65 5b 32 5d 20 3d 3d 20 33 29 3b 0a 20 20 20 20 2f 2f 20 54 68 65 20 73 6c 69 63 65 20 69 73 ce[2].==.3);.....//.The.slice.is
11bc0 20 6d 75 74 61 62 6c 65 20 62 65 63 61 75 73 65 20 77 65 20 73 6c 69 63 65 64 20 61 20 6d 75 74 .mutable.because.we.sliced.a.mut
11be0 61 62 6c 65 20 70 6f 69 6e 74 65 72 2e 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 able.pointer......assert(@typeOf
11c00 28 73 6c 69 63 65 29 20 3d 3d 20 5b 5d 75 38 29 3b 0a 0a 20 20 20 20 2f 2f 20 59 6f 75 20 63 61 (slice).==.[]u8);......//.You.ca
11c20 6e 20 61 6c 73 6f 20 73 6c 69 63 65 20 61 20 73 6c 69 63 65 3a 0a 20 20 20 20 63 6f 6e 73 74 20 n.also.slice.a.slice:.....const.
11c40 73 6c 69 63 65 32 20 3d 20 73 6c 69 63 65 5b 32 2e 2e 33 5d 3b 0a 20 20 20 20 61 73 73 65 72 74 slice2.=.slice[2..3];.....assert
11c60 28 73 6c 69 63 65 32 2e 6c 65 6e 20 3d 3d 20 31 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 73 6c (slice2.len.==.1);.....assert(sl
11c80 69 63 65 32 5b 30 5d 20 3d 3d 20 33 29 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 73 6c 69 ice2[0].==.3);.}..test.&quot;sli
11ca0 63 65 20 77 69 64 65 6e 69 6e 67 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 2f 2f 20 5a 69 67 20 73 ce.widening&quot;.{.....//.Zig.s
11cc0 75 70 70 6f 72 74 73 20 73 6c 69 63 65 20 77 69 64 65 6e 69 6e 67 20 61 6e 64 20 73 6c 69 63 65 upports.slice.widening.and.slice
11ce0 20 6e 61 72 72 6f 77 69 6e 67 2e 20 43 61 73 74 20 61 20 73 6c 69 63 65 20 6f 66 20 75 38 0a 20 .narrowing..Cast.a.slice.of.u8..
11d00 20 20 20 2f 2f 20 74 6f 20 61 20 73 6c 69 63 65 20 6f 66 20 61 6e 79 74 68 69 6e 67 20 65 6c 73 ...//.to.a.slice.of.anything.els
11d20 65 2c 20 61 6e 64 20 5a 69 67 20 77 69 6c 6c 20 70 65 72 66 6f 72 6d 20 74 68 65 20 6c 65 6e 67 e,.and.Zig.will.perform.the.leng
11d40 74 68 20 63 6f 6e 76 65 72 73 69 6f 6e 2e 0a 20 20 20 20 63 6f 6e 73 74 20 61 72 72 61 79 20 61 th.conversion......const.array.a
11d60 6c 69 67 6e 28 40 61 6c 69 67 6e 4f 66 28 75 33 32 29 29 20 3d 20 5b 5d 75 38 7b 30 78 31 32 2c lign(@alignOf(u32)).=.[]u8{0x12,
11d80 20 30 78 31 32 2c 20 30 78 31 32 2c 20 30 78 31 32 2c 20 30 78 31 33 2c 20 30 78 31 33 2c 20 30 .0x12,.0x12,.0x12,.0x13,.0x13,.0
11da0 78 31 33 2c 20 30 78 31 33 7d 3b 0a 20 20 20 20 63 6f 6e 73 74 20 73 6c 69 63 65 20 3d 20 28 5b x13,.0x13};.....const.slice.=.([
11dc0 5d 63 6f 6e 73 74 20 75 33 32 29 28 61 72 72 61 79 5b 30 2e 2e 5d 29 3b 0a 20 20 20 20 61 73 73 ]const.u32)(array[0..]);.....ass
11de0 65 72 74 28 73 6c 69 63 65 2e 6c 65 6e 20 3d 3d 20 32 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 ert(slice.len.==.2);.....assert(
11e00 73 6c 69 63 65 5b 30 5d 20 3d 3d 20 30 78 31 32 31 32 31 32 31 32 29 3b 0a 20 20 20 20 61 73 73 slice[0].==.0x12121212);.....ass
11e20 65 72 74 28 73 6c 69 63 65 5b 31 5d 20 3d 3d 20 30 78 31 33 31 33 31 33 31 33 29 3b 0a 7d 3c 2f ert(slice[1].==.0x13131313);.}</
11e40 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 code></pre><pre><code.class="she
11e60 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 73 6c 69 63 65 73 2e 7a 69 67 0a 54 65 73 74 20 31 ll">$.zig.test.slices.zig.Test.1
11e80 2f 33 20 75 73 69 6e 67 20 73 6c 69 63 65 73 20 66 6f 72 20 73 74 72 69 6e 67 73 2e 2e 2e 4f 4b /3.using.slices.for.strings...OK
11ea0 0a 54 65 73 74 20 32 2f 33 20 73 6c 69 63 65 20 70 6f 69 6e 74 65 72 2e 2e 2e 4f 4b 0a 54 65 73 .Test.2/3.slice.pointer...OK.Tes
11ec0 74 20 33 2f 33 20 73 6c 69 63 65 20 77 69 64 65 6e 69 6e 67 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 t.3/3.slice.widening...OK.</code
11ee0 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c ></pre>........<p>See.also:</p><
11f00 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 50 6f 69 6e 74 65 72 73 22 3e 50 6f 69 6e ul>.<li><a.href="#Pointers">Poin
11f20 74 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 66 6f 72 22 ters</a></li>.<li><a.href="#for"
11f40 3e 66 6f 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 41 72 72 61 >for</a></li>.<li><a.href="#Arra
11f60 79 73 22 3e 41 72 72 61 79 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 ys">Arrays</a></li>.</ul>.......
11f80 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 73 74 72 75 63 74 22 3e 73 74 72 75 63 74 3c 2f ........<h1.id="struct">struct</
11fa0 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 73 74 72 75 63 h1>........<p.class="file">struc
11fc0 74 73 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 ts.zig</p><pre><code.class="zig"
11fe0 3e 2f 2f 20 44 65 63 6c 61 72 65 20 61 20 73 74 72 75 63 74 2e 0a 2f 2f 20 5a 69 67 20 67 69 76 >//.Declare.a.struct..//.Zig.giv
12000 65 73 20 6e 6f 20 67 75 61 72 61 6e 74 65 65 73 20 61 62 6f 75 74 20 74 68 65 20 6f 72 64 65 72 es.no.guarantees.about.the.order
12020 20 6f 66 20 66 69 65 6c 64 73 20 61 6e 64 20 77 68 65 74 68 65 72 20 6f 72 0a 2f 2f 20 6e 6f 74 .of.fields.and.whether.or.//.not
12040 20 74 68 65 72 65 20 77 69 6c 6c 20 62 65 20 70 61 64 64 69 6e 67 2e 0a 63 6f 6e 73 74 20 50 6f .there.will.be.padding..const.Po
12060 69 6e 74 20 3d 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 78 3a 20 66 33 32 2c 0a 20 20 20 20 79 int.=.struct.{.....x:.f32,.....y
12080 3a 20 66 33 32 2c 0a 7d 3b 0a 0a 2f 2f 20 4d 61 79 62 65 20 77 65 20 77 61 6e 74 20 74 6f 20 70 :.f32,.};..//.Maybe.we.want.to.p
120a0 61 73 73 20 69 74 20 74 6f 20 4f 70 65 6e 47 4c 20 73 6f 20 77 65 20 77 61 6e 74 20 74 6f 20 62 ass.it.to.OpenGL.so.we.want.to.b
120c0 65 20 70 61 72 74 69 63 75 6c 61 72 20 61 62 6f 75 74 0a 2f 2f 20 68 6f 77 20 74 68 65 20 62 79 e.particular.about.//.how.the.by
120e0 74 65 73 20 61 72 65 20 61 72 72 61 6e 67 65 64 2e 0a 63 6f 6e 73 74 20 50 6f 69 6e 74 32 20 3d tes.are.arranged..const.Point2.=
12100 20 70 61 63 6b 65 64 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 78 3a 20 66 33 32 2c 0a 20 20 20 .packed.struct.{.....x:.f32,....
12120 20 79 3a 20 66 33 32 2c 0a 7d 3b 0a 0a 0a 2f 2f 20 44 65 63 6c 61 72 65 20 61 6e 20 69 6e 73 74 .y:.f32,.};...//.Declare.an.inst
12140 61 6e 63 65 20 6f 66 20 61 20 73 74 72 75 63 74 2e 0a 63 6f 6e 73 74 20 70 20 3d 20 50 6f 69 6e ance.of.a.struct..const.p.=.Poin
12160 74 20 7b 0a 20 20 20 20 2e 78 20 3d 20 30 2e 31 32 2c 0a 20 20 20 20 2e 79 20 3d 20 30 2e 33 34 t.{......x.=.0.12,......y.=.0.34
12180 2c 0a 7d 3b 0a 0a 2f 2f 20 4d 61 79 62 65 20 77 65 27 72 65 20 6e 6f 74 20 72 65 61 64 79 20 74 ,.};..//.Maybe.we're.not.ready.t
121a0 6f 20 66 69 6c 6c 20 6f 75 74 20 73 6f 6d 65 20 6f 66 20 74 68 65 20 66 69 65 6c 64 73 2e 0a 76 o.fill.out.some.of.the.fields..v
121c0 61 72 20 70 32 20 3d 20 50 6f 69 6e 74 20 7b 0a 20 20 20 20 2e 78 20 3d 20 30 2e 31 32 2c 0a 20 ar.p2.=.Point.{......x.=.0.12,..
121e0 20 20 20 2e 79 20 3d 20 75 6e 64 65 66 69 6e 65 64 2c 0a 7d 3b 0a 0a 2f 2f 20 53 74 72 75 63 74 ....y.=.undefined,.};..//.Struct
12200 73 20 63 61 6e 20 68 61 76 65 20 6d 65 74 68 6f 64 73 0a 2f 2f 20 53 74 72 75 63 74 20 6d 65 74 s.can.have.methods.//.Struct.met
12220 68 6f 64 73 20 61 72 65 20 6e 6f 74 20 73 70 65 63 69 61 6c 2c 20 74 68 65 79 20 61 72 65 20 6f hods.are.not.special,.they.are.o
12240 6e 6c 79 20 6e 61 6d 65 73 70 61 63 65 64 0a 2f 2f 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 nly.namespaced.//.functions.that
12260 20 79 6f 75 20 63 61 6e 20 63 61 6c 6c 20 77 69 74 68 20 64 6f 74 20 73 79 6e 74 61 78 2e 0a 63 .you.can.call.with.dot.syntax..c
12280 6f 6e 73 74 20 56 65 63 33 20 3d 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 78 3a 20 66 33 32 2c onst.Vec3.=.struct.{.....x:.f32,
122a0 0a 20 20 20 20 79 3a 20 66 33 32 2c 0a 20 20 20 20 7a 3a 20 66 33 32 2c 0a 0a 20 20 20 20 70 75 .....y:.f32,.....z:.f32,......pu
122c0 62 20 66 6e 20 69 6e 69 74 28 78 3a 20 66 33 32 2c 20 79 3a 20 66 33 32 2c 20 7a 3a 20 66 33 32 b.fn.init(x:.f32,.y:.f32,.z:.f32
122e0 29 20 56 65 63 33 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 56 65 63 33 20 7b 0a 20 ).Vec3.{.........return.Vec3.{..
12300 20 20 20 20 20 20 20 20 20 20 20 2e 78 20 3d 20 78 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 2e ............x.=.x,..............
12320 79 20 3d 20 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 2e 7a 20 3d 20 7a 2c 0a 20 20 20 20 20 y.=.y,..............z.=.z,......
12340 20 20 20 7d 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 75 62 20 66 6e 20 64 6f 74 28 73 65 6c 66 ...};.....}......pub.fn.dot(self
12360 3a 20 26 61 6d 70 3b 63 6f 6e 73 74 20 56 65 63 33 2c 20 6f 74 68 65 72 3a 20 26 61 6d 70 3b 63 :.&amp;const.Vec3,.other:.&amp;c
12380 6f 6e 73 74 20 56 65 63 33 29 20 66 33 32 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 onst.Vec3).f32.{.........return.
123a0 73 65 6c 66 2e 78 20 2a 20 6f 74 68 65 72 2e 78 20 2b 20 73 65 6c 66 2e 79 20 2a 20 6f 74 68 65 self.x.*.other.x.+.self.y.*.othe
123c0 72 2e 79 20 2b 20 73 65 6c 66 2e 7a 20 2a 20 6f 74 68 65 72 2e 7a 3b 0a 20 20 20 20 7d 0a 7d 3b r.y.+.self.z.*.other.z;.....}.};
123e0 0a 0a 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 ..const.assert.=.@import(&quot;s
12400 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 74 65 73 74 20 26 71 75 td&quot;).debug.assert;.test.&qu
12420 6f 74 3b 64 6f 74 20 70 72 6f 64 75 63 74 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 63 6f 6e 73 74 ot;dot.product&quot;.{.....const
12440 20 76 31 20 3d 20 56 65 63 33 2e 69 6e 69 74 28 31 2e 30 2c 20 30 2e 30 2c 20 30 2e 30 29 3b 0a .v1.=.Vec3.init(1.0,.0.0,.0.0);.
12460 20 20 20 20 63 6f 6e 73 74 20 76 32 20 3d 20 56 65 63 33 2e 69 6e 69 74 28 30 2e 30 2c 20 31 2e ....const.v2.=.Vec3.init(0.0,.1.
12480 30 2c 20 30 2e 30 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 76 31 2e 64 6f 74 28 76 32 29 20 3d 0,.0.0);.....assert(v1.dot(v2).=
124a0 3d 20 30 2e 30 29 3b 0a 0a 20 20 20 20 2f 2f 20 4f 74 68 65 72 20 74 68 61 6e 20 62 65 69 6e 67 =.0.0);......//.Other.than.being
124c0 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 63 61 6c 6c 20 77 69 74 68 20 64 6f 74 20 73 79 6e 74 .available.to.call.with.dot.synt
124e0 61 78 2c 20 73 74 72 75 63 74 20 6d 65 74 68 6f 64 73 20 61 72 65 0a 20 20 20 20 2f 2f 20 6e 6f ax,.struct.methods.are.....//.no
12500 74 20 73 70 65 63 69 61 6c 2e 20 59 6f 75 20 63 61 6e 20 72 65 66 65 72 65 6e 63 65 20 74 68 65 t.special..You.can.reference.the
12520 6d 20 61 73 20 61 6e 79 20 6f 74 68 65 72 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 69 6e 73 69 64 m.as.any.other.declaration.insid
12540 65 0a 20 20 20 20 2f 2f 20 74 68 65 20 73 74 72 75 63 74 3a 0a 20 20 20 20 61 73 73 65 72 74 28 e.....//.the.struct:.....assert(
12560 56 65 63 33 2e 64 6f 74 28 76 31 2c 20 76 32 29 20 3d 3d 20 30 2e 30 29 3b 0a 7d 0a 0a 2f 2f 20 Vec3.dot(v1,.v2).==.0.0);.}..//.
12580 53 74 72 75 63 74 73 20 63 61 6e 20 68 61 76 65 20 67 6c 6f 62 61 6c 20 64 65 63 6c 61 72 61 74 Structs.can.have.global.declarat
125a0 69 6f 6e 73 2e 0a 2f 2f 20 53 74 72 75 63 74 73 20 63 61 6e 20 68 61 76 65 20 30 20 66 69 65 6c ions..//.Structs.can.have.0.fiel
125c0 64 73 2e 0a 63 6f 6e 73 74 20 45 6d 70 74 79 20 3d 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 70 ds..const.Empty.=.struct.{.....p
125e0 75 62 20 63 6f 6e 73 74 20 50 49 20 3d 20 33 2e 31 34 3b 0a 7d 3b 0a 74 65 73 74 20 26 71 75 6f ub.const.PI.=.3.14;.};.test.&quo
12600 74 3b 73 74 72 75 63 74 20 6e 61 6d 65 73 70 61 63 65 64 20 76 61 72 69 61 62 6c 65 26 71 75 6f t;struct.namespaced.variable&quo
12620 74 3b 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 45 6d 70 74 79 2e 50 49 20 3d 3d 20 33 2e 31 34 t;.{.....assert(Empty.PI.==.3.14
12640 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 40 73 69 7a 65 4f 66 28 45 6d 70 74 79 29 20 3d 3d 20 );.....assert(@sizeOf(Empty).==.
12660 30 29 3b 0a 0a 20 20 20 20 2f 2f 20 79 6f 75 20 63 61 6e 20 73 74 69 6c 6c 20 69 6e 73 74 61 6e 0);......//.you.can.still.instan
12680 74 69 61 74 65 20 61 6e 20 65 6d 70 74 79 20 73 74 72 75 63 74 0a 20 20 20 20 63 6f 6e 73 74 20 tiate.an.empty.struct.....const.
126a0 64 6f 65 73 5f 6e 6f 74 68 69 6e 67 20 3d 20 45 6d 70 74 79 20 7b 7d 3b 0a 7d 0a 0a 2f 2f 20 73 does_nothing.=.Empty.{};.}..//.s
126c0 74 72 75 63 74 20 66 69 65 6c 64 20 6f 72 64 65 72 20 69 73 20 64 65 74 65 72 6d 69 6e 65 64 20 truct.field.order.is.determined.
126e0 62 79 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 20 66 6f 72 20 6f 70 74 69 6d 61 6c 20 70 65 72 66 by.the.compiler.for.optimal.perf
12700 6f 72 6d 61 6e 63 65 2e 0a 2f 2f 20 68 6f 77 65 76 65 72 2c 20 79 6f 75 20 63 61 6e 20 73 74 69 ormance..//.however,.you.can.sti
12720 6c 6c 20 63 61 6c 63 75 6c 61 74 65 20 61 20 73 74 72 75 63 74 20 62 61 73 65 20 70 6f 69 6e 74 ll.calculate.a.struct.base.point
12740 65 72 20 67 69 76 65 6e 20 61 20 66 69 65 6c 64 20 70 6f 69 6e 74 65 72 3a 0a 66 6e 20 73 65 74 er.given.a.field.pointer:.fn.set
12760 59 42 61 73 65 64 4f 6e 58 28 78 3a 20 26 61 6d 70 3b 66 33 32 2c 20 79 3a 20 66 33 32 29 20 76 YBasedOnX(x:.&amp;f32,.y:.f32).v
12780 6f 69 64 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 70 6f 69 6e 74 20 3d 20 40 66 69 65 6c 64 50 61 oid.{.....const.point.=.@fieldPa
127a0 72 65 6e 74 50 74 72 28 50 6f 69 6e 74 2c 20 26 71 75 6f 74 3b 78 26 71 75 6f 74 3b 2c 20 78 29 rentPtr(Point,.&quot;x&quot;,.x)
127c0 3b 0a 20 20 20 20 70 6f 69 6e 74 2e 79 20 3d 20 79 3b 0a 7d 0a 74 65 73 74 20 26 71 75 6f 74 3b ;.....point.y.=.y;.}.test.&quot;
127e0 66 69 65 6c 64 20 70 61 72 65 6e 74 20 70 6f 69 6e 74 65 72 26 71 75 6f 74 3b 20 7b 0a 20 20 20 field.parent.pointer&quot;.{....
12800 20 76 61 72 20 70 6f 69 6e 74 20 3d 20 50 6f 69 6e 74 20 7b 0a 20 20 20 20 20 20 20 20 2e 78 20 .var.point.=.Point.{..........x.
12820 3d 20 30 2e 31 32 33 34 2c 0a 20 20 20 20 20 20 20 20 2e 79 20 3d 20 30 2e 35 36 37 38 2c 0a 20 =.0.1234,..........y.=.0.5678,..
12840 20 20 20 7d 3b 0a 20 20 20 20 73 65 74 59 42 61 73 65 64 4f 6e 58 28 26 61 6d 70 3b 70 6f 69 6e ...};.....setYBasedOnX(&amp;poin
12860 74 2e 78 2c 20 30 2e 39 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 70 6f 69 6e 74 2e 79 20 3d 3d t.x,.0.9);.....assert(point.y.==
12880 20 30 2e 39 29 3b 0a 7d 0a 0a 2f 2f 20 59 6f 75 20 63 61 6e 20 72 65 74 75 72 6e 20 61 20 73 74 .0.9);.}..//.You.can.return.a.st
128a0 72 75 63 74 20 66 72 6f 6d 20 61 20 66 75 6e 63 74 69 6f 6e 2e 20 54 68 69 73 20 69 73 20 68 6f ruct.from.a.function..This.is.ho
128c0 77 20 77 65 20 64 6f 20 67 65 6e 65 72 69 63 73 0a 2f 2f 20 69 6e 20 5a 69 67 3a 0a 66 6e 20 4c w.we.do.generics.//.in.Zig:.fn.L
128e0 69 6e 6b 65 64 4c 69 73 74 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 29 20 74 79 70 65 inkedList(comptime.T:.type).type
12900 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 20 20 20 20 70 .{.....return.struct.{.........p
12920 75 62 20 63 6f 6e 73 74 20 4e 6f 64 65 20 3d 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 20 20 20 ub.const.Node.=.struct.{........
12940 20 20 20 20 20 70 72 65 76 3a 20 3f 26 61 6d 70 3b 4e 6f 64 65 2c 0a 20 20 20 20 20 20 20 20 20 .....prev:.?&amp;Node,..........
12960 20 20 20 6e 65 78 74 3a 20 3f 26 61 6d 70 3b 4e 6f 64 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 ...next:.?&amp;Node,............
12980 20 64 61 74 61 3a 20 54 2c 0a 20 20 20 20 20 20 20 20 7d 3b 0a 0a 20 20 20 20 20 20 20 20 66 69 .data:.T,.........};..........fi
129a0 72 73 74 3a 20 3f 26 61 6d 70 3b 4e 6f 64 65 2c 0a 20 20 20 20 20 20 20 20 6c 61 73 74 3a 20 20 rst:.?&amp;Node,.........last:..
129c0 3f 26 61 6d 70 3b 4e 6f 64 65 2c 0a 20 20 20 20 20 20 20 20 6c 65 6e 3a 20 20 20 75 73 69 7a 65 ?&amp;Node,.........len:...usize
129e0 2c 0a 20 20 20 20 7d 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 6c 69 6e 6b 65 64 20 6c 69 ,.....};.}..test.&quot;linked.li
12a00 73 74 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 2f 2f 20 46 75 6e 63 74 69 6f 6e 73 20 63 61 6c 6c st&quot;.{.....//.Functions.call
12a20 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 61 72 65 20 6d 65 6d 6f 69 7a 65 64 2e ed.at.compile-time.are.memoized.
12a40 20 54 68 69 73 20 6d 65 61 6e 73 20 79 6f 75 20 63 61 6e 0a 20 20 20 20 2f 2f 20 64 6f 20 74 68 .This.means.you.can.....//.do.th
12a60 69 73 3a 0a 20 20 20 20 61 73 73 65 72 74 28 4c 69 6e 6b 65 64 4c 69 73 74 28 69 33 32 29 20 3d is:.....assert(LinkedList(i32).=
12a80 3d 20 4c 69 6e 6b 65 64 4c 69 73 74 28 69 33 32 29 29 3b 0a 0a 20 20 20 20 76 61 72 20 6c 69 73 =.LinkedList(i32));......var.lis
12aa0 74 20 3d 20 4c 69 6e 6b 65 64 4c 69 73 74 28 69 33 32 29 20 7b 0a 20 20 20 20 20 20 20 20 2e 66 t.=.LinkedList(i32).{..........f
12ac0 69 72 73 74 20 3d 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 20 20 2e 6c 61 73 74 20 3d 20 6e 75 6c irst.=.null,..........last.=.nul
12ae0 6c 2c 0a 20 20 20 20 20 20 20 20 2e 6c 65 6e 20 3d 20 30 2c 0a 20 20 20 20 7d 3b 0a 20 20 20 20 l,..........len.=.0,.....};.....
12b00 61 73 73 65 72 74 28 6c 69 73 74 2e 6c 65 6e 20 3d 3d 20 30 29 3b 0a 0a 20 20 20 20 2f 2f 20 53 assert(list.len.==.0);......//.S
12b20 69 6e 63 65 20 74 79 70 65 73 20 61 72 65 20 66 69 72 73 74 20 63 6c 61 73 73 20 76 61 6c 75 65 ince.types.are.first.class.value
12b40 73 20 79 6f 75 20 63 61 6e 20 69 6e 73 74 61 6e 74 69 61 74 65 20 74 68 65 20 74 79 70 65 0a 20 s.you.can.instantiate.the.type..
12b60 20 20 20 2f 2f 20 62 79 20 61 73 73 69 67 6e 69 6e 67 20 69 74 20 74 6f 20 61 20 76 61 72 69 61 ...//.by.assigning.it.to.a.varia
12b80 62 6c 65 3a 0a 20 20 20 20 63 6f 6e 73 74 20 4c 69 73 74 4f 66 49 6e 74 73 20 3d 20 4c 69 6e 6b ble:.....const.ListOfInts.=.Link
12ba0 65 64 4c 69 73 74 28 69 33 32 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 4c 69 73 74 4f 66 49 6e edList(i32);.....assert(ListOfIn
12bc0 74 73 20 3d 3d 20 4c 69 6e 6b 65 64 4c 69 73 74 28 69 33 32 29 29 3b 0a 0a 20 20 20 20 76 61 72 ts.==.LinkedList(i32));......var
12be0 20 6e 6f 64 65 20 3d 20 4c 69 73 74 4f 66 49 6e 74 73 2e 4e 6f 64 65 20 7b 0a 20 20 20 20 20 20 .node.=.ListOfInts.Node.{.......
12c00 20 20 2e 70 72 65 76 20 3d 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 20 20 2e 6e 65 78 74 20 3d 20 ...prev.=.null,..........next.=.
12c20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 20 20 2e 64 61 74 61 20 3d 20 31 32 33 34 2c 0a 20 20 20 20 null,..........data.=.1234,.....
12c40 7d 3b 0a 20 20 20 20 76 61 72 20 6c 69 73 74 32 20 3d 20 4c 69 6e 6b 65 64 4c 69 73 74 28 69 33 };.....var.list2.=.LinkedList(i3
12c60 32 29 20 7b 0a 20 20 20 20 20 20 20 20 2e 66 69 72 73 74 20 3d 20 26 61 6d 70 3b 6e 6f 64 65 2c 2).{..........first.=.&amp;node,
12c80 0a 20 20 20 20 20 20 20 20 2e 6c 61 73 74 20 3d 20 26 61 6d 70 3b 6e 6f 64 65 2c 0a 20 20 20 20 ..........last.=.&amp;node,.....
12ca0 20 20 20 20 2e 6c 65 6e 20 3d 20 31 2c 0a 20 20 20 20 7d 3b 0a 20 20 20 20 61 73 73 65 72 74 28 .....len.=.1,.....};.....assert(
12cc0 28 3f 3f 6c 69 73 74 32 2e 66 69 72 73 74 29 2e 64 61 74 61 20 3d 3d 20 31 32 33 34 29 3b 0a 7d (??list2.first).data.==.1234);.}
12ce0 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 </code></pre><pre><code.class="s
12d00 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 73 74 72 75 63 74 73 2e 7a 69 67 0a 54 65 73 hell">$.zig.test.structs.zig.Tes
12d20 74 20 31 2f 34 20 64 6f 74 20 70 72 6f 64 75 63 74 2e 2e 2e 4f 4b 0a 54 65 73 74 20 32 2f 34 20 t.1/4.dot.product...OK.Test.2/4.
12d40 73 74 72 75 63 74 20 6e 61 6d 65 73 70 61 63 65 64 20 76 61 72 69 61 62 6c 65 2e 2e 2e 4f 4b 0a struct.namespaced.variable...OK.
12d60 54 65 73 74 20 33 2f 34 20 66 69 65 6c 64 20 70 61 72 65 6e 74 20 70 6f 69 6e 74 65 72 2e 2e 2e Test.3/4.field.parent.pointer...
12d80 4f 4b 0a 54 65 73 74 20 34 2f 34 20 6c 69 6e 6b 65 64 20 6c 69 73 74 2e 2e 2e 4f 4b 0a 3c 2f 63 OK.Test.4/4.linked.list...OK.</c
12da0 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f ode></pre>........<p>See.also:</
12dc0 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 6f 6d 70 74 69 6d 65 22 3e 63 p><ul>.<li><a.href="#comptime">c
12de0 6f 6d 70 74 69 6d 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 66 omptime</a></li>.<li><a.href="#f
12e00 69 65 6c 64 50 61 72 65 6e 74 50 74 72 22 3e 40 66 69 65 6c 64 50 61 72 65 6e 74 50 74 72 3c 2f ieldParentPtr">@fieldParentPtr</
12e20 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 a></li>.</ul>...............<h1.
12e40 69 64 3d 22 65 6e 75 6d 22 3e 65 6e 75 6d 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 20 63 6c id="enum">enum</h1>........<p.cl
12e60 61 73 73 3d 22 66 69 6c 65 22 3e 65 6e 75 6d 73 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f ass="file">enums.zig</p><pre><co
12e80 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 de.class="zig">const.assert.=.@i
12ea0 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 mport(&quot;std&quot;).debug.ass
12ec0 65 72 74 3b 0a 63 6f 6e 73 74 20 6d 65 6d 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 ert;.const.mem.=.@import(&quot;s
12ee0 74 64 26 71 75 6f 74 3b 29 2e 6d 65 6d 3b 0a 0a 2f 2f 20 44 65 63 6c 61 72 65 20 61 6e 20 65 6e td&quot;).mem;..//.Declare.an.en
12f00 75 6d 2e 0a 63 6f 6e 73 74 20 54 79 70 65 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 4f 6b 2c 0a um..const.Type.=.enum.{.....Ok,.
12f20 20 20 20 20 4e 6f 74 4f 6b 2c 0a 7d 3b 0a 0a 2f 2f 20 44 65 63 6c 61 72 65 20 61 20 73 70 65 63 ....NotOk,.};..//.Declare.a.spec
12f40 69 66 69 63 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20 65 6e 75 6d 20 76 61 72 69 61 6e ific.instance.of.the.enum.varian
12f60 74 2e 0a 63 6f 6e 73 74 20 63 20 3d 20 54 79 70 65 2e 4f 6b 3b 0a 0a 2f 2f 20 49 66 20 79 6f 75 t..const.c.=.Type.Ok;..//.If.you
12f80 20 77 61 6e 74 20 61 63 63 65 73 73 20 74 6f 20 74 68 65 20 6f 72 64 69 6e 61 6c 20 76 61 6c 75 .want.access.to.the.ordinal.valu
12fa0 65 20 6f 66 20 61 6e 20 65 6e 75 6d 2c 20 79 6f 75 0a 2f 2f 20 63 61 6e 20 73 70 65 63 69 66 79 e.of.an.enum,.you.//.can.specify
12fc0 20 74 68 65 20 74 61 67 20 74 79 70 65 2e 0a 63 6f 6e 73 74 20 56 61 6c 75 65 20 3d 20 65 6e 75 .the.tag.type..const.Value.=.enu
12fe0 6d 28 75 32 29 20 7b 0a 20 20 20 20 5a 65 72 6f 2c 0a 20 20 20 20 4f 6e 65 2c 0a 20 20 20 20 54 m(u2).{.....Zero,.....One,.....T
13000 77 6f 2c 0a 7d 3b 0a 0a 2f 2f 20 4e 6f 77 20 79 6f 75 20 63 61 6e 20 63 61 73 74 20 62 65 74 77 wo,.};..//.Now.you.can.cast.betw
13020 65 65 6e 20 75 32 20 61 6e 64 20 56 61 6c 75 65 2e 0a 2f 2f 20 54 68 65 20 6f 72 64 69 6e 61 6c een.u2.and.Value..//.The.ordinal
13040 20 76 61 6c 75 65 20 73 74 61 72 74 73 20 66 72 6f 6d 20 30 2c 20 63 6f 75 6e 74 69 6e 67 20 75 .value.starts.from.0,.counting.u
13060 70 20 66 6f 72 20 65 61 63 68 20 6d 65 6d 62 65 72 2e 0a 74 65 73 74 20 26 71 75 6f 74 3b 65 6e p.for.each.member..test.&quot;en
13080 75 6d 20 6f 72 64 69 6e 61 6c 20 76 61 6c 75 65 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 61 73 73 um.ordinal.value&quot;.{.....ass
130a0 65 72 74 28 75 32 28 56 61 6c 75 65 2e 5a 65 72 6f 29 20 3d 3d 20 30 29 3b 0a 20 20 20 20 61 73 ert(u2(Value.Zero).==.0);.....as
130c0 73 65 72 74 28 75 32 28 56 61 6c 75 65 2e 4f 6e 65 29 20 3d 3d 20 31 29 3b 0a 20 20 20 20 61 73 sert(u2(Value.One).==.1);.....as
130e0 73 65 72 74 28 75 32 28 56 61 6c 75 65 2e 54 77 6f 29 20 3d 3d 20 32 29 3b 0a 7d 0a 0a 2f 2f 20 sert(u2(Value.Two).==.2);.}..//.
13100 59 6f 75 20 63 61 6e 20 6f 76 65 72 72 69 64 65 20 74 68 65 20 6f 72 64 69 6e 61 6c 20 76 61 6c You.can.override.the.ordinal.val
13120 75 65 20 66 6f 72 20 61 6e 20 65 6e 75 6d 2e 0a 63 6f 6e 73 74 20 56 61 6c 75 65 32 20 3d 20 65 ue.for.an.enum..const.Value2.=.e
13140 6e 75 6d 28 75 33 32 29 20 7b 0a 20 20 20 20 48 75 6e 64 72 65 64 20 3d 20 31 30 30 2c 0a 20 20 num(u32).{.....Hundred.=.100,...
13160 20 20 54 68 6f 75 73 61 6e 64 20 3d 20 31 30 30 30 2c 0a 20 20 20 20 4d 69 6c 6c 69 6f 6e 20 3d ..Thousand.=.1000,.....Million.=
13180 20 31 30 30 30 30 30 30 2c 0a 7d 3b 0a 74 65 73 74 20 26 71 75 6f 74 3b 73 65 74 20 65 6e 75 6d .1000000,.};.test.&quot;set.enum
131a0 20 6f 72 64 69 6e 61 6c 20 76 61 6c 75 65 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 61 73 73 65 72 .ordinal.value&quot;.{.....asser
131c0 74 28 75 33 32 28 56 61 6c 75 65 32 2e 48 75 6e 64 72 65 64 29 20 3d 3d 20 31 30 30 29 3b 0a 20 t(u32(Value2.Hundred).==.100);..
131e0 20 20 20 61 73 73 65 72 74 28 75 33 32 28 56 61 6c 75 65 32 2e 54 68 6f 75 73 61 6e 64 29 20 3d ...assert(u32(Value2.Thousand).=
13200 3d 20 31 30 30 30 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 75 33 32 28 56 61 6c 75 65 32 2e 4d =.1000);.....assert(u32(Value2.M
13220 69 6c 6c 69 6f 6e 29 20 3d 3d 20 31 30 30 30 30 30 30 29 3b 0a 7d 0a 0a 2f 2f 20 45 6e 75 6d 73 illion).==.1000000);.}..//.Enums
13240 20 63 61 6e 20 68 61 76 65 20 6d 65 74 68 6f 64 73 2c 20 74 68 65 20 73 61 6d 65 20 61 73 20 73 .can.have.methods,.the.same.as.s
13260 74 72 75 63 74 73 20 61 6e 64 20 75 6e 69 6f 6e 73 2e 0a 2f 2f 20 45 6e 75 6d 20 6d 65 74 68 6f tructs.and.unions..//.Enum.metho
13280 64 73 20 61 72 65 20 6e 6f 74 20 73 70 65 63 69 61 6c 2c 20 74 68 65 79 20 61 72 65 20 6f 6e 6c ds.are.not.special,.they.are.onl
132a0 79 20 6e 61 6d 65 73 70 61 63 65 64 0a 2f 2f 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 79 y.namespaced.//.functions.that.y
132c0 6f 75 20 63 61 6e 20 63 61 6c 6c 20 77 69 74 68 20 64 6f 74 20 73 79 6e 74 61 78 2e 0a 63 6f 6e ou.can.call.with.dot.syntax..con
132e0 73 74 20 53 75 69 74 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 43 6c 75 62 73 2c 0a 20 20 20 20 st.Suit.=.enum.{.....Clubs,.....
13300 53 70 61 64 65 73 2c 0a 20 20 20 20 44 69 61 6d 6f 6e 64 73 2c 0a 20 20 20 20 48 65 61 72 74 73 Spades,.....Diamonds,.....Hearts
13320 2c 0a 0a 20 20 20 20 70 75 62 20 66 6e 20 69 73 43 6c 75 62 73 28 73 65 6c 66 3a 20 53 75 69 74 ,......pub.fn.isClubs(self:.Suit
13340 29 20 62 6f 6f 6c 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 20 3d 3d 20 ).bool.{.........return.self.==.
13360 53 75 69 74 2e 43 6c 75 62 73 3b 0a 20 20 20 20 7d 0a 7d 3b 0a 74 65 73 74 20 26 71 75 6f 74 3b Suit.Clubs;.....}.};.test.&quot;
13380 65 6e 75 6d 20 6d 65 74 68 6f 64 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 70 20 enum.method&quot;.{.....const.p.
133a0 3d 20 53 75 69 74 2e 53 70 61 64 65 73 3b 0a 20 20 20 20 61 73 73 65 72 74 28 21 70 2e 69 73 43 =.Suit.Spades;.....assert(!p.isC
133c0 6c 75 62 73 28 29 29 3b 0a 7d 0a 0a 2f 2f 20 41 6e 20 65 6e 75 6d 20 76 61 72 69 61 6e 74 20 6f lubs());.}..//.An.enum.variant.o
133e0 66 20 64 69 66 66 65 72 65 6e 74 20 74 79 70 65 73 20 63 61 6e 20 62 65 20 73 77 69 74 63 68 65 f.different.types.can.be.switche
13400 64 20 75 70 6f 6e 2e 0a 63 6f 6e 73 74 20 46 6f 6f 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 53 d.upon..const.Foo.=.enum.{.....S
13420 74 72 69 6e 67 2c 0a 20 20 20 20 4e 75 6d 62 65 72 2c 0a 20 20 20 20 4e 6f 6e 65 2c 0a 7d 3b 0a tring,.....Number,.....None,.};.
13440 74 65 73 74 20 26 71 75 6f 74 3b 65 6e 75 6d 20 76 61 72 69 61 6e 74 20 73 77 69 74 63 68 26 71 test.&quot;enum.variant.switch&q
13460 75 6f 74 3b 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 70 20 3d 20 46 6f 6f 2e 4e 75 6d 62 65 72 3b uot;.{.....const.p.=.Foo.Number;
13480 0a 20 20 20 20 63 6f 6e 73 74 20 77 68 61 74 5f 69 73 5f 69 74 20 3d 20 73 77 69 74 63 68 20 28 .....const.what_is_it.=.switch.(
134a0 70 29 20 7b 0a 20 20 20 20 20 20 20 20 46 6f 6f 2e 53 74 72 69 6e 67 20 3d 26 67 74 3b 20 26 71 p).{.........Foo.String.=&gt;.&q
134c0 75 6f 74 3b 74 68 69 73 20 69 73 20 61 20 73 74 72 69 6e 67 26 71 75 6f 74 3b 2c 0a 20 20 20 20 uot;this.is.a.string&quot;,.....
134e0 20 20 20 20 46 6f 6f 2e 4e 75 6d 62 65 72 20 3d 26 67 74 3b 20 26 71 75 6f 74 3b 74 68 69 73 20 ....Foo.Number.=&gt;.&quot;this.
13500 69 73 20 61 20 6e 75 6d 62 65 72 26 71 75 6f 74 3b 2c 0a 20 20 20 20 20 20 20 20 46 6f 6f 2e 4e is.a.number&quot;,.........Foo.N
13520 6f 6e 65 20 3d 26 67 74 3b 20 26 71 75 6f 74 3b 74 68 69 73 20 69 73 20 61 20 6e 6f 6e 65 26 71 one.=&gt;.&quot;this.is.a.none&q
13540 75 6f 74 3b 2c 0a 20 20 20 20 7d 3b 0a 20 20 20 20 61 73 73 65 72 74 28 6d 65 6d 2e 65 71 6c 28 uot;,.....};.....assert(mem.eql(
13560 75 38 2c 20 77 68 61 74 5f 69 73 5f 69 74 2c 20 26 71 75 6f 74 3b 74 68 69 73 20 69 73 20 61 20 u8,.what_is_it,.&quot;this.is.a.
13580 6e 75 6d 62 65 72 26 71 75 6f 74 3b 29 29 3b 0a 7d 0a 0a 2f 2f 20 40 54 61 67 54 79 70 65 20 63 number&quot;));.}..//.@TagType.c
135a0 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 61 63 63 65 73 73 20 74 68 65 20 69 6e 74 65 67 65 72 an.be.used.to.access.the.integer
135c0 20 74 61 67 20 74 79 70 65 20 6f 66 20 61 6e 20 65 6e 75 6d 2e 0a 63 6f 6e 73 74 20 53 6d 61 6c .tag.type.of.an.enum..const.Smal
135e0 6c 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 4f 6e 65 2c 0a 20 20 20 20 54 77 6f 2c 0a 20 20 20 l.=.enum.{.....One,.....Two,....
13600 20 54 68 72 65 65 2c 0a 20 20 20 20 46 6f 75 72 2c 0a 7d 3b 0a 74 65 73 74 20 26 71 75 6f 74 3b .Three,.....Four,.};.test.&quot;
13620 40 54 61 67 54 79 70 65 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 40 54 61 67 @TagType&quot;.{.....assert(@Tag
13640 54 79 70 65 28 53 6d 61 6c 6c 29 20 3d 3d 20 75 32 29 3b 0a 7d 0a 0a 2f 2f 20 40 6d 65 6d 62 65 Type(Small).==.u2);.}..//.@membe
13660 72 43 6f 75 6e 74 20 74 65 6c 6c 73 20 68 6f 77 20 6d 61 6e 79 20 66 69 65 6c 64 73 20 61 6e 20 rCount.tells.how.many.fields.an.
13680 65 6e 75 6d 20 68 61 73 3a 0a 74 65 73 74 20 26 71 75 6f 74 3b 40 6d 65 6d 62 65 72 43 6f 75 6e enum.has:.test.&quot;@memberCoun
136a0 74 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 40 6d 65 6d 62 65 72 43 6f 75 6e t&quot;.{.....assert(@memberCoun
136c0 74 28 53 6d 61 6c 6c 29 20 3d 3d 20 34 29 3b 0a 7d 0a 0a 2f 2f 20 40 6d 65 6d 62 65 72 4e 61 6d t(Small).==.4);.}..//.@memberNam
136e0 65 20 74 65 6c 6c 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 66 69 65 6c 64 20 69 6e 20 61 e.tells.the.name.of.a.field.in.a
13700 6e 20 65 6e 75 6d 3a 0a 74 65 73 74 20 26 71 75 6f 74 3b 40 6d 65 6d 62 65 72 4e 61 6d 65 26 71 n.enum:.test.&quot;@memberName&q
13720 75 6f 74 3b 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 6d 65 6d 2e 65 71 6c 28 75 38 2c 20 40 6d uot;.{.....assert(mem.eql(u8,.@m
13740 65 6d 62 65 72 4e 61 6d 65 28 53 6d 61 6c 6c 2c 20 31 29 2c 20 26 71 75 6f 74 3b 54 77 6f 26 71 emberName(Small,.1),.&quot;Two&q
13760 75 6f 74 3b 29 29 3b 0a 7d 0a 0a 2f 2f 20 40 74 61 67 4e 61 6d 65 20 67 69 76 65 73 20 61 20 5b uot;));.}..//.@tagName.gives.a.[
13780 5d 63 6f 6e 73 74 20 75 38 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 6e 20 65 ]const.u8.representation.of.an.e
137a0 6e 75 6d 20 76 61 6c 75 65 3a 0a 74 65 73 74 20 26 71 75 6f 74 3b 40 74 61 67 4e 61 6d 65 26 71 num.value:.test.&quot;@tagName&q
137c0 75 6f 74 3b 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 6d 65 6d 2e 65 71 6c 28 75 38 2c 20 40 74 uot;.{.....assert(mem.eql(u8,.@t
137e0 61 67 4e 61 6d 65 28 53 6d 61 6c 6c 2e 54 68 72 65 65 29 2c 20 26 71 75 6f 74 3b 54 68 72 65 65 agName(Small.Three),.&quot;Three
13800 26 71 75 6f 74 3b 29 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f &quot;));.}</code></pre><pre><co
13820 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 65 6e 75 6d de.class="shell">$.zig.test.enum
13840 73 2e 7a 69 67 0a 54 65 73 74 20 31 2f 38 20 65 6e 75 6d 20 6f 72 64 69 6e 61 6c 20 76 61 6c 75 s.zig.Test.1/8.enum.ordinal.valu
13860 65 2e 2e 2e 4f 4b 0a 54 65 73 74 20 32 2f 38 20 73 65 74 20 65 6e 75 6d 20 6f 72 64 69 6e 61 6c e...OK.Test.2/8.set.enum.ordinal
13880 20 76 61 6c 75 65 2e 2e 2e 4f 4b 0a 54 65 73 74 20 33 2f 38 20 65 6e 75 6d 20 6d 65 74 68 6f 64 .value...OK.Test.3/8.enum.method
138a0 2e 2e 2e 4f 4b 0a 54 65 73 74 20 34 2f 38 20 65 6e 75 6d 20 76 61 72 69 61 6e 74 20 73 77 69 74 ...OK.Test.4/8.enum.variant.swit
138c0 63 68 2e 2e 2e 4f 4b 0a 54 65 73 74 20 35 2f 38 20 40 54 61 67 54 79 70 65 2e 2e 2e 4f 4b 0a 54 ch...OK.Test.5/8.@TagType...OK.T
138e0 65 73 74 20 36 2f 38 20 40 6d 65 6d 62 65 72 43 6f 75 6e 74 2e 2e 2e 4f 4b 0a 54 65 73 74 20 37 est.6/8.@memberCount...OK.Test.7
13900 2f 38 20 40 6d 65 6d 62 65 72 4e 61 6d 65 2e 2e 2e 4f 4b 0a 54 65 73 74 20 38 2f 38 20 40 74 61 /8.@memberName...OK.Test.8/8.@ta
13920 67 4e 61 6d 65 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 gName...OK.</code></pre>........
13940 3c 68 32 20 69 64 3d 22 65 78 74 65 72 6e 2d 65 6e 75 6d 22 3e 65 78 74 65 72 6e 20 65 6e 75 6d <h2.id="extern-enum">extern.enum
13960 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 42 79 20 64 65 66 61 75 6c </h2>........<p>.......By.defaul
13980 74 2c 20 65 6e 75 6d 73 20 61 72 65 20 6e 6f 74 20 67 75 61 72 61 6e 74 65 65 64 20 74 6f 20 62 t,.enums.are.not.guaranteed.to.b
139a0 65 20 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68 20 74 68 65 20 43 20 41 42 49 3a 0a 20 20 20 e.compatible.with.the.C.ABI:....
139c0 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 ...</p>.......<p.class="file">te
139e0 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 st.zig</p><pre><code.class="zig"
13a00 3e 63 6f 6e 73 74 20 46 6f 6f 20 3d 20 65 6e 75 6d 20 7b 20 41 2c 20 42 2c 20 43 20 7d 3b 0a 65 >const.Foo.=.enum.{.A,.B,.C.};.e
13a20 78 70 6f 72 74 20 66 6e 20 65 6e 74 72 79 28 66 6f 6f 3a 20 46 6f 6f 29 20 76 6f 69 64 20 7b 20 xport.fn.entry(foo:.Foo).void.{.
13a40 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 }</code></pre><pre><code.class="
13a60 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 6f 62 6a 20 74 65 73 74 2e 7a 69 67 0a shell">$.zig.build-obj.test.zig.
13a80 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 <span.class="t0_1">/home/andy/de
13aa0 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 32 3a 32 32 3a 20 v/zig/docgen_tmp/test.zig:2:22:.
13ac0 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 6f 72 </span><span.class="t31_1">error
13ae0 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 70 61 72 61 :</span><span.class="t0_1">.para
13b00 6d 65 74 65 72 20 6f 66 20 74 79 70 65 20 27 46 6f 6f 27 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 meter.of.type.'Foo'.not.allowed.
13b20 69 6e 20 66 75 6e 63 74 69 6f 6e 20 77 69 74 68 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 in.function.with.calling.convent
13b40 69 6f 6e 20 27 63 63 63 27 3c 2f 73 70 61 6e 3e 0a 65 78 70 6f 72 74 20 66 6e 20 65 6e 74 72 79 ion.'ccc'</span>.export.fn.entry
13b60 28 66 6f 6f 3a 20 46 6f 6f 29 20 76 6f 69 64 20 7b 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 (foo:.Foo).void.{...............
13b80 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 ........<span.class="t32_1">^</s
13ba0 70 61 6e 3e 0a 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 pan>..</code></pre>.</code></pre
13bc0 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 46 6f 72 20 61 20 43 2d 41 42 49 2d 63 >........<p>.......For.a.C-ABI-c
13be0 6f 6d 70 61 74 69 62 6c 65 20 65 6e 75 6d 2c 20 75 73 65 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d ompatible.enum,.use.<code.class=
13c00 22 7a 69 67 22 3e 65 78 74 65 72 6e 20 65 6e 75 6d 3c 2f 63 6f 64 65 3e 3a 0a 20 20 20 20 20 20 "zig">extern.enum</code>:.......
13c20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e </p>.......<p.class="file">test.
13c40 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f zig</p><pre><code.class="zig">co
13c60 6e 73 74 20 46 6f 6f 20 3d 20 65 78 74 65 72 6e 20 65 6e 75 6d 20 7b 20 41 2c 20 42 2c 20 43 20 nst.Foo.=.extern.enum.{.A,.B,.C.
13c80 7d 3b 0a 65 78 70 6f 72 74 20 66 6e 20 65 6e 74 72 79 28 66 6f 6f 3a 20 46 6f 6f 29 20 76 6f 69 };.export.fn.entry(foo:.Foo).voi
13ca0 64 20 7b 20 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 d.{.}</code></pre><pre><code.cla
13cc0 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 6f 62 6a 20 74 65 73 74 2e ss="shell">$.zig.build-obj.test.
13ce0 7a 69 67 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c zig</code></pre>...............<
13d00 70 3e 54 4f 44 4f 20 70 61 63 6b 65 64 20 65 6e 75 6d 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e p>TODO.packed.enum</p>.......<p>
13d20 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 See.also:</p><ul>.<li><a.href="#
13d40 6d 65 6d 62 65 72 4e 61 6d 65 22 3e 40 6d 65 6d 62 65 72 4e 61 6d 65 3c 2f 61 3e 3c 2f 6c 69 3e memberName">@memberName</a></li>
13d60 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6d 65 6d 62 65 72 43 6f 75 6e 74 22 3e 40 6d 65 6d .<li><a.href="#memberCount">@mem
13d80 62 65 72 43 6f 75 6e 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 berCount</a></li>.<li><a.href="#
13da0 74 61 67 4e 61 6d 65 22 3e 40 74 61 67 4e 61 6d 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e tagName">@tagName</a></li>.</ul>
13dc0 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 75 6e 69 6f 6e 22 3e 75 6e ...............<h1.id="union">un
13de0 69 6f 6e 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e ion</h1>........<p.class="file">
13e00 75 6e 69 6f 6e 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a union.zig</p><pre><code.class="z
13e20 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 ig">const.assert.=.@import(&quot
13e40 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 63 6f 6e 73 74 20 ;std&quot;).debug.assert;.const.
13e60 6d 65 6d 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 6d mem.=.@import(&quot;std&quot;).m
13e80 65 6d 3b 0a 0a 2f 2f 20 41 20 75 6e 69 6f 6e 20 68 61 73 20 6f 6e 6c 79 20 31 20 61 63 74 69 76 em;..//.A.union.has.only.1.activ
13ea0 65 20 66 69 65 6c 64 20 61 74 20 61 20 74 69 6d 65 2e 0a 63 6f 6e 73 74 20 50 61 79 6c 6f 61 64 e.field.at.a.time..const.Payload
13ec0 20 3d 20 75 6e 69 6f 6e 20 7b 0a 20 20 20 20 49 6e 74 3a 20 69 36 34 2c 0a 20 20 20 20 46 6c 6f .=.union.{.....Int:.i64,.....Flo
13ee0 61 74 3a 20 66 36 34 2c 0a 20 20 20 20 42 6f 6f 6c 3a 20 62 6f 6f 6c 2c 0a 7d 3b 0a 74 65 73 74 at:.f64,.....Bool:.bool,.};.test
13f00 20 26 71 75 6f 74 3b 73 69 6d 70 6c 65 20 75 6e 69 6f 6e 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 .&quot;simple.union&quot;.{.....
13f20 76 61 72 20 70 61 79 6c 6f 61 64 20 3d 20 50 61 79 6c 6f 61 64 20 7b 2e 49 6e 74 20 3d 20 31 32 var.payload.=.Payload.{.Int.=.12
13f40 33 34 7d 3b 0a 20 20 20 20 2f 2f 20 70 61 79 6c 6f 61 64 2e 46 6c 6f 61 74 20 3d 20 31 32 2e 33 34};.....//.payload.Float.=.12.3
13f60 34 3b 20 2f 2f 20 45 52 52 4f 52 21 20 66 69 65 6c 64 20 6e 6f 74 20 61 63 74 69 76 65 0a 20 20 4;.//.ERROR!.field.not.active...
13f80 20 20 61 73 73 65 72 74 28 70 61 79 6c 6f 61 64 2e 49 6e 74 20 3d 3d 20 31 32 33 34 29 3b 0a 20 ..assert(payload.Int.==.1234);..
13fa0 20 20 20 2f 2f 20 59 6f 75 20 63 61 6e 20 61 63 74 69 76 61 74 65 20 61 6e 6f 74 68 65 72 20 66 ...//.You.can.activate.another.f
13fc0 69 65 6c 64 20 62 79 20 61 73 73 69 67 6e 69 6e 67 20 74 68 65 20 65 6e 74 69 72 65 20 75 6e 69 ield.by.assigning.the.entire.uni
13fe0 6f 6e 2e 0a 20 20 20 20 70 61 79 6c 6f 61 64 20 3d 20 50 61 79 6c 6f 61 64 20 7b 2e 46 6c 6f 61 on......payload.=.Payload.{.Floa
14000 74 20 3d 20 31 32 2e 33 34 7d 3b 0a 20 20 20 20 61 73 73 65 72 74 28 70 61 79 6c 6f 61 64 2e 46 t.=.12.34};.....assert(payload.F
14020 6c 6f 61 74 20 3d 3d 20 31 32 2e 33 34 29 3b 0a 7d 0a 0a 2f 2f 20 55 6e 69 6f 6e 73 20 63 61 6e loat.==.12.34);.}..//.Unions.can
14040 20 62 65 20 67 69 76 65 6e 20 61 6e 20 65 6e 75 6d 20 74 61 67 20 74 79 70 65 3a 0a 63 6f 6e 73 .be.given.an.enum.tag.type:.cons
14060 74 20 43 6f 6d 70 6c 65 78 54 79 70 65 54 61 67 20 3d 20 65 6e 75 6d 20 7b 20 4f 6b 2c 20 4e 6f t.ComplexTypeTag.=.enum.{.Ok,.No
14080 74 4f 6b 20 7d 3b 20 0a 63 6f 6e 73 74 20 43 6f 6d 70 6c 65 78 54 79 70 65 20 3d 20 75 6e 69 6f tOk.};..const.ComplexType.=.unio
140a0 6e 28 43 6f 6d 70 6c 65 78 54 79 70 65 54 61 67 29 20 7b 0a 20 20 20 20 4f 6b 3a 20 75 38 2c 0a n(ComplexTypeTag).{.....Ok:.u8,.
140c0 20 20 20 20 4e 6f 74 4f 6b 3a 20 76 6f 69 64 2c 0a 7d 3b 0a 0a 2f 2f 20 44 65 63 6c 61 72 65 20 ....NotOk:.void,.};..//.Declare.
140e0 61 20 73 70 65 63 69 66 69 63 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20 75 6e 69 6f 6e a.specific.instance.of.the.union
14100 20 76 61 72 69 61 6e 74 2e 0a 74 65 73 74 20 26 71 75 6f 74 3b 64 65 63 6c 61 72 65 20 75 6e 69 .variant..test.&quot;declare.uni
14120 6f 6e 20 76 61 6c 75 65 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 63 20 3d 20 43 on.value&quot;.{.....const.c.=.C
14140 6f 6d 70 6c 65 78 54 79 70 65 20 7b 20 2e 4f 6b 20 3d 20 30 20 7d 3b 0a 20 20 20 20 61 73 73 65 omplexType.{..Ok.=.0.};.....asse
14160 72 74 28 43 6f 6d 70 6c 65 78 54 79 70 65 54 61 67 28 63 29 20 3d 3d 20 43 6f 6d 70 6c 65 78 54 rt(ComplexTypeTag(c).==.ComplexT
14180 79 70 65 54 61 67 2e 4f 6b 29 3b 0a 7d 0a 0a 2f 2f 20 40 54 61 67 54 79 70 65 20 63 61 6e 20 62 ypeTag.Ok);.}..//.@TagType.can.b
141a0 65 20 75 73 65 64 20 74 6f 20 61 63 63 65 73 73 20 74 68 65 20 65 6e 75 6d 20 74 61 67 20 74 79 e.used.to.access.the.enum.tag.ty
141c0 70 65 20 6f 66 20 61 20 75 6e 69 6f 6e 2e 0a 74 65 73 74 20 26 71 75 6f 74 3b 40 54 61 67 54 79 pe.of.a.union..test.&quot;@TagTy
141e0 70 65 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 40 54 61 67 54 79 70 65 28 43 pe&quot;.{.....assert(@TagType(C
14200 6f 6d 70 6c 65 78 54 79 70 65 29 20 3d 3d 20 43 6f 6d 70 6c 65 78 54 79 70 65 54 61 67 29 3b 0a omplexType).==.ComplexTypeTag);.
14220 7d 0a 0a 2f 2f 20 55 6e 69 6f 6e 73 20 63 61 6e 20 62 65 20 6d 61 64 65 20 74 6f 20 69 6e 66 65 }..//.Unions.can.be.made.to.infe
14240 72 20 74 68 65 20 65 6e 75 6d 20 74 61 67 20 74 79 70 65 2e 0a 63 6f 6e 73 74 20 46 6f 6f 20 3d r.the.enum.tag.type..const.Foo.=
14260 20 75 6e 69 6f 6e 28 65 6e 75 6d 29 20 7b 0a 20 20 20 20 53 74 72 69 6e 67 3a 20 5b 5d 63 6f 6e .union(enum).{.....String:.[]con
14280 73 74 20 75 38 2c 0a 20 20 20 20 4e 75 6d 62 65 72 3a 20 75 36 34 2c 0a 0a 20 20 20 20 2f 2f 20 st.u8,.....Number:.u64,......//.
142a0 76 6f 69 64 20 63 61 6e 20 62 65 20 6f 6d 69 74 74 65 64 20 77 68 65 6e 20 69 6e 66 65 72 72 69 void.can.be.omitted.when.inferri
142c0 6e 67 20 65 6e 75 6d 20 74 61 67 20 74 79 70 65 2e 0a 20 20 20 20 4e 6f 6e 65 2c 0a 7d 3b 0a 74 ng.enum.tag.type......None,.};.t
142e0 65 73 74 20 26 71 75 6f 74 3b 75 6e 69 6f 6e 20 76 61 72 69 61 6e 74 20 73 77 69 74 63 68 26 71 est.&quot;union.variant.switch&q
14300 75 6f 74 3b 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 70 20 3d 20 46 6f 6f 20 7b 20 2e 4e 75 6d 62 uot;.{.....const.p.=.Foo.{..Numb
14320 65 72 20 3d 20 35 34 20 7d 3b 0a 20 20 20 20 63 6f 6e 73 74 20 77 68 61 74 5f 69 73 5f 69 74 20 er.=.54.};.....const.what_is_it.
14340 3d 20 73 77 69 74 63 68 20 28 70 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 43 61 70 74 75 72 =.switch.(p).{.........//.Captur
14360 65 20 62 79 20 72 65 66 65 72 65 6e 63 65 0a 20 20 20 20 20 20 20 20 46 6f 6f 2e 53 74 72 69 6e e.by.reference.........Foo.Strin
14380 67 20 3d 26 67 74 3b 20 7c 2a 78 7c 20 62 6c 6b 3a 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 g.=&gt;.|*x|.blk:.{.............
143a0 62 72 65 61 6b 20 3a 62 6c 6b 20 26 71 75 6f 74 3b 74 68 69 73 20 69 73 20 61 20 73 74 72 69 6e break.:blk.&quot;this.is.a.strin
143c0 67 26 71 75 6f 74 3b 3b 0a 20 20 20 20 20 20 20 20 7d 2c 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 g&quot;;.........},..........//.
143e0 43 61 70 74 75 72 65 20 62 79 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 46 6f 6f 2e 4e 75 6d Capture.by.value.........Foo.Num
14400 62 65 72 20 3d 26 67 74 3b 20 7c 78 7c 20 62 6c 6b 3a 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 ber.=&gt;.|x|.blk:.{............
14420 20 61 73 73 65 72 74 28 78 20 3d 3d 20 35 34 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 .assert(x.==.54);.............br
14440 65 61 6b 20 3a 62 6c 6b 20 26 71 75 6f 74 3b 74 68 69 73 20 69 73 20 61 20 6e 75 6d 62 65 72 26 eak.:blk.&quot;this.is.a.number&
14460 71 75 6f 74 3b 3b 0a 20 20 20 20 20 20 20 20 7d 2c 0a 0a 20 20 20 20 20 20 20 20 46 6f 6f 2e 4e quot;;.........},..........Foo.N
14480 6f 6e 65 20 3d 26 67 74 3b 20 62 6c 6b 3a 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 one.=&gt;.blk:.{.............bre
144a0 61 6b 20 3a 62 6c 6b 20 26 71 75 6f 74 3b 74 68 69 73 20 69 73 20 61 20 6e 6f 6e 65 26 71 75 6f ak.:blk.&quot;this.is.a.none&quo
144c0 74 3b 3b 0a 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 7d 3b 0a 20 20 20 20 61 73 73 65 72 74 t;;.........},.....};.....assert
144e0 28 6d 65 6d 2e 65 71 6c 28 75 38 2c 20 77 68 61 74 5f 69 73 5f 69 74 2c 20 26 71 75 6f 74 3b 74 (mem.eql(u8,.what_is_it,.&quot;t
14500 68 69 73 20 69 73 20 61 20 6e 75 6d 62 65 72 26 71 75 6f 74 3b 29 29 3b 0a 7d 0a 0a 2f 2f 20 54 his.is.a.number&quot;));.}..//.T
14520 4f 44 4f 20 75 6e 69 6f 6e 20 6d 65 74 68 6f 64 73 0a 0a 0a 63 6f 6e 73 74 20 53 6d 61 6c 6c 20 ODO.union.methods...const.Small.
14540 3d 20 75 6e 69 6f 6e 20 7b 0a 20 20 20 20 41 3a 20 69 33 32 2c 0a 20 20 20 20 42 3a 20 62 6f 6f =.union.{.....A:.i32,.....B:.boo
14560 6c 2c 0a 20 20 20 20 43 3a 20 75 38 2c 0a 7d 3b 0a 0a 2f 2f 20 40 6d 65 6d 62 65 72 43 6f 75 6e l,.....C:.u8,.};..//.@memberCoun
14580 74 20 74 65 6c 6c 73 20 68 6f 77 20 6d 61 6e 79 20 66 69 65 6c 64 73 20 61 20 75 6e 69 6f 6e 20 t.tells.how.many.fields.a.union.
145a0 68 61 73 3a 0a 74 65 73 74 20 26 71 75 6f 74 3b 40 6d 65 6d 62 65 72 43 6f 75 6e 74 26 71 75 6f has:.test.&quot;@memberCount&quo
145c0 74 3b 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 40 6d 65 6d 62 65 72 43 6f 75 6e 74 28 53 6d 61 t;.{.....assert(@memberCount(Sma
145e0 6c 6c 29 20 3d 3d 20 33 29 3b 0a 7d 0a 0a 2f 2f 20 40 6d 65 6d 62 65 72 4e 61 6d 65 20 74 65 6c ll).==.3);.}..//.@memberName.tel
14600 6c 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 66 69 65 6c 64 20 69 6e 20 61 6e 20 65 6e 75 ls.the.name.of.a.field.in.an.enu
14620 6d 3a 0a 74 65 73 74 20 26 71 75 6f 74 3b 40 6d 65 6d 62 65 72 4e 61 6d 65 26 71 75 6f 74 3b 20 m:.test.&quot;@memberName&quot;.
14640 7b 0a 20 20 20 20 61 73 73 65 72 74 28 6d 65 6d 2e 65 71 6c 28 75 38 2c 20 40 6d 65 6d 62 65 72 {.....assert(mem.eql(u8,.@member
14660 4e 61 6d 65 28 53 6d 61 6c 6c 2c 20 31 29 2c 20 26 71 75 6f 74 3b 42 26 71 75 6f 74 3b 29 29 3b Name(Small,.1),.&quot;B&quot;));
14680 0a 7d 0a 0a 2f 2f 20 40 74 61 67 4e 61 6d 65 20 67 69 76 65 73 20 61 20 5b 5d 63 6f 6e 73 74 20 .}..//.@tagName.gives.a.[]const.
146a0 75 38 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 6e 20 65 6e 75 6d 20 76 61 6c u8.representation.of.an.enum.val
146c0 75 65 2c 0a 2f 2f 20 62 75 74 20 6f 6e 6c 79 20 69 66 20 74 68 65 20 75 6e 69 6f 6e 20 68 61 73 ue,.//.but.only.if.the.union.has
146e0 20 61 6e 20 65 6e 75 6d 20 74 61 67 20 74 79 70 65 2e 0a 63 6f 6e 73 74 20 53 6d 61 6c 6c 32 20 .an.enum.tag.type..const.Small2.
14700 3d 20 75 6e 69 6f 6e 28 65 6e 75 6d 29 20 7b 0a 20 20 20 20 41 3a 20 69 33 32 2c 0a 20 20 20 20 =.union(enum).{.....A:.i32,.....
14720 42 3a 20 62 6f 6f 6c 2c 0a 20 20 20 20 43 3a 20 75 38 2c 0a 7d 3b 0a 74 65 73 74 20 26 71 75 6f B:.bool,.....C:.u8,.};.test.&quo
14740 74 3b 40 74 61 67 4e 61 6d 65 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 6d 65 t;@tagName&quot;.{.....assert(me
14760 6d 2e 65 71 6c 28 75 38 2c 20 40 74 61 67 4e 61 6d 65 28 53 6d 61 6c 6c 32 2e 43 29 2c 20 26 71 m.eql(u8,.@tagName(Small2.C),.&q
14780 75 6f 74 3b 43 26 71 75 6f 74 3b 29 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 uot;C&quot;));.}</code></pre><pr
147a0 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 e><code.class="shell">$.zig.test
147c0 20 75 6e 69 6f 6e 2e 7a 69 67 0a 54 65 73 74 20 31 2f 37 20 73 69 6d 70 6c 65 20 75 6e 69 6f 6e .union.zig.Test.1/7.simple.union
147e0 2e 2e 2e 4f 4b 0a 54 65 73 74 20 32 2f 37 20 64 65 63 6c 61 72 65 20 75 6e 69 6f 6e 20 76 61 6c ...OK.Test.2/7.declare.union.val
14800 75 65 2e 2e 2e 4f 4b 0a 54 65 73 74 20 33 2f 37 20 40 54 61 67 54 79 70 65 2e 2e 2e 4f 4b 0a 54 ue...OK.Test.3/7.@TagType...OK.T
14820 65 73 74 20 34 2f 37 20 75 6e 69 6f 6e 20 76 61 72 69 61 6e 74 20 73 77 69 74 63 68 2e 2e 2e 4f est.4/7.union.variant.switch...O
14840 4b 0a 54 65 73 74 20 35 2f 37 20 40 6d 65 6d 62 65 72 43 6f 75 6e 74 2e 2e 2e 4f 4b 0a 54 65 73 K.Test.5/7.@memberCount...OK.Tes
14860 74 20 36 2f 37 20 40 6d 65 6d 62 65 72 4e 61 6d 65 2e 2e 2e 4f 4b 0a 54 65 73 74 20 37 2f 37 20 t.6/7.@memberName...OK.Test.7/7.
14880 40 74 61 67 4e 61 6d 65 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 @tagName...OK.</code></pre>.....
148a0 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 55 6e 69 6f 6e 73 20 77 69 74 68 20 61 6e 20 65 6e 75 6d ...<p>.......Unions.with.an.enum
148c0 20 74 61 67 20 61 72 65 20 67 65 6e 65 72 61 74 65 64 20 61 73 20 61 20 73 74 72 75 63 74 20 77 .tag.are.generated.as.a.struct.w
148e0 69 74 68 20 61 20 74 61 67 20 66 69 65 6c 64 20 61 6e 64 20 75 6e 69 6f 6e 20 66 69 65 6c 64 2e ith.a.tag.field.and.union.field.
14900 20 5a 69 67 0a 20 20 20 20 20 20 73 6f 72 74 73 20 74 68 65 20 6f 72 64 65 72 20 6f 66 20 74 68 .Zig.......sorts.the.order.of.th
14920 65 20 74 61 67 20 61 6e 64 20 75 6e 69 6f 6e 20 66 69 65 6c 64 20 62 79 20 74 68 65 20 6c 61 72 e.tag.and.union.field.by.the.lar
14940 67 65 73 74 20 61 6c 69 67 6e 6d 65 6e 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 gest.alignment........</p>......
14960 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 73 77 69 74 63 68 22 3e 73 77 69 74 63 68 3c 2f ........<h1.id="switch">switch</
14980 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 73 77 69 74 63 h1>........<p.class="file">switc
149a0 68 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e h.zig</p><pre><code.class="zig">
149c0 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 const.assert.=.@import(&quot;std
149e0 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 63 6f 6e 73 74 20 62 75 69 6c &quot;).debug.assert;.const.buil
14a00 74 69 6e 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 62 75 69 6c 74 69 6e 26 71 75 6f 74 tin.=.@import(&quot;builtin&quot
14a20 3b 29 3b 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 73 77 69 74 63 68 20 73 69 6d 70 6c 65 26 71 75 ;);..test.&quot;switch.simple&qu
14a40 6f 74 3b 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 61 3a 20 75 36 34 20 3d 20 31 30 3b 0a 20 20 20 ot;.{.....const.a:.u64.=.10;....
14a60 20 63 6f 6e 73 74 20 7a 7a 3a 20 75 36 34 20 3d 20 31 30 33 3b 0a 0a 20 20 20 20 2f 2f 20 41 6c .const.zz:.u64.=.103;......//.Al
14a80 6c 20 62 72 61 6e 63 68 65 73 20 6f 66 20 61 20 73 77 69 74 63 68 20 65 78 70 72 65 73 73 69 6f l.branches.of.a.switch.expressio
14aa0 6e 20 6d 75 73 74 20 62 65 20 61 62 6c 65 20 74 6f 20 62 65 20 63 6f 65 72 63 65 64 20 74 6f 20 n.must.be.able.to.be.coerced.to.
14ac0 61 0a 20 20 20 20 2f 2f 20 63 6f 6d 6d 6f 6e 20 74 79 70 65 2e 0a 20 20 20 20 2f 2f 0a 20 20 20 a.....//.common.type......//....
14ae0 20 2f 2f 20 42 72 61 6e 63 68 65 73 20 63 61 6e 6e 6f 74 20 66 61 6c 6c 74 68 72 6f 75 67 68 2e .//.Branches.cannot.fallthrough.
14b00 20 49 66 20 66 61 6c 6c 74 68 72 6f 75 67 68 20 62 65 68 61 76 69 6f 72 20 69 73 20 64 65 73 69 .If.fallthrough.behavior.is.desi
14b20 72 65 64 2c 20 63 6f 6d 62 69 6e 65 0a 20 20 20 20 2f 2f 20 74 68 65 20 63 61 73 65 73 20 61 6e red,.combine.....//.the.cases.an
14b40 64 20 75 73 65 20 61 6e 20 69 66 2e 0a 20 20 20 20 63 6f 6e 73 74 20 62 20 3d 20 73 77 69 74 63 d.use.an.if......const.b.=.switc
14b60 68 20 28 61 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 4d 75 6c 74 69 70 6c 65 20 63 61 73 65 h.(a).{.........//.Multiple.case
14b80 73 20 63 61 6e 20 62 65 20 63 6f 6d 62 69 6e 65 64 20 76 69 61 20 61 20 27 2c 27 0a 20 20 20 20 s.can.be.combined.via.a.','.....
14ba0 20 20 20 20 31 2c 20 32 2c 20 33 20 3d 26 67 74 3b 20 30 2c 0a 0a 20 20 20 20 20 20 20 20 2f 2f ....1,.2,.3.=&gt;.0,..........//
14bc0 20 52 61 6e 67 65 73 20 63 61 6e 20 62 65 20 73 70 65 63 69 66 69 65 64 20 75 73 69 6e 67 20 74 .Ranges.can.be.specified.using.t
14be0 68 65 20 2e 2e 2e 20 73 79 6e 74 61 78 2e 20 54 68 65 73 65 20 61 72 65 20 69 6e 63 6c 75 73 69 he.....syntax..These.are.inclusi
14c00 76 65 0a 20 20 20 20 20 20 20 20 2f 2f 20 62 6f 74 68 20 65 6e 64 73 2e 0a 20 20 20 20 20 20 20 ve.........//.both.ends.........
14c20 20 35 20 2e 2e 2e 20 31 30 30 20 3d 26 67 74 3b 20 31 2c 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 .5.....100.=&gt;.1,..........//.
14c40 42 72 61 6e 63 68 65 73 20 63 61 6e 20 62 65 20 61 72 62 69 74 72 61 72 69 6c 79 20 63 6f 6d 70 Branches.can.be.arbitrarily.comp
14c60 6c 65 78 2e 0a 20 20 20 20 20 20 20 20 31 30 31 20 3d 26 67 74 3b 20 62 6c 6b 3a 20 7b 0a 20 20 lex..........101.=&gt;.blk:.{...
14c80 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 63 3a 20 75 36 34 20 3d 20 35 3b 0a 20 20 20 20 ..........const.c:.u64.=.5;.....
14ca0 20 20 20 20 20 20 20 20 62 72 65 61 6b 20 3a 62 6c 6b 20 63 20 2a 20 32 20 2b 20 31 3b 0a 20 20 ........break.:blk.c.*.2.+.1;...
14cc0 20 20 20 20 20 20 7d 2c 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 53 77 69 74 63 68 69 6e 67 20 6f ......},..........//.Switching.o
14ce0 6e 20 61 72 62 69 74 72 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e 73 20 69 73 20 61 6c 6c 6f 77 n.arbitrary.expressions.is.allow
14d00 65 64 20 61 73 20 6c 6f 6e 67 20 61 73 20 74 68 65 0a 20 20 20 20 20 20 20 20 2f 2f 20 65 78 70 ed.as.long.as.the.........//.exp
14d20 72 65 73 73 69 6f 6e 20 69 73 20 6b 6e 6f 77 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 ression.is.known.at.compile-time
14d40 2e 0a 20 20 20 20 20 20 20 20 7a 7a 20 3d 26 67 74 3b 20 7a 7a 2c 0a 20 20 20 20 20 20 20 20 63 ..........zz.=&gt;.zz,.........c
14d60 6f 6d 70 74 69 6d 65 20 62 6c 6b 3a 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 omptime.blk:.{.............const
14d80 20 64 3a 20 75 33 32 20 3d 20 35 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 65 .d:.u32.=.5;.............const.e
14da0 3a 20 75 33 32 20 3d 20 31 30 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 20 3a :.u32.=.100;.............break.:
14dc0 62 6c 6b 20 64 20 2b 20 65 3b 0a 20 20 20 20 20 20 20 20 7d 20 3d 26 67 74 3b 20 31 30 37 2c 0a blk.d.+.e;.........}.=&gt;.107,.
14de0 0a 20 20 20 20 20 20 20 20 2f 2f 20 54 68 65 20 65 6c 73 65 20 62 72 61 6e 63 68 20 63 61 74 63 .........//.The.else.branch.catc
14e00 68 65 73 20 65 76 65 72 79 74 68 69 6e 67 20 6e 6f 74 20 61 6c 72 65 61 64 79 20 63 61 70 74 75 hes.everything.not.already.captu
14e20 72 65 64 2e 0a 20 20 20 20 20 20 20 20 2f 2f 20 45 6c 73 65 20 62 72 61 6e 63 68 65 73 20 61 72 red..........//.Else.branches.ar
14e40 65 20 6d 61 6e 64 61 74 6f 72 79 20 75 6e 6c 65 73 73 20 74 68 65 20 65 6e 74 69 72 65 20 72 61 e.mandatory.unless.the.entire.ra
14e60 6e 67 65 20 6f 66 20 76 61 6c 75 65 73 0a 20 20 20 20 20 20 20 20 2f 2f 20 69 73 20 68 61 6e 64 nge.of.values.........//.is.hand
14e80 6c 65 64 2e 0a 20 20 20 20 20 20 20 20 65 6c 73 65 20 3d 26 67 74 3b 20 39 2c 0a 20 20 20 20 7d led..........else.=&gt;.9,.....}
14ea0 3b 0a 0a 20 20 20 20 61 73 73 65 72 74 28 62 20 3d 3d 20 31 29 3b 0a 7d 0a 0a 74 65 73 74 20 26 ;......assert(b.==.1);.}..test.&
14ec0 71 75 6f 74 3b 73 77 69 74 63 68 20 65 6e 75 6d 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 63 6f 6e quot;switch.enum&quot;.{.....con
14ee0 73 74 20 49 74 65 6d 20 3d 20 75 6e 69 6f 6e 28 65 6e 75 6d 29 20 7b 0a 20 20 20 20 20 20 20 20 st.Item.=.union(enum).{.........
14f00 41 3a 20 75 33 32 2c 0a 20 20 20 20 20 20 20 20 43 3a 20 73 74 72 75 63 74 20 7b 20 78 3a 20 75 A:.u32,.........C:.struct.{.x:.u
14f20 38 2c 20 79 3a 20 75 38 20 7d 2c 0a 20 20 20 20 20 20 20 20 44 2c 0a 20 20 20 20 7d 3b 0a 0a 20 8,.y:.u8.},.........D,.....};...
14f40 20 20 20 76 61 72 20 61 20 3d 20 49 74 65 6d 20 7b 20 2e 41 20 3d 20 33 20 7d 3b 0a 0a 20 20 20 ...var.a.=.Item.{..A.=.3.};.....
14f60 20 2f 2f 20 53 77 69 74 63 68 69 6e 67 20 6f 6e 20 6d 6f 72 65 20 63 6f 6d 70 6c 65 78 20 65 6e .//.Switching.on.more.complex.en
14f80 75 6d 73 20 69 73 20 61 6c 6c 6f 77 65 64 2e 0a 20 20 20 20 63 6f 6e 73 74 20 62 20 3d 20 73 77 ums.is.allowed......const.b.=.sw
14fa0 69 74 63 68 20 28 61 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 41 20 63 61 70 74 75 72 65 20 itch.(a).{.........//.A.capture.
14fc0 67 72 6f 75 70 20 69 73 20 61 6c 6c 6f 77 65 64 20 6f 6e 20 61 20 6d 61 74 63 68 2c 20 61 6e 64 group.is.allowed.on.a.match,.and
14fe0 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 74 68 65 20 65 6e 75 6d 0a 20 20 20 20 20 20 20 20 2f 2f .will.return.the.enum.........//
15000 20 76 61 6c 75 65 20 6d 61 74 63 68 65 64 2e 0a 20 20 20 20 20 20 20 20 49 74 65 6d 2e 41 20 3d .value.matched..........Item.A.=
15020 26 67 74 3b 20 7c 69 74 65 6d 7c 20 69 74 65 6d 2c 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 41 20 &gt;.|item|.item,..........//.A.
15040 72 65 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 6d 61 74 63 68 65 64 20 76 61 6c 75 65 20 63 reference.to.the.matched.value.c
15060 61 6e 20 62 65 20 6f 62 74 61 69 6e 65 64 20 75 73 69 6e 67 20 60 2a 60 20 73 79 6e 74 61 78 2e an.be.obtained.using.`*`.syntax.
15080 0a 20 20 20 20 20 20 20 20 49 74 65 6d 2e 43 20 3d 26 67 74 3b 20 7c 2a 69 74 65 6d 7c 20 62 6c .........Item.C.=&gt;.|*item|.bl
150a0 6b 3a 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 69 74 65 6d 29 2e 78 20 2b 3d 20 31 3b k:.{.............(*item).x.+=.1;
150c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 20 3a 62 6c 6b 20 36 3b 0a 20 20 20 20 20 .............break.:blk.6;......
150e0 20 20 20 7d 2c 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e 6f 20 65 6c 73 65 20 69 73 20 72 65 71 ...},..........//.No.else.is.req
15100 75 69 72 65 64 20 69 66 20 74 68 65 20 74 79 70 65 73 20 63 61 73 65 73 20 77 61 73 20 65 78 68 uired.if.the.types.cases.was.exh
15120 61 75 73 74 69 76 65 6c 79 20 68 61 6e 64 6c 65 64 0a 20 20 20 20 20 20 20 20 49 74 65 6d 2e 44 austively.handled.........Item.D
15140 20 3d 26 67 74 3b 20 38 2c 0a 20 20 20 20 7d 3b 0a 0a 20 20 20 20 61 73 73 65 72 74 28 62 20 3d .=&gt;.8,.....};......assert(b.=
15160 3d 20 33 29 3b 0a 7d 0a 0a 2f 2f 20 53 77 69 74 63 68 20 65 78 70 72 65 73 73 69 6f 6e 73 20 63 =.3);.}..//.Switch.expressions.c
15180 61 6e 20 62 65 20 75 73 65 64 20 6f 75 74 73 69 64 65 20 61 20 66 75 6e 63 74 69 6f 6e 3a 0a 63 an.be.used.outside.a.function:.c
151a0 6f 6e 73 74 20 6f 73 5f 6d 73 67 20 3d 20 73 77 69 74 63 68 20 28 62 75 69 6c 74 69 6e 2e 6f 73 onst.os_msg.=.switch.(builtin.os
151c0 29 20 7b 0a 20 20 20 20 62 75 69 6c 74 69 6e 2e 4f 73 2e 6c 69 6e 75 78 20 3d 26 67 74 3b 20 26 ).{.....builtin.Os.linux.=&gt;.&
151e0 71 75 6f 74 3b 77 65 20 66 6f 75 6e 64 20 61 20 6c 69 6e 75 78 20 75 73 65 72 26 71 75 6f 74 3b quot;we.found.a.linux.user&quot;
15200 2c 0a 20 20 20 20 65 6c 73 65 20 3d 26 67 74 3b 20 26 71 75 6f 74 3b 6e 6f 74 20 61 20 6c 69 6e ,.....else.=&gt;.&quot;not.a.lin
15220 75 78 20 75 73 65 72 26 71 75 6f 74 3b 2c 0a 7d 3b 0a 0a 2f 2f 20 49 6e 73 69 64 65 20 61 20 66 ux.user&quot;,.};..//.Inside.a.f
15240 75 6e 63 74 69 6f 6e 2c 20 73 77 69 74 63 68 20 73 74 61 74 65 6d 65 6e 74 73 20 69 6d 70 6c 69 unction,.switch.statements.impli
15260 63 69 74 6c 79 20 61 72 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 2f 2f 20 65 76 61 6c 75 61 citly.are.compile-time.//.evalua
15280 74 65 64 20 69 66 20 74 68 65 20 74 61 72 67 65 74 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 ted.if.the.target.expression.is.
152a0 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6b 6e 6f 77 6e 2e 0a 74 65 73 74 20 26 71 75 6f 74 3b 73 compile-time.known..test.&quot;s
152c0 77 69 74 63 68 20 69 6e 73 69 64 65 20 66 75 6e 63 74 69 6f 6e 26 71 75 6f 74 3b 20 7b 0a 20 20 witch.inside.function&quot;.{...
152e0 20 20 73 77 69 74 63 68 20 28 62 75 69 6c 74 69 6e 2e 6f 73 29 20 7b 0a 20 20 20 20 20 20 20 20 ..switch.(builtin.os).{.........
15300 62 75 69 6c 74 69 6e 2e 4f 73 2e 66 75 63 68 73 69 61 20 3d 26 67 74 3b 20 7b 0a 20 20 20 20 20 builtin.Os.fuchsia.=&gt;.{......
15320 20 20 20 20 20 20 20 2f 2f 20 4f 6e 20 61 6e 20 4f 53 20 6f 74 68 65 72 20 74 68 61 6e 20 66 75 .......//.On.an.OS.other.than.fu
15340 63 68 73 69 61 2c 20 62 6c 6f 63 6b 20 69 73 20 6e 6f 74 20 65 76 65 6e 20 61 6e 61 6c 79 7a 65 chsia,.block.is.not.even.analyze
15360 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 73 6f 20 74 68 69 73 20 63 6f 6d 70 69 6c d,.............//.so.this.compil
15380 65 20 65 72 72 6f 72 20 69 73 20 6e 6f 74 20 74 72 69 67 67 65 72 65 64 2e 0a 20 20 20 20 20 20 e.error.is.not.triggered........
153a0 20 20 20 20 20 20 2f 2f 20 4f 6e 20 66 75 63 68 73 69 61 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 ......//.On.fuchsia.this.compile
153c0 20 65 72 72 6f 72 20 77 6f 75 6c 64 20 62 65 20 74 72 69 67 67 65 72 65 64 2e 0a 20 20 20 20 20 .error.would.be.triggered.......
153e0 20 20 20 20 20 20 20 40 63 6f 6d 70 69 6c 65 45 72 72 6f 72 28 26 71 75 6f 74 3b 77 69 6e 64 6f .......@compileError(&quot;windo
15400 77 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 26 71 75 6f 74 3b 29 3b 0a 20 20 20 20 20 20 20 ws.not.supported&quot;);........
15420 20 7d 2c 0a 20 20 20 20 20 20 20 20 65 6c 73 65 20 3d 26 67 74 3b 20 7b 7d 2c 0a 20 20 20 20 7d .},.........else.=&gt;.{},.....}
15440 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d .}</code></pre><pre><code.class=
15460 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 73 77 69 74 63 68 2e 7a 69 67 0a 54 65 "shell">$.zig.test.switch.zig.Te
15480 73 74 20 31 2f 33 20 73 77 69 74 63 68 20 73 69 6d 70 6c 65 2e 2e 2e 4f 4b 0a 54 65 73 74 20 32 st.1/3.switch.simple...OK.Test.2
154a0 2f 33 20 73 77 69 74 63 68 20 65 6e 75 6d 2e 2e 2e 4f 4b 0a 54 65 73 74 20 33 2f 33 20 73 77 69 /3.switch.enum...OK.Test.3/3.swi
154c0 74 63 68 20 69 6e 73 69 64 65 20 66 75 6e 63 74 69 6f 6e 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e tch.inside.function...OK.</code>
154e0 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 </pre>........<p>See.also:</p><u
15500 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 6f 6d 70 74 69 6d 65 22 3e 63 6f 6d 70 74 l>.<li><a.href="#comptime">compt
15520 69 6d 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 65 6e 75 6d 22 ime</a></li>.<li><a.href="#enum"
15540 3e 65 6e 75 6d 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 6f 6d >enum</a></li>.<li><a.href="#com
15560 70 69 6c 65 45 72 72 6f 72 22 3e 40 63 6f 6d 70 69 6c 65 45 72 72 6f 72 3c 2f 61 3e 3c 2f 6c 69 pileError">@compileError</a></li
15580 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 43 6f 6d 70 69 6c 65 2d 56 61 72 69 61 62 6c 65 >.<li><a.href="#Compile-Variable
155a0 73 22 3e 43 6f 6d 70 69 6c 65 20 56 61 72 69 61 62 6c 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f s">Compile.Variables</a></li>.</
155c0 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 77 68 69 6c 65 22 ul>...............<h1.id="while"
155e0 3e 77 68 69 6c 65 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c >while</h1>........<p.class="fil
15600 65 22 3e 77 68 69 6c 65 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 e">while.zig</p><pre><code.class
15620 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 ="zig">const.assert.=.@import(&q
15640 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 74 65 uot;std&quot;).debug.assert;..te
15660 73 74 20 26 71 75 6f 74 3b 77 68 69 6c 65 20 62 61 73 69 63 26 71 75 6f 74 3b 20 7b 0a 20 20 20 st.&quot;while.basic&quot;.{....
15680 20 2f 2f 20 41 20 77 68 69 6c 65 20 6c 6f 6f 70 20 69 73 20 75 73 65 64 20 74 6f 20 72 65 70 65 .//.A.while.loop.is.used.to.repe
156a0 61 74 65 64 6c 79 20 65 78 65 63 75 74 65 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 75 6e 74 atedly.execute.an.expression.unt
156c0 69 6c 0a 20 20 20 20 2f 2f 20 73 6f 6d 65 20 63 6f 6e 64 69 74 69 6f 6e 20 69 73 20 6e 6f 20 6c il.....//.some.condition.is.no.l
156e0 6f 6e 67 65 72 20 74 72 75 65 2e 0a 20 20 20 20 76 61 72 20 69 3a 20 75 73 69 7a 65 20 3d 20 30 onger.true......var.i:.usize.=.0
15700 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 69 20 26 6c 74 3b 20 31 30 29 20 7b 0a 20 20 20 20 20 20 ;.....while.(i.&lt;.10).{.......
15720 20 20 69 20 2b 3d 20 31 3b 0a 20 20 20 20 7d 0a 20 20 20 20 61 73 73 65 72 74 28 69 20 3d 3d 20 ..i.+=.1;.....}.....assert(i.==.
15740 31 30 29 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 77 68 69 6c 65 20 62 72 65 61 6b 26 71 10);.}..test.&quot;while.break&q
15760 75 6f 74 3b 20 7b 0a 20 20 20 20 2f 2f 20 59 6f 75 20 63 61 6e 20 75 73 65 20 62 72 65 61 6b 20 uot;.{.....//.You.can.use.break.
15780 74 6f 20 65 78 69 74 20 61 20 77 68 69 6c 65 20 6c 6f 6f 70 20 65 61 72 6c 79 2e 0a 20 20 20 20 to.exit.a.while.loop.early......
157a0 76 61 72 20 69 3a 20 75 73 69 7a 65 20 3d 20 30 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 74 72 75 var.i:.usize.=.0;.....while.(tru
157c0 65 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 20 3d 3d 20 31 30 29 0a 20 20 20 20 20 20 e).{.........if.(i.==.10).......
157e0 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 69 20 2b 3d 20 31 3b 0a 20 20 20 ......break;.........i.+=.1;....
15800 20 7d 0a 20 20 20 20 61 73 73 65 72 74 28 69 20 3d 3d 20 31 30 29 3b 0a 7d 0a 0a 74 65 73 74 20 .}.....assert(i.==.10);.}..test.
15820 26 71 75 6f 74 3b 77 68 69 6c 65 20 63 6f 6e 74 69 6e 75 65 26 71 75 6f 74 3b 20 7b 0a 20 20 20 &quot;while.continue&quot;.{....
15840 20 2f 2f 20 59 6f 75 20 63 61 6e 20 75 73 65 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20 6a 75 6d 70 .//.You.can.use.continue.to.jump
15860 20 62 61 63 6b 20 74 6f 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 6c 6f .back.to.the.beginning.of.the.lo
15880 6f 70 2e 0a 20 20 20 20 76 61 72 20 69 3a 20 75 73 69 7a 65 20 3d 20 30 3b 0a 20 20 20 20 77 68 op......var.i:.usize.=.0;.....wh
158a0 69 6c 65 20 28 74 72 75 65 29 20 7b 0a 20 20 20 20 20 20 20 20 69 20 2b 3d 20 31 3b 0a 20 20 20 ile.(true).{.........i.+=.1;....
158c0 20 20 20 20 20 69 66 20 28 69 20 26 6c 74 3b 20 31 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .....if.(i.&lt;.10).............
158e0 63 6f 6e 74 69 6e 75 65 3b 0a 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 7d 0a 20 continue;.........break;.....}..
15900 20 20 20 61 73 73 65 72 74 28 69 20 3d 3d 20 31 30 29 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f ...assert(i.==.10);.}..test.&quo
15920 74 3b 77 68 69 6c 65 20 6c 6f 6f 70 20 63 6f 6e 74 69 6e 75 61 74 69 6f 6e 20 65 78 70 72 65 73 t;while.loop.continuation.expres
15940 73 69 6f 6e 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 2f 2f 20 59 6f 75 20 63 61 6e 20 67 69 76 65 sion&quot;.{.....//.You.can.give
15960 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 74 6f 20 74 68 65 20 77 68 69 6c 65 20 6c 6f 6f 70 .an.expression.to.the.while.loop
15980 20 74 6f 20 65 78 65 63 75 74 65 20 77 68 65 6e 0a 20 20 20 20 2f 2f 20 74 68 65 20 6c 6f 6f 70 .to.execute.when.....//.the.loop
159a0 20 69 73 20 63 6f 6e 74 69 6e 75 65 64 2e 20 54 68 69 73 20 69 73 20 72 65 73 70 65 63 74 65 64 .is.continued..This.is.respected
159c0 20 62 79 20 74 68 65 20 63 6f 6e 74 69 6e 75 65 20 63 6f 6e 74 72 6f 6c 20 66 6c 6f 77 2e 0a 20 .by.the.continue.control.flow...
159e0 20 20 20 76 61 72 20 69 3a 20 75 73 69 7a 65 20 3d 20 30 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 ...var.i:.usize.=.0;.....while.(
15a00 69 20 26 6c 74 3b 20 31 30 29 20 3a 20 28 69 20 2b 3d 20 31 29 20 7b 7d 0a 20 20 20 20 61 73 73 i.&lt;.10).:.(i.+=.1).{}.....ass
15a20 65 72 74 28 69 20 3d 3d 20 31 30 29 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 77 68 69 6c ert(i.==.10);.}..test.&quot;whil
15a40 65 20 6c 6f 6f 70 20 63 6f 6e 74 69 6e 75 61 74 69 6f 6e 20 65 78 70 72 65 73 73 69 6f 6e 2c 20 e.loop.continuation.expression,.
15a60 6d 6f 72 65 20 63 6f 6d 70 6c 69 63 61 74 65 64 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 2f 2f 20 more.complicated&quot;.{.....//.
15a80 4d 6f 72 65 20 63 6f 6d 70 6c 65 78 20 62 6c 6f 63 6b 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 More.complex.blocks.can.be.used.
15aa0 61 73 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 69 6e 20 74 68 65 20 6c 6f 6f 70 20 63 6f 6e as.an.expression.in.the.loop.con
15ac0 74 69 6e 75 65 0a 20 20 20 20 2f 2f 20 65 78 70 72 65 73 73 69 6f 6e 2e 0a 20 20 20 20 76 61 72 tinue.....//.expression......var
15ae0 20 69 31 3a 20 75 73 69 7a 65 20 3d 20 31 3b 0a 20 20 20 20 76 61 72 20 6a 31 3a 20 75 73 69 7a .i1:.usize.=.1;.....var.j1:.usiz
15b00 65 20 3d 20 31 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 69 31 20 2a 20 6a 31 20 26 6c 74 3b 20 32 e.=.1;.....while.(i1.*.j1.&lt;.2
15b20 30 30 30 29 20 3a 20 28 7b 20 69 31 20 2a 3d 20 32 3b 20 6a 31 20 2a 3d 20 33 3b 20 7d 29 20 7b 000).:.({.i1.*=.2;.j1.*=.3;.}).{
15b40 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 6d 79 5f 69 6a 31 20 3d 20 69 31 20 2a 20 6a 31 3b .........const.my_ij1.=.i1.*.j1;
15b60 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 6d 79 5f 69 6a 31 20 26 6c 74 3b 20 32 30 30 30 .........assert(my_ij1.&lt;.2000
15b80 29 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 77 68 69 6c 65 20 65 6c 73 );.....}.}..test.&quot;while.els
15ba0 65 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 72 61 6e 67 65 48 61 73 4e 75 6d e&quot;.{.....assert(rangeHasNum
15bc0 62 65 72 28 30 2c 20 31 30 2c 20 35 29 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 21 72 61 6e 67 ber(0,.10,.5));.....assert(!rang
15be0 65 48 61 73 4e 75 6d 62 65 72 28 30 2c 20 31 30 2c 20 31 35 29 29 3b 0a 7d 0a 0a 66 6e 20 72 61 eHasNumber(0,.10,.15));.}..fn.ra
15c00 6e 67 65 48 61 73 4e 75 6d 62 65 72 28 62 65 67 69 6e 3a 20 75 73 69 7a 65 2c 20 65 6e 64 3a 20 ngeHasNumber(begin:.usize,.end:.
15c20 75 73 69 7a 65 2c 20 6e 75 6d 62 65 72 3a 20 75 73 69 7a 65 29 20 62 6f 6f 6c 20 7b 0a 20 20 20 usize,.number:.usize).bool.{....
15c40 20 76 61 72 20 69 20 3d 20 62 65 67 69 6e 3b 0a 20 20 20 20 2f 2f 20 57 68 69 6c 65 20 6c 6f 6f .var.i.=.begin;.....//.While.loo
15c60 70 73 20 61 72 65 20 65 78 70 72 65 73 73 69 6f 6e 73 2e 20 54 68 65 20 72 65 73 75 6c 74 20 6f ps.are.expressions..The.result.o
15c80 66 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 74 68 65 0a 20 20 20 20 2f 2f 20 72 f.the.expression.is.the.....//.r
15ca0 65 73 75 6c 74 20 6f 66 20 74 68 65 20 65 6c 73 65 20 63 6c 61 75 73 65 20 6f 66 20 61 20 77 68 esult.of.the.else.clause.of.a.wh
15cc0 69 6c 65 20 6c 6f 6f 70 2c 20 77 68 69 63 68 20 69 73 20 65 78 65 63 75 74 65 64 20 77 68 65 6e ile.loop,.which.is.executed.when
15ce0 0a 20 20 20 20 2f 2f 20 74 68 65 20 63 6f 6e 64 69 74 69 6f 6e 20 6f 66 20 74 68 65 20 77 68 69 .....//.the.condition.of.the.whi
15d00 6c 65 20 6c 6f 6f 70 20 69 73 20 74 65 73 74 65 64 20 61 73 20 66 61 6c 73 65 2e 0a 20 20 20 20 le.loop.is.tested.as.false......
15d20 72 65 74 75 72 6e 20 77 68 69 6c 65 20 28 69 20 26 6c 74 3b 20 65 6e 64 29 20 3a 20 28 69 20 2b return.while.(i.&lt;.end).:.(i.+
15d40 3d 20 31 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 20 3d 3d 20 6e 75 6d 62 65 72 29 20 =.1).{.........if.(i.==.number).
15d60 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 62 72 65 61 6b 20 65 78 70 72 65 73 73 69 6f {.............//.break.expressio
15d80 6e 73 2c 20 6c 69 6b 65 20 72 65 74 75 72 6e 20 65 78 70 72 65 73 73 69 6f 6e 73 2c 20 61 63 63 ns,.like.return.expressions,.acc
15da0 65 70 74 20 61 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 70 61 72 61 6d ept.a.value.............//.param
15dc0 65 74 65 72 2e 20 54 68 69 73 20 69 73 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20 eter..This.is.the.result.of.the.
15de0 77 68 69 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f while.expression..............//
15e00 20 57 68 65 6e 20 79 6f 75 20 62 72 65 61 6b 20 66 72 6f 6d 20 61 20 77 68 69 6c 65 20 6c 6f 6f .When.you.break.from.a.while.loo
15e20 70 2c 20 74 68 65 20 65 6c 73 65 20 62 72 61 6e 63 68 20 69 73 20 6e 6f 74 0a 20 20 20 20 20 20 p,.the.else.branch.is.not.......
15e40 20 20 20 20 20 20 2f 2f 20 65 76 61 6c 75 61 74 65 64 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 ......//.evaluated..............
15e60 62 72 65 61 6b 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 20 65 6c 73 65 break.true;.........}.....}.else
15e80 20 66 61 6c 73 65 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 77 68 69 6c 65 20 6e 75 6c 6c .false;.}..test.&quot;while.null
15ea0 20 63 61 70 74 75 72 65 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 2f 2f 20 4a 75 73 74 20 6c 69 6b .capture&quot;.{.....//.Just.lik
15ec0 65 20 69 66 20 65 78 70 72 65 73 73 69 6f 6e 73 2c 20 77 68 69 6c 65 20 6c 6f 6f 70 73 20 63 61 e.if.expressions,.while.loops.ca
15ee0 6e 20 74 61 6b 65 20 61 20 6e 75 6c 6c 61 62 6c 65 20 61 73 20 74 68 65 0a 20 20 20 20 2f 2f 20 n.take.a.nullable.as.the.....//.
15f00 63 6f 6e 64 69 74 69 6f 6e 20 61 6e 64 20 63 61 70 74 75 72 65 20 74 68 65 20 70 61 79 6c 6f 61 condition.and.capture.the.payloa
15f20 64 2e 20 57 68 65 6e 20 6e 75 6c 6c 20 69 73 20 65 6e 63 6f 75 6e 74 65 72 65 64 20 74 68 65 20 d..When.null.is.encountered.the.
15f40 6c 6f 6f 70 0a 20 20 20 20 2f 2f 20 65 78 69 74 73 2e 0a 20 20 20 20 76 61 72 20 73 75 6d 31 3a loop.....//.exits......var.sum1:
15f60 20 75 33 32 20 3d 20 30 3b 0a 20 20 20 20 6e 75 6d 62 65 72 73 5f 6c 65 66 74 20 3d 20 33 3b 0a .u32.=.0;.....numbers_left.=.3;.
15f80 20 20 20 20 77 68 69 6c 65 20 28 65 76 65 6e 74 75 61 6c 6c 79 4e 75 6c 6c 53 65 71 75 65 6e 63 ....while.(eventuallyNullSequenc
15fa0 65 28 29 29 20 7c 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 73 75 6d 31 20 2b 3d 20 76 e()).|value|.{.........sum1.+=.v
15fc0 61 6c 75 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 61 73 73 65 72 74 28 73 75 6d 31 20 3d 3d 20 33 alue;.....}.....assert(sum1.==.3
15fe0 29 3b 0a 0a 20 20 20 20 2f 2f 20 54 68 65 20 65 6c 73 65 20 62 72 61 6e 63 68 20 69 73 20 61 6c );......//.The.else.branch.is.al
16000 6c 6f 77 65 64 20 6f 6e 20 6e 75 6c 6c 61 62 6c 65 20 69 74 65 72 61 74 69 6f 6e 2e 20 49 6e 20 lowed.on.nullable.iteration..In.
16020 74 68 69 73 20 63 61 73 65 2c 20 69 74 20 77 69 6c 6c 0a 20 20 20 20 2f 2f 20 62 65 20 65 78 65 this.case,.it.will.....//.be.exe
16040 63 75 74 65 64 20 6f 6e 20 74 68 65 20 66 69 72 73 74 20 6e 75 6c 6c 20 76 61 6c 75 65 20 65 6e cuted.on.the.first.null.value.en
16060 63 6f 75 6e 74 65 72 65 64 2e 0a 20 20 20 20 76 61 72 20 73 75 6d 32 3a 20 75 33 32 20 3d 20 30 countered......var.sum2:.u32.=.0
16080 3b 0a 20 20 20 20 6e 75 6d 62 65 72 73 5f 6c 65 66 74 20 3d 20 33 3b 0a 20 20 20 20 77 68 69 6c ;.....numbers_left.=.3;.....whil
160a0 65 20 28 65 76 65 6e 74 75 61 6c 6c 79 4e 75 6c 6c 53 65 71 75 65 6e 63 65 28 29 29 20 7c 76 61 e.(eventuallyNullSequence()).|va
160c0 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 73 75 6d 32 20 2b 3d 20 76 61 6c 75 65 3b 0a 20 20 lue|.{.........sum2.+=.value;...
160e0 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 73 75 6d 31 20 3d ..}.else.{.........assert(sum1.=
16100 3d 20 33 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 4a 75 73 74 20 6c 69 6b 65 20 69 66 =.3);.....}......//.Just.like.if
16120 20 65 78 70 72 65 73 73 69 6f 6e 73 2c 20 77 68 69 6c 65 20 6c 6f 6f 70 73 20 63 61 6e 20 61 6c .expressions,.while.loops.can.al
16140 73 6f 20 74 61 6b 65 20 61 6e 20 65 72 72 6f 72 20 75 6e 69 6f 6e 20 61 73 0a 20 20 20 20 2f 2f so.take.an.error.union.as.....//
16160 20 74 68 65 20 63 6f 6e 64 69 74 69 6f 6e 20 61 6e 64 20 63 61 70 74 75 72 65 20 74 68 65 20 70 .the.condition.and.capture.the.p
16180 61 79 6c 6f 61 64 20 6f 72 20 74 68 65 20 65 72 72 6f 72 20 63 6f 64 65 2e 20 57 68 65 6e 20 74 ayload.or.the.error.code..When.t
161a0 68 65 0a 20 20 20 20 2f 2f 20 63 6f 6e 64 69 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 69 6e 20 61 he.....//.condition.results.in.a
161c0 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 74 68 65 20 65 6c 73 65 20 62 72 61 6e 63 68 20 69 73 20 n.error.code.the.else.branch.is.
161e0 65 76 61 6c 75 61 74 65 64 20 61 6e 64 0a 20 20 20 20 2f 2f 20 74 68 65 20 6c 6f 6f 70 20 69 73 evaluated.and.....//.the.loop.is
16200 20 66 69 6e 69 73 68 65 64 2e 0a 20 20 20 20 76 61 72 20 73 75 6d 33 3a 20 75 33 32 20 3d 20 30 .finished......var.sum3:.u32.=.0
16220 3b 0a 20 20 20 20 6e 75 6d 62 65 72 73 5f 6c 65 66 74 20 3d 20 33 3b 0a 20 20 20 20 77 68 69 6c ;.....numbers_left.=.3;.....whil
16240 65 20 28 65 76 65 6e 74 75 61 6c 6c 79 45 72 72 6f 72 53 65 71 75 65 6e 63 65 28 29 29 20 7c 76 e.(eventuallyErrorSequence()).|v
16260 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 73 75 6d 33 20 2b 3d 20 76 61 6c 75 65 3b 0a 20 alue|.{.........sum3.+=.value;..
16280 20 20 20 7d 20 65 6c 73 65 20 7c 65 72 72 7c 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 ...}.else.|err|.{.........assert
162a0 28 65 72 72 20 3d 3d 20 65 72 72 6f 72 2e 52 65 61 63 68 65 64 5a 65 72 6f 29 3b 0a 20 20 20 20 (err.==.error.ReachedZero);.....
162c0 7d 0a 7d 0a 0a 76 61 72 20 6e 75 6d 62 65 72 73 5f 6c 65 66 74 3a 20 75 33 32 20 3d 20 75 6e 64 }.}..var.numbers_left:.u32.=.und
162e0 65 66 69 6e 65 64 3b 0a 66 6e 20 65 76 65 6e 74 75 61 6c 6c 79 4e 75 6c 6c 53 65 71 75 65 6e 63 efined;.fn.eventuallyNullSequenc
16300 65 28 29 20 3f 75 33 32 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 69 66 20 28 6e 75 6d 62 65 72 e().?u32.{.....return.if.(number
16320 73 5f 6c 65 66 74 20 3d 3d 20 30 29 20 6e 75 6c 6c 20 65 6c 73 65 20 62 6c 6b 3a 20 7b 0a 20 20 s_left.==.0).null.else.blk:.{...
16340 20 20 20 20 20 20 6e 75 6d 62 65 72 73 5f 6c 65 66 74 20 2d 3d 20 31 3b 0a 20 20 20 20 20 20 20 ......numbers_left.-=.1;........
16360 20 62 72 65 61 6b 20 3a 62 6c 6b 20 6e 75 6d 62 65 72 73 5f 6c 65 66 74 3b 0a 20 20 20 20 7d 3b .break.:blk.numbers_left;.....};
16380 0a 7d 0a 0a 66 6e 20 65 76 65 6e 74 75 61 6c 6c 79 45 72 72 6f 72 53 65 71 75 65 6e 63 65 28 29 .}..fn.eventuallyErrorSequence()
163a0 20 65 72 72 6f 72 21 75 33 32 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 69 66 20 28 6e 75 6d 62 .error!u32.{.....return.if.(numb
163c0 65 72 73 5f 6c 65 66 74 20 3d 3d 20 30 29 20 65 72 72 6f 72 2e 52 65 61 63 68 65 64 5a 65 72 6f ers_left.==.0).error.ReachedZero
163e0 20 65 6c 73 65 20 62 6c 6b 3a 20 7b 0a 20 20 20 20 20 20 20 20 6e 75 6d 62 65 72 73 5f 6c 65 66 .else.blk:.{.........numbers_lef
16400 74 20 2d 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 62 72 65 61 6b 20 3a 62 6c 6b 20 6e 75 6d 62 65 t.-=.1;.........break.:blk.numbe
16420 72 73 5f 6c 65 66 74 3b 0a 20 20 20 20 7d 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 69 6e rs_left;.....};.}..test.&quot;in
16440 6c 69 6e 65 20 77 68 69 6c 65 20 6c 6f 6f 70 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 2f 2f 20 57 line.while.loop&quot;.{.....//.W
16460 68 69 6c 65 20 6c 6f 6f 70 73 20 63 61 6e 20 62 65 20 69 6e 6c 69 6e 65 64 2e 20 54 68 69 73 20 hile.loops.can.be.inlined..This.
16480 63 61 75 73 65 73 20 74 68 65 20 6c 6f 6f 70 20 74 6f 20 62 65 20 75 6e 72 6f 6c 6c 65 64 2c 20 causes.the.loop.to.be.unrolled,.
164a0 77 68 69 63 68 0a 20 20 20 20 2f 2f 20 61 6c 6c 6f 77 73 20 74 68 65 20 63 6f 64 65 20 74 6f 20 which.....//.allows.the.code.to.
164c0 64 6f 20 73 6f 6d 65 20 74 68 69 6e 67 73 20 77 68 69 63 68 20 6f 6e 6c 79 20 77 6f 72 6b 20 61 do.some.things.which.only.work.a
164e0 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2c 0a 20 20 20 20 2f 2f 20 73 75 63 68 20 61 73 20 75 t.compile.time,.....//.such.as.u
16500 73 65 20 74 79 70 65 73 20 61 73 20 66 69 72 73 74 20 63 6c 61 73 73 20 76 61 6c 75 65 73 2e 0a se.types.as.first.class.values..
16520 20 20 20 20 63 6f 6d 70 74 69 6d 65 20 76 61 72 20 69 20 3d 20 30 3b 0a 20 20 20 20 76 61 72 20 ....comptime.var.i.=.0;.....var.
16540 73 75 6d 3a 20 75 73 69 7a 65 20 3d 20 30 3b 0a 20 20 20 20 69 6e 6c 69 6e 65 20 77 68 69 6c 65 sum:.usize.=.0;.....inline.while
16560 20 28 69 20 26 6c 74 3b 20 33 29 20 3a 20 28 69 20 2b 3d 20 31 29 20 7b 0a 20 20 20 20 20 20 20 .(i.&lt;.3).:.(i.+=.1).{........
16580 20 63 6f 6e 73 74 20 54 20 3d 20 73 77 69 74 63 68 20 28 69 29 20 7b 0a 20 20 20 20 20 20 20 20 .const.T.=.switch.(i).{.........
165a0 20 20 20 20 30 20 3d 26 67 74 3b 20 66 33 32 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 31 20 3d ....0.=&gt;.f32,.............1.=
165c0 26 67 74 3b 20 69 38 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 32 20 3d 26 67 74 3b 20 62 6f 6f &gt;.i8,.............2.=&gt;.boo
165e0 6c 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 3d 26 67 74 3b 20 75 6e 72 65 61 63 l,.............else.=&gt;.unreac
16600 68 61 62 6c 65 2c 0a 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 20 20 20 20 20 20 73 75 6d 20 2b 3d hable,.........};.........sum.+=
16620 20 74 79 70 65 4e 61 6d 65 4c 65 6e 67 74 68 28 54 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 61 73 .typeNameLength(T);.....}.....as
16640 73 65 72 74 28 73 75 6d 20 3d 3d 20 39 29 3b 0a 7d 0a 0a 66 6e 20 74 79 70 65 4e 61 6d 65 4c 65 sert(sum.==.9);.}..fn.typeNameLe
16660 6e 67 74 68 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 29 20 75 73 69 7a 65 20 7b 0a 20 ngth(comptime.T:.type).usize.{..
16680 20 20 20 72 65 74 75 72 6e 20 40 74 79 70 65 4e 61 6d 65 28 54 29 2e 6c 65 6e 3b 0a 7d 3c 2f 63 ...return.@typeName(T).len;.}</c
166a0 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c ode></pre><pre><code.class="shel
166c0 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 77 68 69 6c 65 2e 7a 69 67 0a 54 65 73 74 20 31 2f 38 l">$.zig.test.while.zig.Test.1/8
166e0 20 77 68 69 6c 65 20 62 61 73 69 63 2e 2e 2e 4f 4b 0a 54 65 73 74 20 32 2f 38 20 77 68 69 6c 65 .while.basic...OK.Test.2/8.while
16700 20 62 72 65 61 6b 2e 2e 2e 4f 4b 0a 54 65 73 74 20 33 2f 38 20 77 68 69 6c 65 20 63 6f 6e 74 69 .break...OK.Test.3/8.while.conti
16720 6e 75 65 2e 2e 2e 4f 4b 0a 54 65 73 74 20 34 2f 38 20 77 68 69 6c 65 20 6c 6f 6f 70 20 63 6f 6e nue...OK.Test.4/8.while.loop.con
16740 74 69 6e 75 61 74 69 6f 6e 20 65 78 70 72 65 73 73 69 6f 6e 2e 2e 2e 4f 4b 0a 54 65 73 74 20 35 tinuation.expression...OK.Test.5
16760 2f 38 20 77 68 69 6c 65 20 6c 6f 6f 70 20 63 6f 6e 74 69 6e 75 61 74 69 6f 6e 20 65 78 70 72 65 /8.while.loop.continuation.expre
16780 73 73 69 6f 6e 2c 20 6d 6f 72 65 20 63 6f 6d 70 6c 69 63 61 74 65 64 2e 2e 2e 4f 4b 0a 54 65 73 ssion,.more.complicated...OK.Tes
167a0 74 20 36 2f 38 20 77 68 69 6c 65 20 65 6c 73 65 2e 2e 2e 4f 4b 0a 54 65 73 74 20 37 2f 38 20 77 t.6/8.while.else...OK.Test.7/8.w
167c0 68 69 6c 65 20 6e 75 6c 6c 20 63 61 70 74 75 72 65 2e 2e 2e 4f 4b 0a 54 65 73 74 20 38 2f 38 20 hile.null.capture...OK.Test.8/8.
167e0 69 6e 6c 69 6e 65 20 77 68 69 6c 65 20 6c 6f 6f 70 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f inline.while.loop...OK.</code></
16800 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e pre>........<p>See.also:</p><ul>
16820 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 66 22 3e 69 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c .<li><a.href="#if">if</a></li>.<
16840 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 4e 75 6c 6c 61 62 6c 65 73 22 3e 4e 75 6c 6c 61 62 6c 65 li><a.href="#Nullables">Nullable
16860 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 45 72 72 6f 72 73 22 s</a></li>.<li><a.href="#Errors"
16880 3e 45 72 72 6f 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 >Errors</a></li>.<li><a.href="#c
168a0 6f 6d 70 74 69 6d 65 22 3e 63 6f 6d 70 74 69 6d 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c omptime">comptime</a></li>.<li><
168c0 61 20 68 72 65 66 3d 22 23 75 6e 72 65 61 63 68 61 62 6c 65 22 3e 75 6e 72 65 61 63 68 61 62 6c a.href="#unreachable">unreachabl
168e0 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c e</a></li>.</ul>...............<
16900 68 31 20 69 64 3d 22 66 6f 72 22 3e 66 6f 72 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 20 63 h1.id="for">for</h1>........<p.c
16920 6c 61 73 73 3d 22 66 69 6c 65 22 3e 66 6f 72 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 lass="file">for.zig</p><pre><cod
16940 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d e.class="zig">const.assert.=.@im
16960 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 port(&quot;std&quot;).debug.asse
16980 72 74 3b 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 66 6f 72 20 62 61 73 69 63 73 26 71 75 6f 74 3b rt;..test.&quot;for.basics&quot;
169a0 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 69 74 65 6d 73 20 3d 20 5b 5d 69 33 32 20 7b 20 34 2c 20 .{.....const.items.=.[]i32.{.4,.
169c0 35 2c 20 33 2c 20 34 2c 20 30 20 7d 3b 0a 20 20 20 20 76 61 72 20 73 75 6d 3a 20 69 33 32 20 3d 5,.3,.4,.0.};.....var.sum:.i32.=
169e0 20 30 3b 0a 0a 20 20 20 20 2f 2f 20 46 6f 72 20 6c 6f 6f 70 73 20 69 74 65 72 61 74 65 20 6f 76 .0;......//.For.loops.iterate.ov
16a00 65 72 20 73 6c 69 63 65 73 20 61 6e 64 20 61 72 72 61 79 73 2e 0a 20 20 20 20 66 6f 72 20 28 69 er.slices.and.arrays......for.(i
16a20 74 65 6d 73 29 20 7c 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 42 72 65 61 6b tems).|value|.{.........//.Break
16a40 20 61 6e 64 20 63 6f 6e 74 69 6e 75 65 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 2e 0a 20 20 20 .and.continue.are.supported.....
16a60 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 .....if.(value.==.0).{..........
16a80 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 73 ...continue;.........}.........s
16aa0 75 6d 20 2b 3d 20 76 61 6c 75 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 61 73 73 65 72 74 28 73 75 um.+=.value;.....}.....assert(su
16ac0 6d 20 3d 3d 20 31 36 29 3b 0a 0a 20 20 20 20 2f 2f 20 54 6f 20 69 74 65 72 61 74 65 20 6f 76 65 m.==.16);......//.To.iterate.ove
16ae0 72 20 61 20 70 6f 72 74 69 6f 6e 20 6f 66 20 61 20 73 6c 69 63 65 2c 20 72 65 73 6c 69 63 65 2e r.a.portion.of.a.slice,.reslice.
16b00 0a 20 20 20 20 66 6f 72 20 28 69 74 65 6d 73 5b 30 2e 2e 31 5d 29 20 7c 76 61 6c 75 65 7c 20 7b .....for.(items[0..1]).|value|.{
16b20 0a 20 20 20 20 20 20 20 20 73 75 6d 20 2b 3d 20 76 61 6c 75 65 3b 0a 20 20 20 20 7d 0a 20 20 20 .........sum.+=.value;.....}....
16b40 20 61 73 73 65 72 74 28 73 75 6d 20 3d 3d 20 32 30 29 3b 0a 0a 20 20 20 20 2f 2f 20 54 6f 20 61 .assert(sum.==.20);......//.To.a
16b60 63 63 65 73 73 20 74 68 65 20 69 6e 64 65 78 20 6f 66 20 69 74 65 72 61 74 69 6f 6e 2c 20 73 70 ccess.the.index.of.iteration,.sp
16b80 65 63 69 66 79 20 61 20 73 65 63 6f 6e 64 20 63 61 70 74 75 72 65 20 76 61 6c 75 65 2e 0a 20 20 ecify.a.second.capture.value....
16ba0 20 20 2f 2f 20 54 68 69 73 20 69 73 20 7a 65 72 6f 2d 69 6e 64 65 78 65 64 2e 0a 20 20 20 20 76 ..//.This.is.zero-indexed......v
16bc0 61 72 20 73 75 6d 32 3a 20 69 33 32 20 3d 20 30 3b 0a 20 20 20 20 66 6f 72 20 28 69 74 65 6d 73 ar.sum2:.i32.=.0;.....for.(items
16be0 29 20 7c 76 61 6c 75 65 2c 20 69 7c 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 40 74 ).|value,.i|.{.........assert(@t
16c00 79 70 65 4f 66 28 69 29 20 3d 3d 20 75 73 69 7a 65 29 3b 0a 20 20 20 20 20 20 20 20 73 75 6d 32 ypeOf(i).==.usize);.........sum2
16c20 20 2b 3d 20 69 33 32 28 69 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 61 73 73 65 72 74 28 73 75 6d .+=.i32(i);.....}.....assert(sum
16c40 32 20 3d 3d 20 31 30 29 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 66 6f 72 20 72 65 66 65 2.==.10);.}..test.&quot;for.refe
16c60 72 65 6e 63 65 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 76 61 72 20 69 74 65 6d 73 20 3d 20 5b 5d rence&quot;.{.....var.items.=.[]
16c80 69 33 32 20 7b 20 33 2c 20 34 2c 20 32 20 7d 3b 0a 0a 20 20 20 20 2f 2f 20 49 74 65 72 61 74 65 i32.{.3,.4,.2.};......//.Iterate
16ca0 20 6f 76 65 72 20 74 68 65 20 73 6c 69 63 65 20 62 79 20 72 65 66 65 72 65 6e 63 65 20 62 79 0a .over.the.slice.by.reference.by.
16cc0 20 20 20 20 2f 2f 20 73 70 65 63 69 66 79 69 6e 67 20 74 68 61 74 20 74 68 65 20 63 61 70 74 75 ....//.specifying.that.the.captu
16ce0 72 65 20 76 61 6c 75 65 20 69 73 20 61 20 70 6f 69 6e 74 65 72 2e 0a 20 20 20 20 66 6f 72 20 28 re.value.is.a.pointer......for.(
16d00 69 74 65 6d 73 29 20 7c 2a 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 2a 76 61 6c 75 65 items).|*value|.{.........*value
16d20 20 2b 3d 20 31 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 61 73 73 65 72 74 28 69 74 65 6d 73 5b 30 .+=.1;.....}......assert(items[0
16d40 5d 20 3d 3d 20 34 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 69 74 65 6d 73 5b 31 5d 20 3d 3d 20 ].==.4);.....assert(items[1].==.
16d60 35 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 69 74 65 6d 73 5b 32 5d 20 3d 3d 20 33 29 3b 0a 7d 5);.....assert(items[2].==.3);.}
16d80 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 66 6f 72 20 65 6c 73 65 26 71 75 6f 74 3b 20 7b 0a 20 20 ..test.&quot;for.else&quot;.{...
16da0 20 20 2f 2f 20 46 6f 72 20 61 6c 6c 6f 77 73 20 61 6e 20 65 6c 73 65 20 61 74 74 61 63 68 65 64 ..//.For.allows.an.else.attached
16dc0 20 74 6f 20 69 74 2c 20 74 68 65 20 73 61 6d 65 20 61 73 20 61 20 77 68 69 6c 65 20 6c 6f 6f 70 .to.it,.the.same.as.a.while.loop
16de0 2e 0a 20 20 20 20 76 61 72 20 69 74 65 6d 73 20 3d 20 5b 5d 3f 69 33 32 20 7b 20 33 2c 20 34 2c ......var.items.=.[]?i32.{.3,.4,
16e00 20 6e 75 6c 6c 2c 20 35 20 7d 3b 0a 0a 20 20 20 20 2f 2f 20 46 6f 72 20 6c 6f 6f 70 73 20 63 61 .null,.5.};......//.For.loops.ca
16e20 6e 20 61 6c 73 6f 20 62 65 20 75 73 65 64 20 61 73 20 65 78 70 72 65 73 73 69 6f 6e 73 2e 0a 20 n.also.be.used.as.expressions...
16e40 20 20 20 76 61 72 20 73 75 6d 3a 20 69 33 32 20 3d 20 30 3b 0a 20 20 20 20 63 6f 6e 73 74 20 72 ...var.sum:.i32.=.0;.....const.r
16e60 65 73 75 6c 74 20 3d 20 66 6f 72 20 28 69 74 65 6d 73 29 20 7c 76 61 6c 75 65 7c 20 7b 0a 20 20 esult.=.for.(items).|value|.{...
16e80 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20 20 20 20 ......if.(value.==.null).{......
16ea0 20 20 20 20 20 20 20 62 72 65 61 6b 20 39 3b 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b .......break.9;.........}.else.{
16ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 75 6d 20 2b 3d 20 3f 3f 76 61 6c 75 65 3b 0a 20 20 20 .............sum.+=.??value;....
16ee0 20 20 20 20 20 7d 0a 20 20 20 20 7d 20 65 6c 73 65 20 62 6c 6b 3a 20 7b 0a 20 20 20 20 20 20 20 .....}.....}.else.blk:.{........
16f00 20 61 73 73 65 72 74 28 73 75 6d 20 3d 3d 20 37 29 3b 0a 20 20 20 20 20 20 20 20 62 72 65 61 6b .assert(sum.==.7);.........break
16f20 20 3a 62 6c 6b 20 73 75 6d 3b 0a 20 20 20 20 7d 3b 0a 7d 0a 0a 0a 74 65 73 74 20 26 71 75 6f 74 .:blk.sum;.....};.}...test.&quot
16f40 3b 69 6e 6c 69 6e 65 20 66 6f 72 20 6c 6f 6f 70 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 63 6f 6e ;inline.for.loop&quot;.{.....con
16f60 73 74 20 6e 75 6d 73 20 3d 20 5b 5d 69 33 32 7b 32 2c 20 34 2c 20 36 7d 3b 0a 20 20 20 20 2f 2f st.nums.=.[]i32{2,.4,.6};.....//
16f80 20 46 6f 72 20 6c 6f 6f 70 73 20 63 61 6e 20 62 65 20 69 6e 6c 69 6e 65 64 2e 20 54 68 69 73 20 .For.loops.can.be.inlined..This.
16fa0 63 61 75 73 65 73 20 74 68 65 20 6c 6f 6f 70 20 74 6f 20 62 65 20 75 6e 72 6f 6c 6c 65 64 2c 20 causes.the.loop.to.be.unrolled,.
16fc0 77 68 69 63 68 0a 20 20 20 20 2f 2f 20 61 6c 6c 6f 77 73 20 74 68 65 20 63 6f 64 65 20 74 6f 20 which.....//.allows.the.code.to.
16fe0 64 6f 20 73 6f 6d 65 20 74 68 69 6e 67 73 20 77 68 69 63 68 20 6f 6e 6c 79 20 77 6f 72 6b 20 61 do.some.things.which.only.work.a
17000 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2c 0a 20 20 20 20 2f 2f 20 73 75 63 68 20 61 73 20 75 t.compile.time,.....//.such.as.u
17020 73 65 20 74 79 70 65 73 20 61 73 20 66 69 72 73 74 20 63 6c 61 73 73 20 76 61 6c 75 65 73 2e 0a se.types.as.first.class.values..
17040 20 20 20 20 2f 2f 20 54 68 65 20 63 61 70 74 75 72 65 20 76 61 6c 75 65 20 61 6e 64 20 69 74 65 ....//.The.capture.value.and.ite
17060 72 61 74 6f 72 20 76 61 6c 75 65 20 6f 66 20 69 6e 6c 69 6e 65 64 20 66 6f 72 20 6c 6f 6f 70 73 rator.value.of.inlined.for.loops
17080 20 61 72 65 0a 20 20 20 20 2f 2f 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6b 6e 6f 77 6e 2e 0a .are.....//.compile-time.known..
170a0 20 20 20 20 76 61 72 20 73 75 6d 3a 20 75 73 69 7a 65 20 3d 20 30 3b 0a 20 20 20 20 69 6e 6c 69 ....var.sum:.usize.=.0;.....inli
170c0 6e 65 20 66 6f 72 20 28 6e 75 6d 73 29 20 7c 69 7c 20 7b 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 ne.for.(nums).|i|.{.........cons
170e0 74 20 54 20 3d 20 73 77 69 74 63 68 20 28 69 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 32 t.T.=.switch.(i).{.............2
17100 20 3d 26 67 74 3b 20 66 33 32 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 34 20 3d 26 67 74 3b 20 .=&gt;.f32,.............4.=&gt;.
17120 69 38 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 36 20 3d 26 67 74 3b 20 62 6f 6f 6c 2c 0a 20 20 i8,.............6.=&gt;.bool,...
17140 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 3d 26 67 74 3b 20 75 6e 72 65 61 63 68 61 62 6c 65 ..........else.=&gt;.unreachable
17160 2c 0a 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 20 20 20 20 20 20 73 75 6d 20 2b 3d 20 74 79 70 65 ,.........};.........sum.+=.type
17180 4e 61 6d 65 4c 65 6e 67 74 68 28 54 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 61 73 73 65 72 74 28 NameLength(T);.....}.....assert(
171a0 73 75 6d 20 3d 3d 20 39 29 3b 0a 7d 0a 0a 66 6e 20 74 79 70 65 4e 61 6d 65 4c 65 6e 67 74 68 28 sum.==.9);.}..fn.typeNameLength(
171c0 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 29 20 75 73 69 7a 65 20 7b 0a 20 20 20 20 72 65 comptime.T:.type).usize.{.....re
171e0 74 75 72 6e 20 40 74 79 70 65 4e 61 6d 65 28 54 29 2e 6c 65 6e 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c turn.@typeName(T).len;.}</code><
17200 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 /pre><pre><code.class="shell">$.
17220 7a 69 67 20 74 65 73 74 20 66 6f 72 2e 7a 69 67 0a 54 65 73 74 20 31 2f 34 20 66 6f 72 20 62 61 zig.test.for.zig.Test.1/4.for.ba
17240 73 69 63 73 2e 2e 2e 4f 4b 0a 54 65 73 74 20 32 2f 34 20 66 6f 72 20 72 65 66 65 72 65 6e 63 65 sics...OK.Test.2/4.for.reference
17260 2e 2e 2e 4f 4b 0a 54 65 73 74 20 33 2f 34 20 66 6f 72 20 65 6c 73 65 2e 2e 2e 4f 4b 0a 54 65 73 ...OK.Test.3/4.for.else...OK.Tes
17280 74 20 34 2f 34 20 69 6e 6c 69 6e 65 20 66 6f 72 20 6c 6f 6f 70 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 t.4/4.inline.for.loop...OK.</cod
172a0 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e e></pre>........<p>See.also:</p>
172c0 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 77 68 69 6c 65 22 3e 77 68 69 6c 65 3c <ul>.<li><a.href="#while">while<
172e0 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 6f 6d 70 74 69 6d 65 22 /a></li>.<li><a.href="#comptime"
17300 3e 63 6f 6d 70 74 69 6d 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 >comptime</a></li>.<li><a.href="
17320 23 41 72 72 61 79 73 22 3e 41 72 72 61 79 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 #Arrays">Arrays</a></li>.<li><a.
17340 68 72 65 66 3d 22 23 53 6c 69 63 65 73 22 3e 53 6c 69 63 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c href="#Slices">Slices</a></li>.<
17360 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 69 66 22 3e 69 /ul>...............<h1.id="if">i
17380 66 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 69 66 f</h1>........<p.class="file">if
173a0 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2f .zig</p><pre><code.class="zig">/
173c0 2f 20 49 66 20 65 78 70 72 65 73 73 69 6f 6e 73 20 68 61 76 65 20 74 68 72 65 65 20 75 73 65 73 /.If.expressions.have.three.uses
173e0 2c 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 74 68 72 65 65 20 74 79 70 ,.corresponding.to.the.three.typ
17400 65 73 3a 0a 2f 2f 20 2a 20 62 6f 6f 6c 0a 2f 2f 20 2a 20 3f 54 0a 2f 2f 20 2a 20 65 72 72 6f 72 es:.//.*.bool.//.*.?T.//.*.error
17420 21 54 0a 0a 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 !T..const.assert.=.@import(&quot
17440 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 74 65 73 74 20 ;std&quot;).debug.assert;..test.
17460 26 71 75 6f 74 3b 69 66 20 62 6f 6f 6c 65 61 6e 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 2f 2f 20 &quot;if.boolean&quot;.{.....//.
17480 49 66 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 65 73 74 20 62 6f 6f 6c 65 61 6e 20 63 6f 6e 64 If.expressions.test.boolean.cond
174a0 69 74 69 6f 6e 73 2e 0a 20 20 20 20 63 6f 6e 73 74 20 61 3a 20 75 33 32 20 3d 20 35 3b 0a 20 20 itions......const.a:.u32.=.5;...
174c0 20 20 63 6f 6e 73 74 20 62 3a 20 75 33 32 20 3d 20 34 3b 0a 20 20 20 20 69 66 20 28 61 20 21 3d ..const.b:.u32.=.4;.....if.(a.!=
174e0 20 62 29 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 74 72 75 65 29 3b 0a 20 20 20 20 .b).{.........assert(true);.....
17500 7d 20 65 6c 73 65 20 69 66 20 28 61 20 3d 3d 20 39 29 20 7b 0a 20 20 20 20 20 20 20 20 75 6e 72 }.else.if.(a.==.9).{.........unr
17520 65 61 63 68 61 62 6c 65 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 75 eachable;.....}.else.{.........u
17540 6e 72 65 61 63 68 61 62 6c 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 49 66 20 65 78 70 nreachable;.....}......//.If.exp
17560 72 65 73 73 69 6f 6e 73 20 61 72 65 20 75 73 65 64 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20 74 ressions.are.used.instead.of.a.t
17580 65 72 6e 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e 2e 0a 20 20 20 20 63 6f 6e 73 74 20 72 65 73 ernary.expression......const.res
175a0 75 6c 74 20 3d 20 69 66 20 28 61 20 21 3d 20 62 29 20 34 37 20 65 6c 73 65 20 33 30 38 39 3b 0a ult.=.if.(a.!=.b).47.else.3089;.
175c0 20 20 20 20 61 73 73 65 72 74 28 72 65 73 75 6c 74 20 3d 3d 20 34 37 29 3b 0a 7d 0a 0a 74 65 73 ....assert(result.==.47);.}..tes
175e0 74 20 26 71 75 6f 74 3b 69 66 20 6e 75 6c 6c 61 62 6c 65 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 t.&quot;if.nullable&quot;.{.....
17600 2f 2f 20 49 66 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 65 73 74 20 66 6f 72 20 6e 75 6c 6c 2e //.If.expressions.test.for.null.
17620 0a 0a 20 20 20 20 63 6f 6e 73 74 20 61 3a 20 3f 75 33 32 20 3d 20 30 3b 0a 20 20 20 20 69 66 20 ......const.a:.?u32.=.0;.....if.
17640 28 61 29 20 7c 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 76 61 6c (a).|value|.{.........assert(val
17660 75 65 20 3d 3d 20 30 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 75 ue.==.0);.....}.else.{.........u
17680 6e 72 65 61 63 68 61 62 6c 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 63 6f 6e 73 74 20 62 3a 20 nreachable;.....}......const.b:.
176a0 3f 75 33 32 20 3d 20 6e 75 6c 6c 3b 0a 20 20 20 20 69 66 20 28 62 29 20 7c 76 61 6c 75 65 7c 20 ?u32.=.null;.....if.(b).|value|.
176c0 7b 0a 20 20 20 20 20 20 20 20 75 6e 72 65 61 63 68 61 62 6c 65 3b 0a 20 20 20 20 7d 20 65 6c 73 {.........unreachable;.....}.els
176e0 65 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 74 72 75 65 29 3b 0a 20 20 20 20 7d 0a e.{.........assert(true);.....}.
17700 0a 20 20 20 20 2f 2f 20 54 68 65 20 65 6c 73 65 20 69 73 20 6e 6f 74 20 72 65 71 75 69 72 65 64 .....//.The.else.is.not.required
17720 2e 0a 20 20 20 20 69 66 20 28 61 29 20 7c 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 61 ......if.(a).|value|.{.........a
17740 73 73 65 72 74 28 76 61 6c 75 65 20 3d 3d 20 30 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f ssert(value.==.0);.....}......//
17760 20 54 6f 20 74 65 73 74 20 61 67 61 69 6e 73 74 20 6e 75 6c 6c 20 6f 6e 6c 79 2c 20 75 73 65 20 .To.test.against.null.only,.use.
17780 74 68 65 20 62 69 6e 61 72 79 20 65 71 75 61 6c 69 74 79 20 6f 70 65 72 61 74 6f 72 2e 0a 20 20 the.binary.equality.operator....
177a0 20 20 69 66 20 28 62 20 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 ..if.(b.==.null).{.........asser
177c0 74 28 74 72 75 65 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 41 63 63 65 73 73 20 74 68 t(true);.....}......//.Access.th
177e0 65 20 76 61 6c 75 65 20 62 79 20 72 65 66 65 72 65 6e 63 65 20 75 73 69 6e 67 20 61 20 70 6f 69 e.value.by.reference.using.a.poi
17800 6e 74 65 72 20 63 61 70 74 75 72 65 2e 0a 20 20 20 20 76 61 72 20 63 3a 20 3f 75 33 32 20 3d 20 nter.capture......var.c:.?u32.=.
17820 33 3b 0a 20 20 20 20 69 66 20 28 63 29 20 7c 2a 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 3;.....if.(c).|*value|.{........
17840 20 2a 76 61 6c 75 65 20 3d 20 32 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 28 63 29 20 7c .*value.=.2;.....}......if.(c).|
17860 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 76 61 6c 75 65 20 3d 3d value|.{.........assert(value.==
17880 20 32 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 75 6e 72 65 61 63 .2);.....}.else.{.........unreac
178a0 68 61 62 6c 65 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 69 66 20 65 72 hable;.....}.}..test.&quot;if.er
178c0 72 6f 72 20 75 6e 69 6f 6e 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 2f 2f 20 49 66 20 65 78 70 72 ror.union&quot;.{.....//.If.expr
178e0 65 73 73 69 6f 6e 73 20 74 65 73 74 20 66 6f 72 20 65 72 72 6f 72 73 2e 0a 20 20 20 20 2f 2f 20 essions.test.for.errors......//.
17900 4e 6f 74 65 20 74 68 65 20 7c 65 72 72 7c 20 63 61 70 74 75 72 65 20 6f 6e 20 74 68 65 20 65 6c Note.the.|err|.capture.on.the.el
17920 73 65 2e 0a 0a 20 20 20 20 63 6f 6e 73 74 20 61 3a 20 65 72 72 6f 72 21 75 33 32 20 3d 20 30 3b se.......const.a:.error!u32.=.0;
17940 0a 20 20 20 20 69 66 20 28 61 29 20 7c 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 61 73 .....if.(a).|value|.{.........as
17960 73 65 72 74 28 76 61 6c 75 65 20 3d 3d 20 30 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7c 65 72 sert(value.==.0);.....}.else.|er
17980 72 7c 20 7b 0a 20 20 20 20 20 20 20 20 75 6e 72 65 61 63 68 61 62 6c 65 3b 0a 20 20 20 20 7d 0a r|.{.........unreachable;.....}.
179a0 0a 20 20 20 20 63 6f 6e 73 74 20 62 3a 20 65 72 72 6f 72 21 75 33 32 20 3d 20 65 72 72 6f 72 2e .....const.b:.error!u32.=.error.
179c0 42 61 64 56 61 6c 75 65 3b 0a 20 20 20 20 69 66 20 28 62 29 20 7c 76 61 6c 75 65 7c 20 7b 0a 20 BadValue;.....if.(b).|value|.{..
179e0 20 20 20 20 20 20 20 75 6e 72 65 61 63 68 61 62 6c 65 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7c .......unreachable;.....}.else.|
17a00 65 72 72 7c 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 65 72 72 20 3d 3d 20 65 72 72 err|.{.........assert(err.==.err
17a20 6f 72 2e 42 61 64 56 61 6c 75 65 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 54 68 65 20 or.BadValue);.....}......//.The.
17a40 65 6c 73 65 20 61 6e 64 20 7c 65 72 72 7c 20 63 61 70 74 75 72 65 20 69 73 20 73 74 72 69 63 74 else.and.|err|.capture.is.strict
17a60 6c 79 20 72 65 71 75 69 72 65 64 2e 0a 20 20 20 20 69 66 20 28 61 29 20 7c 76 61 6c 75 65 7c 20 ly.required......if.(a).|value|.
17a80 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 76 61 6c 75 65 20 3d 3d 20 30 29 3b 0a 20 20 {.........assert(value.==.0);...
17aa0 20 20 7d 20 65 6c 73 65 20 7c 5f 7c 20 7b 7d 0a 0a 20 20 20 20 2f 2f 20 54 6f 20 63 68 65 63 6b ..}.else.|_|.{}......//.To.check
17ac0 20 6f 6e 6c 79 20 74 68 65 20 65 72 72 6f 72 20 76 61 6c 75 65 2c 20 75 73 65 20 61 6e 20 65 6d .only.the.error.value,.use.an.em
17ae0 70 74 79 20 62 6c 6f 63 6b 20 65 78 70 72 65 73 73 69 6f 6e 2e 0a 20 20 20 20 69 66 20 28 62 29 pty.block.expression......if.(b)
17b00 20 7c 5f 7c 20 7b 7d 20 65 6c 73 65 20 7c 65 72 72 7c 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 .|_|.{}.else.|err|.{.........ass
17b20 65 72 74 28 65 72 72 20 3d 3d 20 65 72 72 6f 72 2e 42 61 64 56 61 6c 75 65 29 3b 0a 20 20 20 20 ert(err.==.error.BadValue);.....
17b40 7d 0a 0a 20 20 20 20 2f 2f 20 41 63 63 65 73 73 20 74 68 65 20 76 61 6c 75 65 20 62 79 20 72 65 }......//.Access.the.value.by.re
17b60 66 65 72 65 6e 63 65 20 75 73 69 6e 67 20 61 20 70 6f 69 6e 74 65 72 20 63 61 70 74 75 72 65 2e ference.using.a.pointer.capture.
17b80 0a 20 20 20 20 76 61 72 20 63 3a 20 65 72 72 6f 72 21 75 33 32 20 3d 20 33 3b 0a 20 20 20 20 69 .....var.c:.error!u32.=.3;.....i
17ba0 66 20 28 63 29 20 7c 2a 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 2a 76 61 6c 75 65 20 f.(c).|*value|.{.........*value.
17bc0 3d 20 39 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7c 65 72 72 7c 20 7b 0a 20 20 20 20 20 20 20 20 =.9;.....}.else.|err|.{.........
17be0 75 6e 72 65 61 63 68 61 62 6c 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 28 63 29 20 7c unreachable;.....}......if.(c).|
17c00 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 76 61 6c 75 65 20 3d 3d value|.{.........assert(value.==
17c20 20 39 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7c 65 72 72 7c 20 7b 0a 20 20 20 20 20 20 20 20 .9);.....}.else.|err|.{.........
17c40 75 6e 72 65 61 63 68 61 62 6c 65 3b 0a 20 20 20 20 7d 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 unreachable;.....}.}</code></pre
17c60 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 ><pre><code.class="shell">$.zig.
17c80 74 65 73 74 20 69 66 2e 7a 69 67 0a 54 65 73 74 20 31 2f 33 20 69 66 20 62 6f 6f 6c 65 61 6e 2e test.if.zig.Test.1/3.if.boolean.
17ca0 2e 2e 4f 4b 0a 54 65 73 74 20 32 2f 33 20 69 66 20 6e 75 6c 6c 61 62 6c 65 2e 2e 2e 4f 4b 0a 54 ..OK.Test.2/3.if.nullable...OK.T
17cc0 65 73 74 20 33 2f 33 20 69 66 20 65 72 72 6f 72 20 75 6e 69 6f 6e 2e 2e 2e 4f 4b 0a 3c 2f 63 6f est.3/3.if.error.union...OK.</co
17ce0 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 de></pre>........<p>See.also:</p
17d00 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 4e 75 6c 6c 61 62 6c 65 73 22 3e 4e ><ul>.<li><a.href="#Nullables">N
17d20 75 6c 6c 61 62 6c 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 ullables</a></li>.<li><a.href="#
17d40 45 72 72 6f 72 73 22 3e 45 72 72 6f 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 Errors">Errors</a></li>.</ul>...
17d60 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 64 65 66 65 72 22 3e 64 65 66 65 72 ............<h1.id="defer">defer
17d80 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 64 65 66 </h1>........<p.class="file">def
17da0 65 72 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 er.zig</p><pre><code.class="zig"
17dc0 3e 63 6f 6e 73 74 20 73 74 64 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 >const.std.=.@import(&quot;std&q
17de0 75 6f 74 3b 29 3b 0a 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 73 74 64 2e 64 65 62 75 67 2e uot;);.const.assert.=.std.debug.
17e00 61 73 73 65 72 74 3b 0a 63 6f 6e 73 74 20 77 61 72 6e 20 3d 20 73 74 64 2e 64 65 62 75 67 2e 77 assert;.const.warn.=.std.debug.w
17e20 61 72 6e 3b 0a 0a 2f 2f 20 64 65 66 65 72 20 77 69 6c 6c 20 65 78 65 63 75 74 65 20 61 6e 20 65 arn;..//.defer.will.execute.an.e
17e40 78 70 72 65 73 73 69 6f 6e 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 63 75 72 72 xpression.at.the.end.of.the.curr
17e60 65 6e 74 20 73 63 6f 70 65 2e 0a 66 6e 20 64 65 66 65 72 45 78 61 6d 70 6c 65 28 29 20 75 73 69 ent.scope..fn.deferExample().usi
17e80 7a 65 20 7b 0a 20 20 20 20 76 61 72 20 61 3a 20 75 73 69 7a 65 20 3d 20 31 3b 0a 0a 20 20 20 20 ze.{.....var.a:.usize.=.1;......
17ea0 7b 0a 20 20 20 20 20 20 20 20 64 65 66 65 72 20 61 20 3d 20 32 3b 0a 20 20 20 20 20 20 20 20 61 {.........defer.a.=.2;.........a
17ec0 20 3d 20 31 3b 0a 20 20 20 20 7d 0a 20 20 20 20 61 73 73 65 72 74 28 61 20 3d 3d 20 32 29 3b 0a .=.1;.....}.....assert(a.==.2);.
17ee0 0a 20 20 20 20 61 20 3d 20 35 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 61 3b 0a 7d 0a 0a 74 65 73 .....a.=.5;.....return.a;.}..tes
17f00 74 20 26 71 75 6f 74 3b 64 65 66 65 72 20 62 61 73 69 63 73 26 71 75 6f 74 3b 20 7b 0a 20 20 20 t.&quot;defer.basics&quot;.{....
17f20 20 61 73 73 65 72 74 28 64 65 66 65 72 45 78 61 6d 70 6c 65 28 29 20 3d 3d 20 35 29 3b 0a 7d 0a .assert(deferExample().==.5);.}.
17f40 0a 2f 2f 20 49 66 20 6d 75 6c 74 69 70 6c 65 20 64 65 66 65 72 20 73 74 61 74 65 6d 65 6e 74 73 .//.If.multiple.defer.statements
17f60 20 61 72 65 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 79 20 77 69 6c 6c 20 62 65 20 65 78 65 .are.specified,.they.will.be.exe
17f80 63 75 74 65 64 20 69 6e 0a 2f 2f 20 74 68 65 20 72 65 76 65 72 73 65 20 6f 72 64 65 72 20 74 68 cuted.in.//.the.reverse.order.th
17fa0 65 79 20 77 65 72 65 20 72 75 6e 2e 0a 66 6e 20 64 65 66 65 72 55 6e 77 69 6e 64 45 78 61 6d 70 ey.were.run..fn.deferUnwindExamp
17fc0 6c 65 28 29 20 76 6f 69 64 20 7b 0a 20 20 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 5c 6e 26 71 75 le().void.{.....warn(&quot;\n&qu
17fe0 6f 74 3b 29 3b 0a 0a 20 20 20 20 64 65 66 65 72 20 7b 0a 20 20 20 20 20 20 20 20 77 61 72 6e 28 ot;);......defer.{.........warn(
18000 26 71 75 6f 74 3b 31 20 26 71 75 6f 74 3b 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 64 65 66 65 72 &quot;1.&quot;);.....}.....defer
18020 20 7b 0a 20 20 20 20 20 20 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 32 20 26 71 75 6f 74 3b 29 3b .{.........warn(&quot;2.&quot;);
18040 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 28 66 61 6c 73 65 29 20 7b 0a 20 20 20 20 20 20 20 20 .....}.....if.(false).{.........
18060 2f 2f 20 64 65 66 65 72 73 20 61 72 65 20 6e 6f 74 20 72 75 6e 20 69 66 20 74 68 65 79 20 61 72 //.defers.are.not.run.if.they.ar
18080 65 20 6e 65 76 65 72 20 65 78 65 63 75 74 65 64 2e 0a 20 20 20 20 20 20 20 20 64 65 66 65 72 20 e.never.executed..........defer.
180a0 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 33 20 26 71 75 6f 74 {.............warn(&quot;3.&quot
180c0 3b 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f ;);.........}.....}.}..test.&quo
180e0 74 3b 64 65 66 65 72 20 75 6e 77 69 6e 64 69 6e 67 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 64 65 t;defer.unwinding&quot;.{.....de
18100 66 65 72 55 6e 77 69 6e 64 45 78 61 6d 70 6c 65 28 29 3b 0a 7d 0a 0a 2f 2f 20 54 68 65 20 65 72 ferUnwindExample();.}..//.The.er
18120 72 64 65 66 65 72 20 6b 65 79 77 6f 72 64 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 64 65 66 rdefer.keyword.is.similar.to.def
18140 65 72 2c 20 62 75 74 20 77 69 6c 6c 20 6f 6e 6c 79 20 65 78 65 63 75 74 65 20 69 66 20 74 68 65 er,.but.will.only.execute.if.the
18160 0a 2f 2f 20 73 63 6f 70 65 20 72 65 74 75 72 6e 73 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72 2e .//.scope.returns.with.an.error.
18180 0a 2f 2f 0a 2f 2f 20 54 68 69 73 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 75 73 65 66 75 6c .//.//.This.is.especially.useful
181a0 20 69 6e 20 61 6c 6c 6f 77 69 6e 67 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 63 6c 65 61 6e .in.allowing.a.function.to.clean
181c0 20 75 70 20 70 72 6f 70 65 72 6c 79 0a 2f 2f 20 6f 6e 20 65 72 72 6f 72 2c 20 61 6e 64 20 72 65 .up.properly.//.on.error,.and.re
181e0 70 6c 61 63 65 73 20 67 6f 74 6f 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e 67 20 74 61 63 74 69 places.goto.error.handling.tacti
18200 63 73 20 61 73 20 73 65 65 6e 20 69 6e 20 63 2e 0a 66 6e 20 64 65 66 65 72 45 72 72 6f 72 45 78 cs.as.seen.in.c..fn.deferErrorEx
18220 61 6d 70 6c 65 28 69 73 5f 65 72 72 6f 72 3a 20 62 6f 6f 6c 29 20 21 76 6f 69 64 20 7b 0a 20 20 ample(is_error:.bool).!void.{...
18240 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 5c 6e 73 74 61 72 74 20 6f 66 20 66 75 6e 63 74 69 6f 6e ..warn(&quot;\nstart.of.function
18260 5c 6e 26 71 75 6f 74 3b 29 3b 0a 0a 20 20 20 20 2f 2f 20 54 68 69 73 20 77 69 6c 6c 20 61 6c 77 \n&quot;);......//.This.will.alw
18280 61 79 73 20 62 65 20 65 78 65 63 75 74 65 64 20 6f 6e 20 65 78 69 74 0a 20 20 20 20 64 65 66 65 ays.be.executed.on.exit.....defe
182a0 72 20 7b 0a 20 20 20 20 20 20 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 65 6e 64 20 6f 66 20 66 75 r.{.........warn(&quot;end.of.fu
182c0 6e 63 74 69 6f 6e 5c 6e 26 71 75 6f 74 3b 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 65 72 72 64 nction\n&quot;);.....}......errd
182e0 65 66 65 72 20 7b 0a 20 20 20 20 20 20 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 65 6e 63 6f 75 6e efer.{.........warn(&quot;encoun
18300 74 65 72 65 64 20 61 6e 20 65 72 72 6f 72 21 5c 6e 26 71 75 6f 74 3b 29 3b 0a 20 20 20 20 7d 0a tered.an.error!\n&quot;);.....}.
18320 0a 20 20 20 20 69 66 20 28 69 73 5f 65 72 72 6f 72 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 .....if.(is_error).{.........ret
18340 75 72 6e 20 65 72 72 6f 72 2e 44 65 66 65 72 45 72 72 6f 72 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 74 urn.error.DeferError;.....}.}..t
18360 65 73 74 20 26 71 75 6f 74 3b 65 72 72 64 65 66 65 72 20 75 6e 77 69 6e 64 69 6e 67 26 71 75 6f est.&quot;errdefer.unwinding&quo
18380 74 3b 20 7b 0a 20 20 20 20 5f 20 3d 20 64 65 66 65 72 45 72 72 6f 72 45 78 61 6d 70 6c 65 28 66 t;.{....._.=.deferErrorExample(f
183a0 61 6c 73 65 29 3b 0a 20 20 20 20 5f 20 3d 20 64 65 66 65 72 45 72 72 6f 72 45 78 61 6d 70 6c 65 alse);....._.=.deferErrorExample
183c0 28 74 72 75 65 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 (true);.}</code></pre><pre><code
183e0 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 64 65 66 65 72 2e .class="shell">$.zig.test.defer.
18400 7a 69 67 0a 54 65 73 74 20 31 2f 33 20 64 65 66 65 72 20 62 61 73 69 63 73 2e 2e 2e 4f 4b 0a 54 zig.Test.1/3.defer.basics...OK.T
18420 65 73 74 20 32 2f 33 20 64 65 66 65 72 20 75 6e 77 69 6e 64 69 6e 67 2e 2e 2e 0a 32 20 31 20 4f est.2/3.defer.unwinding....2.1.O
18440 4b 0a 54 65 73 74 20 33 2f 33 20 65 72 72 64 65 66 65 72 20 75 6e 77 69 6e 64 69 6e 67 2e 2e 2e K.Test.3/3.errdefer.unwinding...
18460 0a 73 74 61 72 74 20 6f 66 20 66 75 6e 63 74 69 6f 6e 0a 65 6e 64 20 6f 66 20 66 75 6e 63 74 69 .start.of.function.end.of.functi
18480 6f 6e 0a 0a 73 74 61 72 74 20 6f 66 20 66 75 6e 63 74 69 6f 6e 0a 65 6e 63 6f 75 6e 74 65 72 65 on..start.of.function.encountere
184a0 64 20 61 6e 20 65 72 72 6f 72 21 0a 65 6e 64 20 6f 66 20 66 75 6e 63 74 69 6f 6e 0a 4f 4b 0a 3c d.an.error!.end.of.function.OK.<
184c0 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a /code></pre>........<p>See.also:
184e0 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 45 72 72 6f 72 73 22 3e 45 </p><ul>.<li><a.href="#Errors">E
18500 72 72 6f 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 rrors</a></li>.</ul>............
18520 20 20 20 3c 68 31 20 69 64 3d 22 75 6e 72 65 61 63 68 61 62 6c 65 22 3e 75 6e 72 65 61 63 68 61 ...<h1.id="unreachable">unreacha
18540 62 6c 65 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 20 3c 63 6f ble</h1>........<p>.......In.<co
18560 64 65 3e 44 65 62 75 67 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 3c 63 6f 64 65 3e 52 65 6c 65 61 73 de>Debug</code>.and.<code>Releas
18580 65 53 61 66 65 3c 2f 63 6f 64 65 3e 20 6d 6f 64 65 2c 20 61 6e 64 20 77 68 65 6e 20 75 73 69 6e eSafe</code>.mode,.and.when.usin
185a0 67 20 3c 63 6f 64 65 3e 7a 69 67 20 74 65 73 74 3c 2f 63 6f 64 65 3e 2c 0a 20 20 20 20 20 20 3c g.<code>zig.test</code>,.......<
185c0 63 6f 64 65 3e 75 6e 72 65 61 63 68 61 62 6c 65 3c 2f 63 6f 64 65 3e 20 65 6d 69 74 73 20 61 20 code>unreachable</code>.emits.a.
185e0 63 61 6c 6c 20 74 6f 20 3c 63 6f 64 65 3e 70 61 6e 69 63 3c 2f 63 6f 64 65 3e 20 77 69 74 68 20 call.to.<code>panic</code>.with.
18600 74 68 65 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 65 3e 72 65 61 63 68 65 64 20 75 6e 72 65 61 63 the.message.<code>reached.unreac
18620 68 61 62 6c 65 20 63 6f 64 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 hable.code</code>........</p>...
18640 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 20 3c 63 6f 64 65 3e 52 65 6c 65 61 73 65 46 61 ....<p>.......In.<code>ReleaseFa
18660 73 74 3c 2f 63 6f 64 65 3e 20 6d 6f 64 65 2c 20 74 68 65 20 6f 70 74 69 6d 69 7a 65 72 20 75 73 st</code>.mode,.the.optimizer.us
18680 65 73 20 74 68 65 20 61 73 73 75 6d 70 74 69 6f 6e 20 74 68 61 74 20 3c 63 6f 64 65 3e 75 6e 72 es.the.assumption.that.<code>unr
186a0 65 61 63 68 61 62 6c 65 3c 2f 63 6f 64 65 3e 20 63 6f 64 65 0a 20 20 20 20 20 20 77 69 6c 6c 20 eachable</code>.code.......will.
186c0 6e 65 76 65 72 20 62 65 20 68 69 74 20 74 6f 20 70 65 72 66 6f 72 6d 20 6f 70 74 69 6d 69 7a 61 never.be.hit.to.perform.optimiza
186e0 74 69 6f 6e 73 2e 20 48 6f 77 65 76 65 72 2c 20 3c 63 6f 64 65 3e 7a 69 67 20 74 65 73 74 3c 2f tions..However,.<code>zig.test</
18700 63 6f 64 65 3e 20 65 76 65 6e 20 69 6e 20 3c 63 6f 64 65 3e 52 65 6c 65 61 73 65 46 61 73 74 3c code>.even.in.<code>ReleaseFast<
18720 2f 63 6f 64 65 3e 20 6d 6f 64 65 0a 20 20 20 20 20 20 73 74 69 6c 6c 20 65 6d 69 74 73 20 3c 63 /code>.mode.......still.emits.<c
18740 6f 64 65 3e 75 6e 72 65 61 63 68 61 62 6c 65 3c 2f 63 6f 64 65 3e 20 61 73 20 63 61 6c 6c 73 20 ode>unreachable</code>.as.calls.
18760 74 6f 20 3c 63 6f 64 65 3e 70 61 6e 69 63 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 to.<code>panic</code>........</p
18780 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 42 61 73 69 63 73 22 3e 42 61 73 69 63 73 3c 2f >.......<h2.id="Basics">Basics</
187a0 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e h2>........<p.class="file">test.
187c0 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2f 2f zig</p><pre><code.class="zig">//
187e0 20 75 6e 72 65 61 63 68 61 62 6c 65 20 69 73 20 75 73 65 64 20 74 6f 20 61 73 73 65 72 74 20 74 .unreachable.is.used.to.assert.t
18800 68 61 74 20 63 6f 6e 74 72 6f 6c 20 66 6c 6f 77 20 77 69 6c 6c 20 6e 65 76 65 72 20 68 61 70 70 hat.control.flow.will.never.happ
18820 65 6e 20 75 70 6f 6e 20 61 0a 2f 2f 20 70 61 72 74 69 63 75 6c 61 72 20 6c 6f 63 61 74 69 6f 6e en.upon.a.//.particular.location
18840 3a 0a 74 65 73 74 20 26 71 75 6f 74 3b 62 61 73 69 63 20 6d 61 74 68 26 71 75 6f 74 3b 20 7b 0a :.test.&quot;basic.math&quot;.{.
18860 20 20 20 20 63 6f 6e 73 74 20 78 20 3d 20 31 3b 0a 20 20 20 20 63 6f 6e 73 74 20 79 20 3d 20 32 ....const.x.=.1;.....const.y.=.2
18880 3b 0a 20 20 20 20 69 66 20 28 78 20 2b 20 79 20 21 3d 20 33 29 20 7b 0a 20 20 20 20 20 20 20 20 ;.....if.(x.+.y.!=.3).{.........
188a0 75 6e 72 65 61 63 68 61 62 6c 65 3b 0a 20 20 20 20 7d 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 unreachable;.....}.}</code></pre
188c0 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 ><pre><code.class="shell">$.zig.
188e0 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 62 61 73 69 63 20 6d 61 74 test.test.zig.Test.1/1.basic.mat
18900 68 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 49 h...OK.</code></pre>........<p>I
18920 6e 20 66 61 63 74 2c 20 74 68 69 73 20 69 73 20 68 6f 77 20 61 73 73 65 72 74 20 69 73 20 69 6d n.fact,.this.is.how.assert.is.im
18940 70 6c 65 6d 65 6e 74 65 64 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 plemented:</p>.......<p.class="f
18960 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 ile">test.zig</p><pre><code.clas
18980 73 3d 22 7a 69 67 22 3e 66 6e 20 61 73 73 65 72 74 28 6f 6b 3a 20 62 6f 6f 6c 29 20 76 6f 69 64 s="zig">fn.assert(ok:.bool).void
189a0 20 7b 0a 20 20 20 20 69 66 20 28 21 6f 6b 29 20 75 6e 72 65 61 63 68 61 62 6c 65 3b 20 2f 2f 20 .{.....if.(!ok).unreachable;.//.
189c0 61 73 73 65 72 74 69 6f 6e 20 66 61 69 6c 75 72 65 0a 7d 0a 0a 2f 2f 20 54 68 69 73 20 74 65 73 assertion.failure.}..//.This.tes
189e0 74 20 77 69 6c 6c 20 66 61 69 6c 20 62 65 63 61 75 73 65 20 77 65 20 68 69 74 20 75 6e 72 65 61 t.will.fail.because.we.hit.unrea
18a00 63 68 61 62 6c 65 2e 0a 74 65 73 74 20 26 71 75 6f 74 3b 74 68 69 73 20 77 69 6c 6c 20 66 61 69 chable..test.&quot;this.will.fai
18a20 6c 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 66 61 6c 73 65 29 3b 0a 7d 3c 2f l&quot;.{.....assert(false);.}</
18a40 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 code></pre><pre><code.class="she
18a60 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 ll">$.zig.test.test.zig.Test.1/1
18a80 20 74 68 69 73 20 77 69 6c 6c 20 66 61 69 6c 2e 2e 2e 72 65 61 63 68 65 64 20 75 6e 72 65 61 63 .this.will.fail...reached.unreac
18aa0 68 61 62 6c 65 20 63 6f 64 65 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 37 5f 31 22 3e 2f hable.code.<span.class="t37_1">/
18ac0 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 home/andy/dev/zig/docgen_tmp/tes
18ae0 74 2e 7a 69 67 3a 32 3a 31 34 3c 2f 73 70 61 6e 3e 3a 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 t.zig:2:14</span>:.<span.class="
18b00 74 32 5f 30 22 3e 30 78 32 30 33 38 33 39 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 t2_0">0x203839.in.???.(test)</sp
18b20 61 6e 3e 0a 20 20 20 20 69 66 20 28 21 6f 6b 29 20 75 6e 72 65 61 63 68 61 62 6c 65 3b 20 2f 2f an>.....if.(!ok).unreachable;.//
18b40 20 61 73 73 65 72 74 69 6f 6e 20 66 61 69 6c 75 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .assertion.failure..............
18b60 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 <span.class="t32_1">^</span>.<sp
18b80 61 6e 20 63 6c 61 73 73 3d 22 74 33 37 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f an.class="t37_1">/home/andy/dev/
18ba0 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 37 3a 31 31 3c 2f 73 70 zig/docgen_tmp/test.zig:7:11</sp
18bc0 61 6e 3e 3a 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 30 33 36 35 62 an>:.<span.class="t2_0">0x20365b
18be0 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 61 73 73 65 72 74 .in.???.(test)</span>.....assert
18c00 28 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 (false);...........<span.class="
18c20 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 37 t32_1">^</span>.<span.class="t37
18c40 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 _1">/home/andy/dev/zig/build/lib
18c60 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 74 65 73 74 5f 72 75 6e 6e 65 72 2e 7a 69 67 /zig/std/special/test_runner.zig
18c80 3a 31 31 3a 32 35 3c 2f 73 70 61 6e 3e 3a 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 :11:25</span>:.<span.class="t2_0
18ca0 22 3e 30 78 32 31 64 34 38 38 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a ">0x21d488.in.???.(test)</span>.
18cc0 20 20 20 20 20 20 20 20 74 72 79 20 74 65 73 74 5f 66 6e 2e 66 75 6e 63 28 29 3b 0a 20 20 20 20 ........try.test_fn.func();.....
18ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d ....................<span.class=
18d00 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 "t32_1">^</span>.<span.class="t3
18d20 37 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 7_1">/home/andy/dev/zig/build/li
18d40 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 2e 7a 69 67 3a b/zig/std/special/bootstrap.zig:
18d60 38 35 3a 32 32 3c 2f 73 70 61 6e 3e 3a 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 85:22</span>:.<span.class="t2_0"
18d80 3e 30 78 32 31 64 32 38 62 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 >0x21d28b.in.???.(test)</span>..
18da0 20 20 20 20 20 20 20 20 20 20 20 72 6f 6f 74 2e 6d 61 69 6e 28 29 20 63 61 74 63 68 20 7c 65 72 ...........root.main().catch.|er
18dc0 72 7c 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 r|.{......................<span.
18de0 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 class="t32_1">^</span>.<span.cla
18e00 73 73 3d 22 74 33 37 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 ss="t37_1">/home/andy/dev/zig/bu
18e20 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 ild/lib/zig/std/special/bootstra
18e40 70 2e 7a 69 67 3a 36 32 3a 32 30 3c 2f 73 70 61 6e 3e 3a 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d p.zig:62:20</span>:.<span.class=
18e60 22 74 32 5f 30 22 3e 30 78 32 31 64 31 65 62 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 3c 2f 73 "t2_0">0x21d1eb.in.???.(test)</s
18e80 70 61 6e 3e 0a 20 20 20 20 72 65 74 75 72 6e 20 63 61 6c 6c 4d 61 69 6e 28 29 3b 0a 20 20 20 20 pan>.....return.callMain();.....
18ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f ...............<span.class="t32_
18ec0 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 37 5f 31 22 3e 1">^</span>.<span.class="t37_1">
18ee0 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 /home/andy/dev/zig/build/lib/zig
18f00 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 2e 7a 69 67 3a 35 32 3a 33 39 /std/special/bootstrap.zig:52:39
18f20 3c 2f 73 70 61 6e 3e 3a 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 31 </span>:.<span.class="t2_0">0x21
18f40 64 30 37 63 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 73 74 d07c.in.???.(test)</span>.....st
18f60 64 2e 6f 73 2e 70 6f 73 69 78 2e 65 78 69 74 28 63 61 6c 6c 4d 61 69 6e 57 69 74 68 41 72 67 73 d.os.posix.exit(callMainWithArgs
18f80 28 61 72 67 63 2c 20 61 72 67 76 2c 20 65 6e 76 70 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 (argc,.argv,.envp));............
18fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e ...........................<span
18fc0 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c .class="t32_1">^</span>.<span.cl
18fe0 61 73 73 3d 22 74 33 37 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 ass="t37_1">/home/andy/dev/zig/b
19000 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 uild/lib/zig/std/special/bootstr
19020 61 70 2e 7a 69 67 3a 33 39 3a 35 3c 2f 73 70 61 6e 3e 3a 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d ap.zig:39:5</span>:.<span.class=
19040 22 74 32 5f 30 22 3e 30 78 32 31 64 30 30 30 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 3c 2f 73 "t2_0">0x21d000.in.???.(test)</s
19060 70 61 6e 3e 0a 20 20 20 20 40 6e 6f 49 6e 6c 69 6e 65 43 61 6c 6c 28 70 6f 73 69 78 43 61 6c 6c pan>.....@noInlineCall(posixCall
19080 4d 61 69 6e 41 6e 64 45 78 69 74 29 3b 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 MainAndExit);.....<span.class="t
190a0 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 0a 54 65 73 74 73 20 66 61 69 6c 65 64 2e 20 55 73 32_1">^</span>..Tests.failed..Us
190c0 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 72 65 70 72 6f e.the.following.command.to.repro
190e0 64 75 63 65 20 74 68 65 20 66 61 69 6c 75 72 65 3a 0a 2e 2f 7a 69 67 2d 63 61 63 68 65 2f 74 65 duce.the.failure:../zig-cache/te
19100 73 74 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c st.</code></pre>...............<
19120 68 32 20 69 64 3d 22 41 74 2d 43 6f 6d 70 69 6c 65 2d 54 69 6d 65 22 3e 41 74 20 43 6f 6d 70 69 h2.id="At-Compile-Time">At.Compi
19140 6c 65 2d 54 69 6d 65 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 le-Time</h2>........<p.class="fi
19160 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 le">test.zig</p><pre><code.class
19180 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 ="zig">const.assert.=.@import(&q
191a0 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 74 65 uot;std&quot;).debug.assert;..te
191c0 73 74 20 26 71 75 6f 74 3b 74 79 70 65 20 6f 66 20 75 6e 72 65 61 63 68 61 62 6c 65 26 71 75 6f st.&quot;type.of.unreachable&quo
191e0 74 3b 20 7b 0a 20 20 20 20 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 54 t;.{.....comptime.{.........//.T
19200 68 65 20 74 79 70 65 20 6f 66 20 75 6e 72 65 61 63 68 61 62 6c 65 20 69 73 20 6e 6f 72 65 74 75 he.type.of.unreachable.is.noretu
19220 72 6e 2e 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 48 6f 77 65 76 65 72 20 74 68 69 73 20 61 73 73 rn...........//.However.this.ass
19240 65 72 74 69 6f 6e 20 77 69 6c 6c 20 73 74 69 6c 6c 20 66 61 69 6c 20 62 65 63 61 75 73 65 0a 20 ertion.will.still.fail.because..
19260 20 20 20 20 20 20 20 2f 2f 20 65 76 61 6c 75 61 74 69 6e 67 20 75 6e 72 65 61 63 68 61 62 6c 65 .......//.evaluating.unreachable
19280 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 69 73 20 61 20 63 6f 6d 70 69 6c 65 20 65 72 .at.compile-time.is.a.compile.er
192a0 72 6f 72 2e 0a 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 75 6e 72 ror...........assert(@typeOf(unr
192c0 65 61 63 68 61 62 6c 65 29 20 3d 3d 20 6e 6f 72 65 74 75 72 6e 29 3b 0a 20 20 20 20 7d 0a 7d 3c eachable).==.noreturn);.....}.}<
192e0 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 /code></pre><pre><code.class="sh
19300 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 3c 73 70 61 6e 20 63 ell">$.zig.test.test.zig.<span.c
19320 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 lass="t0_1">/home/andy/dev/zig/d
19340 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 31 30 3a 31 36 3a 20 3c 2f 73 70 61 6e ocgen_tmp/test.zig:10:16:.</span
19360 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 ><span.class="t31_1">error:</spa
19380 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 75 6e 72 65 61 63 68 61 62 6c n><span.class="t0_1">.unreachabl
193a0 65 20 63 6f 64 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 40 74 79 e.code</span>.........assert(@ty
193c0 70 65 4f 66 28 75 6e 72 65 61 63 68 61 62 6c 65 29 20 3d 3d 20 6e 6f 72 65 74 75 72 6e 29 3b 0a peOf(unreachable).==.noreturn);.
193e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f ...............<span.class="t32_
19400 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 1">^</span>.</code></pre>.......
19420 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 .<p>See.also:</p><ul>.<li><a.hre
19440 66 3d 22 23 5a 69 67 2d 54 65 73 74 22 3e 5a 69 67 20 54 65 73 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a f="#Zig-Test">Zig.Test</a></li>.
19460 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 42 75 69 6c 64 2d 4d 6f 64 65 22 3e 42 75 69 6c 64 20 <li><a.href="#Build-Mode">Build.
19480 4d 6f 64 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 6f 6d 70 Mode</a></li>.<li><a.href="#comp
194a0 74 69 6d 65 22 3e 63 6f 6d 70 74 69 6d 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 time">comptime</a></li>.</ul>...
194c0 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 6e 6f 72 65 74 ...................<h1.id="noret
194e0 75 72 6e 22 3e 6e 6f 72 65 74 75 72 6e 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 urn">noreturn</h1>........<p>...
19500 20 20 20 20 3c 63 6f 64 65 3e 6e 6f 72 65 74 75 72 6e 3c 2f 63 6f 64 65 3e 20 69 73 20 74 68 65 ....<code>noreturn</code>.is.the
19520 20 74 79 70 65 20 6f 66 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a .type.of:.......</p>.......<ul>.
19540 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 62 72 65 61 6b 3c 2f 63 6f 64 65 3e 3c 2f ........<li><code>break</code></
19560 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 63 6f 6e 74 69 6e 75 65 3c 2f li>.........<li><code>continue</
19580 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 72 65 74 code></li>.........<li><code>ret
195a0 75 72 6e 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 urn</code></li>.........<li><cod
195c0 65 3e 75 6e 72 65 61 63 68 61 62 6c 65 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 e>unreachable</code></li>.......
195e0 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 77 68 69 6c 65 20 28 74 72 75 65 29 20 7b 7d 3c 2f 63 6f 64 ..<li><code>while.(true).{}</cod
19600 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 57 68 65 e></li>.......</ul>.......<p>Whe
19620 6e 20 72 65 73 6f 6c 76 69 6e 67 20 74 79 70 65 73 20 74 6f 67 65 74 68 65 72 2c 20 73 75 63 68 n.resolving.types.together,.such
19640 20 61 73 20 3c 63 6f 64 65 3e 69 66 3c 2f 63 6f 64 65 3e 20 63 6c 61 75 73 65 73 20 6f 72 20 3c .as.<code>if</code>.clauses.or.<
19660 63 6f 64 65 3e 73 77 69 74 63 68 3c 2f 63 6f 64 65 3e 20 70 72 6f 6e 67 73 2c 0a 20 20 20 20 20 code>switch</code>.prongs,......
19680 20 74 68 65 20 3c 63 6f 64 65 3e 6e 6f 72 65 74 75 72 6e 3c 2f 63 6f 64 65 3e 20 74 79 70 65 20 .the.<code>noreturn</code>.type.
196a0 69 73 20 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68 20 65 76 65 72 79 20 6f 74 68 65 72 20 74 is.compatible.with.every.other.t
196c0 79 70 65 2e 20 43 6f 6e 73 69 64 65 72 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 ype..Consider:.......</p>.......
196e0 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 <p.class="file">test.zig</p><pre
19700 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 6e 20 66 6f 6f 28 63 6f 6e 64 69 74 ><code.class="zig">fn.foo(condit
19720 69 6f 6e 3a 20 62 6f 6f 6c 2c 20 62 3a 20 75 33 32 29 20 76 6f 69 64 20 7b 0a 20 20 20 20 63 6f ion:.bool,.b:.u32).void.{.....co
19740 6e 73 74 20 61 20 3d 20 69 66 20 28 63 6f 6e 64 69 74 69 6f 6e 29 20 62 20 65 6c 73 65 20 72 65 nst.a.=.if.(condition).b.else.re
19760 74 75 72 6e 3b 0a 20 20 20 20 40 70 61 6e 69 63 28 26 71 75 6f 74 3b 64 6f 20 73 6f 6d 65 74 68 turn;.....@panic(&quot;do.someth
19780 69 6e 67 20 77 69 74 68 20 61 26 71 75 6f 74 3b 29 3b 0a 7d 0a 74 65 73 74 20 26 71 75 6f 74 3b ing.with.a&quot;);.}.test.&quot;
197a0 6e 6f 72 65 74 75 72 6e 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 66 6f 6f 28 66 61 6c 73 65 2c 20 noreturn&quot;.{.....foo(false,.
197c0 31 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 1);.}</code></pre><pre><code.cla
197e0 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 54 ss="shell">$.zig.test.test.zig.T
19800 65 73 74 20 31 2f 31 20 6e 6f 72 65 74 75 72 6e 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 est.1/1.noreturn...OK.</code></p
19820 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 41 6e 6f 74 68 65 72 20 75 73 65 20 63 61 73 65 20 66 re>........<p>Another.use.case.f
19840 6f 72 20 3c 63 6f 64 65 3e 6e 6f 72 65 74 75 72 6e 3c 2f 63 6f 64 65 3e 20 69 73 20 74 68 65 20 or.<code>noreturn</code>.is.the.
19860 3c 63 6f 64 65 3e 65 78 69 74 3c 2f 63 6f 64 65 3e 20 66 75 6e 63 74 69 6f 6e 3a 3c 2f 70 3e 0a <code>exit</code>.function:</p>.
19880 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f ......<p.class="file">test.zig</
198a0 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 70 75 62 20 65 78 74 p><pre><code.class="zig">pub.ext
198c0 65 72 6e 20 26 71 75 6f 74 3b 6b 65 72 6e 65 6c 33 32 26 71 75 6f 74 3b 20 73 74 64 63 61 6c 6c ern.&quot;kernel32&quot;.stdcall
198e0 63 63 20 66 6e 20 45 78 69 74 50 72 6f 63 65 73 73 28 65 78 69 74 5f 63 6f 64 65 3a 20 63 5f 75 cc.fn.ExitProcess(exit_code:.c_u
19900 69 6e 74 29 20 6e 6f 72 65 74 75 72 6e 3b 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 66 6f 6f 26 71 int).noreturn;..test.&quot;foo&q
19920 75 6f 74 3b 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 76 61 6c 75 65 20 3d 20 62 61 72 28 29 20 63 uot;.{.....const.value.=.bar().c
19940 61 74 63 68 20 45 78 69 74 50 72 6f 63 65 73 73 28 31 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 atch.ExitProcess(1);.....assert(
19960 76 61 6c 75 65 20 3d 3d 20 31 32 33 34 29 3b 0a 7d 0a 0a 66 6e 20 62 61 72 28 29 20 65 72 72 6f value.==.1234);.}..fn.bar().erro
19980 72 21 75 33 32 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 31 32 33 34 3b 0a 7d 0a 0a 63 6f 6e 73 r!u32.{.....return.1234;.}..cons
199a0 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f t.assert.=.@import(&quot;std&quo
199c0 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 t;).debug.assert;</code></pre><p
199e0 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 re><code.class="shell">$.zig.tes
19a00 74 20 74 65 73 74 2e 7a 69 67 0a 43 72 65 61 74 65 64 20 2e 2f 7a 69 67 2d 63 61 63 68 65 2f 74 t.test.zig.Created../zig-cache/t
19a20 65 73 74 2e 65 78 65 20 62 75 74 20 73 6b 69 70 70 69 6e 67 20 65 78 65 63 75 74 69 6f 6e 20 62 est.exe.but.skipping.execution.b
19a40 65 63 61 75 73 65 20 69 74 20 69 73 20 6e 6f 6e 2d 6e 61 74 69 76 65 2e 0a 3c 2f 63 6f 64 65 3e ecause.it.is.non-native..</code>
19a60 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 46 75 6e </pre>...............<h1.id="Fun
19a80 63 74 69 6f 6e 73 22 3e 46 75 6e 63 74 69 6f 6e 73 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 ctions">Functions</h1>........<p
19aa0 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 66 75 6e 63 74 69 6f 6e 73 2e 7a 69 67 3c 2f 70 3e 3c .class="file">functions.zig</p><
19ac0 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 pre><code.class="zig">const.asse
19ae0 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 rt.=.@import(&quot;std&quot;).de
19b00 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 2f 2f 20 46 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 64 65 bug.assert;..//.Functions.are.de
19b20 63 6c 61 72 65 64 20 6c 69 6b 65 20 74 68 69 73 0a 66 6e 20 61 64 64 28 61 3a 20 69 38 2c 20 62 clared.like.this.fn.add(a:.i8,.b
19b40 3a 20 69 38 29 20 69 38 20 7b 0a 20 20 20 20 69 66 20 28 61 20 3d 3d 20 30 29 20 7b 0a 20 20 20 :.i8).i8.{.....if.(a.==.0).{....
19b60 20 20 20 20 20 2f 2f 20 59 6f 75 20 63 61 6e 20 73 74 69 6c 6c 20 72 65 74 75 72 6e 20 6d 61 6e .....//.You.can.still.return.man
19b80 75 61 6c 6c 79 20 69 66 20 6e 65 65 64 65 64 2e 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ually.if.needed..........return.
19ba0 62 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 61 20 2b 20 62 3b 0a 7d 0a 0a 2f b;.....}......return.a.+.b;.}../
19bc0 2f 20 54 68 65 20 65 78 70 6f 72 74 20 73 70 65 63 69 66 69 65 72 20 6d 61 6b 65 73 20 61 20 66 /.The.export.specifier.makes.a.f
19be0 75 6e 63 74 69 6f 6e 20 65 78 74 65 72 6e 61 6c 6c 79 20 76 69 73 69 62 6c 65 20 69 6e 20 74 68 unction.externally.visible.in.th
19c00 65 20 67 65 6e 65 72 61 74 65 64 0a 2f 2f 20 6f 62 6a 65 63 74 20 66 69 6c 65 2c 20 61 6e 64 20 e.generated.//.object.file,.and.
19c20 6d 61 6b 65 73 20 69 74 20 75 73 65 20 74 68 65 20 43 20 41 42 49 2e 0a 65 78 70 6f 72 74 20 66 makes.it.use.the.C.ABI..export.f
19c40 6e 20 73 75 62 28 61 3a 20 69 38 2c 20 62 3a 20 69 38 29 20 69 38 20 7b 20 72 65 74 75 72 6e 20 n.sub(a:.i8,.b:.i8).i8.{.return.
19c60 61 20 2d 20 62 3b 20 7d 0a 0a 2f 2f 20 54 68 65 20 65 78 74 65 72 6e 20 73 70 65 63 69 66 69 65 a.-.b;.}..//.The.extern.specifie
19c80 72 20 69 73 20 75 73 65 64 20 74 6f 20 64 65 63 6c 61 72 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 r.is.used.to.declare.a.function.
19ca0 74 68 61 74 20 77 69 6c 6c 20 62 65 20 72 65 73 6f 6c 76 65 64 0a 2f 2f 20 61 74 20 6c 69 6e 6b that.will.be.resolved.//.at.link
19cc0 20 74 69 6d 65 2c 20 77 68 65 6e 20 6c 69 6e 6b 69 6e 67 20 73 74 61 74 69 63 61 6c 6c 79 2c 20 .time,.when.linking.statically,.
19ce0 6f 72 20 61 74 20 72 75 6e 74 69 6d 65 2c 20 77 68 65 6e 20 6c 69 6e 6b 69 6e 67 0a 2f 2f 20 64 or.at.runtime,.when.linking.//.d
19d00 79 6e 61 6d 69 63 61 6c 6c 79 2e 0a 2f 2f 20 54 68 65 20 73 74 64 63 61 6c 6c 63 63 20 73 70 65 ynamically..//.The.stdcallcc.spe
19d20 63 69 66 69 65 72 20 63 68 61 6e 67 65 73 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 cifier.changes.the.calling.conve
19d40 6e 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 2e 0a 65 78 74 65 72 6e 20 26 71 ntion.of.the.function..extern.&q
19d60 75 6f 74 3b 6b 65 72 6e 65 6c 33 32 26 71 75 6f 74 3b 20 73 74 64 63 61 6c 6c 63 63 20 66 6e 20 uot;kernel32&quot;.stdcallcc.fn.
19d80 45 78 69 74 50 72 6f 63 65 73 73 28 65 78 69 74 5f 63 6f 64 65 3a 20 75 33 32 29 20 6e 6f 72 65 ExitProcess(exit_code:.u32).nore
19da0 74 75 72 6e 3b 0a 65 78 74 65 72 6e 20 26 71 75 6f 74 3b 63 26 71 75 6f 74 3b 20 66 6e 20 61 74 turn;.extern.&quot;c&quot;.fn.at
19dc0 61 6e 32 28 61 3a 20 66 36 34 2c 20 62 3a 20 66 36 34 29 20 66 36 34 3b 0a 0a 2f 2f 20 54 68 65 an2(a:.f64,.b:.f64).f64;..//.The
19de0 20 40 73 65 74 43 6f 6c 64 20 62 75 69 6c 74 69 6e 20 74 65 6c 6c 73 20 74 68 65 20 6f 70 74 69 .@setCold.builtin.tells.the.opti
19e00 6d 69 7a 65 72 20 74 68 61 74 20 61 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 72 61 72 65 6c 79 20 mizer.that.a.function.is.rarely.
19e20 63 61 6c 6c 65 64 2e 0a 66 6e 20 61 62 6f 72 74 28 29 20 6e 6f 72 65 74 75 72 6e 20 7b 0a 20 20 called..fn.abort().noreturn.{...
19e40 20 20 40 73 65 74 43 6f 6c 64 28 74 72 75 65 29 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 74 72 75 ..@setCold(true);.....while.(tru
19e60 65 29 20 7b 7d 0a 7d 0a 0a 2f 2f 20 6e 61 6b 65 64 63 63 20 6d 61 6b 65 73 20 61 20 66 75 6e 63 e).{}.}..//.nakedcc.makes.a.func
19e80 74 69 6f 6e 20 6e 6f 74 20 68 61 76 65 20 61 6e 79 20 66 75 6e 63 74 69 6f 6e 20 70 72 6f 6c 6f tion.not.have.any.function.prolo
19ea0 67 75 65 20 6f 72 20 65 70 69 6c 6f 67 75 65 2e 0a 2f 2f 20 54 68 69 73 20 63 61 6e 20 62 65 20 gue.or.epilogue..//.This.can.be.
19ec0 75 73 65 66 75 6c 20 77 68 65 6e 20 69 6e 74 65 67 72 61 74 69 6e 67 20 77 69 74 68 20 61 73 73 useful.when.integrating.with.ass
19ee0 65 6d 62 6c 79 2e 0a 6e 61 6b 65 64 63 63 20 66 6e 20 5f 73 74 61 72 74 28 29 20 6e 6f 72 65 74 embly..nakedcc.fn._start().noret
19f00 75 72 6e 20 7b 0a 20 20 20 20 61 62 6f 72 74 28 29 3b 0a 7d 0a 0a 2f 2f 20 54 68 65 20 70 75 62 urn.{.....abort();.}..//.The.pub
19f20 20 73 70 65 63 69 66 69 65 72 20 61 6c 6c 6f 77 73 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 74 .specifier.allows.the.function.t
19f40 6f 20 62 65 20 76 69 73 69 62 6c 65 20 77 68 65 6e 20 69 6d 70 6f 72 74 69 6e 67 2e 0a 2f 2f 20 o.be.visible.when.importing..//.
19f60 41 6e 6f 74 68 65 72 20 66 69 6c 65 20 63 61 6e 20 75 73 65 20 40 69 6d 70 6f 72 74 20 61 6e 64 Another.file.can.use.@import.and
19f80 20 63 61 6c 6c 20 73 75 62 32 0a 70 75 62 20 66 6e 20 73 75 62 32 28 61 3a 20 69 38 2c 20 62 3a .call.sub2.pub.fn.sub2(a:.i8,.b:
19fa0 20 69 38 29 20 69 38 20 7b 20 72 65 74 75 72 6e 20 61 20 2d 20 62 3b 20 7d 0a 0a 2f 2f 20 46 75 .i8).i8.{.return.a.-.b;.}..//.Fu
19fc0 6e 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 73 20 76 61 6c 75 65 73 20 61 6e nctions.can.be.used.as.values.an
19fe0 64 20 61 72 65 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 70 6f 69 6e 74 65 72 73 2e 0a 63 6f d.are.equivalent.to.pointers..co
1a000 6e 73 74 20 63 61 6c 6c 32 5f 6f 70 20 3d 20 66 6e 20 28 61 3a 20 69 38 2c 20 62 3a 20 69 38 29 nst.call2_op.=.fn.(a:.i8,.b:.i8)
1a020 20 69 38 3b 0a 66 6e 20 64 6f 5f 6f 70 28 66 6e 5f 63 61 6c 6c 3a 20 63 61 6c 6c 32 5f 6f 70 2c .i8;.fn.do_op(fn_call:.call2_op,
1a040 20 6f 70 31 3a 20 69 38 2c 20 6f 70 32 3a 20 69 38 29 20 69 38 20 7b 0a 20 20 20 20 72 65 74 75 .op1:.i8,.op2:.i8).i8.{.....retu
1a060 72 6e 20 66 6e 5f 63 61 6c 6c 28 6f 70 31 2c 20 6f 70 32 29 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 rn.fn_call(op1,.op2);.}..test.&q
1a080 75 6f 74 3b 66 75 6e 63 74 69 6f 6e 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 uot;function&quot;.{.....assert(
1a0a0 64 6f 5f 6f 70 28 61 64 64 2c 20 35 2c 20 36 29 20 3d 3d 20 31 31 29 3b 0a 20 20 20 20 61 73 73 do_op(add,.5,.6).==.11);.....ass
1a0c0 65 72 74 28 64 6f 5f 6f 70 28 73 75 62 32 2c 20 35 2c 20 36 29 20 3d 3d 20 2d 31 29 3b 0a 7d 3c ert(do_op(sub2,.5,.6).==.-1);.}<
1a0e0 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 /code></pre><pre><code.class="sh
1a100 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 66 75 6e 63 74 69 6f 6e 73 2e 7a 69 67 0a 54 65 ell">$.zig.test.functions.zig.Te
1a120 73 74 20 31 2f 31 20 66 75 6e 63 74 69 6f 6e 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 st.1/1.function...OK.</code></pr
1a140 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 46 75 6e 63 74 69 6f 6e 20 76 61 6c 75 65 73 20 61 72 65 e>........<p>Function.values.are
1a160 20 6c 69 6b 65 20 70 6f 69 6e 74 65 72 73 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 .like.pointers:</p>.......<p.cla
1a180 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 ss="file">test.zig</p><pre><code
1a1a0 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 .class="zig">const.assert.=.@imp
1a1c0 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 ort(&quot;std&quot;).debug.asser
1a1e0 74 3b 0a 0a 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f t;..comptime.{.....assert(@typeO
1a200 66 28 66 6f 6f 29 20 3d 3d 20 66 6e 28 29 76 6f 69 64 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 f(foo).==.fn()void);.....assert(
1a220 40 73 69 7a 65 4f 66 28 66 6e 28 29 76 6f 69 64 29 20 3d 3d 20 40 73 69 7a 65 4f 66 28 3f 66 6e @sizeOf(fn()void).==.@sizeOf(?fn
1a240 28 29 76 6f 69 64 29 29 3b 0a 7d 0a 0a 66 6e 20 66 6f 6f 28 29 20 76 6f 69 64 20 7b 20 7d 3c 2f ()void));.}..fn.foo().void.{.}</
1a260 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 code></pre><pre><code.class="she
1a280 6c 6c 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 6f 62 6a 20 74 65 73 74 2e 7a 69 67 3c 2f 63 6f ll">$.zig.build-obj.test.zig</co
1a2a0 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 50 61 73 73 2d 62 79 de></pre>........<h2.id="Pass-by
1a2c0 2d 76 61 6c 75 65 2d 50 61 72 61 6d 65 74 65 72 73 22 3e 50 61 73 73 2d 62 79 2d 76 61 6c 75 65 -value-Parameters">Pass-by-value
1a2e0 20 50 61 72 61 6d 65 74 65 72 73 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 .Parameters</h2>........<p>.....
1a300 20 20 49 6e 20 5a 69 67 2c 20 73 74 72 75 63 74 73 2c 20 75 6e 69 6f 6e 73 2c 20 61 6e 64 20 65 ..In.Zig,.structs,.unions,.and.e
1a320 6e 75 6d 73 20 77 69 74 68 20 70 61 79 6c 6f 61 64 73 20 63 61 6e 6e 6f 74 20 62 65 20 70 61 73 nums.with.payloads.cannot.be.pas
1a340 73 65 64 20 62 79 20 76 61 6c 75 65 0a 20 20 20 20 20 20 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e sed.by.value.......to.a.function
1a360 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c ........</p>.......<p.class="fil
1a380 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d e">test.zig</p><pre><code.class=
1a3a0 22 7a 69 67 22 3e 63 6f 6e 73 74 20 46 6f 6f 20 3d 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 78 "zig">const.Foo.=.struct.{.....x
1a3c0 3a 20 69 33 32 2c 0a 7d 3b 0a 0a 66 6e 20 62 61 72 28 66 6f 6f 3a 20 46 6f 6f 29 20 76 6f 69 64 :.i32,.};..fn.bar(foo:.Foo).void
1a3e0 20 7b 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 70 61 73 73 20 61 67 67 72 65 67 61 74 65 20 74 .{}..test.&quot;pass.aggregate.t
1a400 79 70 65 20 62 79 20 76 61 6c 75 65 20 74 6f 20 66 75 6e 63 74 69 6f 6e 26 71 75 6f 74 3b 20 7b ype.by.value.to.function&quot;.{
1a420 0a 20 20 20 20 62 61 72 28 46 6f 6f 20 7b 2e 78 20 3d 20 31 32 2c 7d 29 3b 0a 7d 3c 2f 63 6f 64 .....bar(Foo.{.x.=.12,});.}</cod
1a440 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 e></pre><pre><code.class="shell"
1a460 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 3c 73 70 61 6e 20 63 6c 61 73 73 >$.zig.test.test.zig.<span.class
1a480 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 ="t0_1">/home/andy/dev/zig/docge
1a4a0 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 31 33 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 n_tmp/test.zig:5:13:.</span><spa
1a4c0 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 6e 3e 3c 73 70 n.class="t31_1">error:</span><sp
1a4e0 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 74 79 70 65 20 27 46 6f 6f 27 20 69 73 20 6e an.class="t0_1">.type.'Foo'.is.n
1a500 6f 74 20 63 6f 70 79 61 62 6c 65 3b 20 63 61 6e 6e 6f 74 20 70 61 73 73 20 62 79 20 76 61 6c 75 ot.copyable;.cannot.pass.by.valu
1a520 65 3c 2f 73 70 61 6e 3e 0a 66 6e 20 62 61 72 28 66 6f 6f 3a 20 46 6f 6f 29 20 76 6f 69 64 20 7b e</span>.fn.bar(foo:.Foo).void.{
1a540 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 }.............<span.class="t32_1
1a560 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 ">^</span>.</code></pre>........
1a580 3c 70 3e 0a 20 20 20 20 20 20 49 6e 73 74 65 61 64 2c 20 6f 6e 65 20 6d 75 73 74 20 75 73 65 20 <p>.......Instead,.one.must.use.
1a5a0 3c 63 6f 64 65 3e 26 61 6d 70 3b 63 6f 6e 73 74 3c 2f 63 6f 64 65 3e 2e 20 5a 69 67 20 61 6c 6c <code>&amp;const</code>..Zig.all
1a5c0 6f 77 73 20 69 6d 70 6c 69 63 69 74 6c 79 20 63 61 73 74 69 6e 67 20 73 6f 6d 65 74 68 69 6e 67 ows.implicitly.casting.something
1a5e0 0a 20 20 20 20 20 20 74 6f 20 61 20 63 6f 6e 73 74 20 70 6f 69 6e 74 65 72 20 74 6f 20 69 74 3a .......to.a.const.pointer.to.it:
1a600 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 .......</p>.......<p.class="file
1a620 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 ">test.zig</p><pre><code.class="
1a640 7a 69 67 22 3e 63 6f 6e 73 74 20 46 6f 6f 20 3d 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 78 3a zig">const.Foo.=.struct.{.....x:
1a660 20 69 33 32 2c 0a 7d 3b 0a 0a 66 6e 20 62 61 72 28 66 6f 6f 3a 20 26 61 6d 70 3b 63 6f 6e 73 74 .i32,.};..fn.bar(foo:.&amp;const
1a680 20 46 6f 6f 29 20 76 6f 69 64 20 7b 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 69 6d 70 6c 69 63 .Foo).void.{}..test.&quot;implic
1a6a0 69 74 6c 79 20 63 61 73 74 20 74 6f 20 63 6f 6e 73 74 20 70 6f 69 6e 74 65 72 26 71 75 6f 74 3b itly.cast.to.const.pointer&quot;
1a6c0 20 7b 0a 20 20 20 20 62 61 72 28 46 6f 6f 20 7b 2e 78 20 3d 20 31 32 2c 7d 29 3b 0a 7d 3c 2f 63 .{.....bar(Foo.{.x.=.12,});.}</c
1a6e0 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c ode></pre><pre><code.class="shel
1a700 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 l">$.zig.test.test.zig.Test.1/1.
1a720 69 6d 70 6c 69 63 69 74 6c 79 20 63 61 73 74 20 74 6f 20 63 6f 6e 73 74 20 70 6f 69 6e 74 65 72 implicitly.cast.to.const.pointer
1a740 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 ...OK.</code></pre>........<p>..
1a760 20 20 20 20 20 48 6f 77 65 76 65 72 2c 0a 20 20 20 20 20 20 74 68 65 20 43 20 41 42 49 20 64 6f .....However,.......the.C.ABI.do
1a780 65 73 20 61 6c 6c 6f 77 20 70 61 73 73 69 6e 67 20 73 74 72 75 63 74 73 20 61 6e 64 20 75 6e 69 es.allow.passing.structs.and.uni
1a7a0 6f 6e 73 20 62 79 20 76 61 6c 75 65 2e 20 53 6f 20 66 75 6e 63 74 69 6f 6e 73 20 77 68 69 63 68 ons.by.value..So.functions.which
1a7c0 0a 20 20 20 20 20 20 75 73 65 20 74 68 65 20 43 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 .......use.the.C.calling.convent
1a7e0 69 6f 6e 20 6d 61 79 20 70 61 73 73 20 73 74 72 75 63 74 73 20 61 6e 64 20 75 6e 69 6f 6e 73 20 ion.may.pass.structs.and.unions.
1a800 62 79 20 76 61 6c 75 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 by.value........</p>............
1a820 20 20 3c 68 32 20 69 64 3d 22 46 75 6e 63 74 69 6f 6e 2d 52 65 66 6c 65 63 74 69 6f 6e 22 3e 46 ..<h2.id="Function-Reflection">F
1a840 75 6e 63 74 69 6f 6e 20 52 65 66 6c 65 63 74 69 6f 6e 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c unction.Reflection</h2>........<
1a860 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e p.class="file">test.zig</p><pre>
1a880 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d <code.class="zig">const.assert.=
1a8a0 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e .@import(&quot;std&quot;).debug.
1a8c0 61 73 73 65 72 74 3b 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 66 6e 20 72 65 66 6c 65 63 74 69 6f assert;..test.&quot;fn.reflectio
1a8e0 6e 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 61 73 73 n&quot;.{.....assert(@typeOf(ass
1a900 65 72 74 29 2e 52 65 74 75 72 6e 54 79 70 65 20 3d 3d 20 76 6f 69 64 29 3b 0a 20 20 20 20 61 73 ert).ReturnType.==.void);.....as
1a920 73 65 72 74 28 40 74 79 70 65 4f 66 28 61 73 73 65 72 74 29 2e 69 73 5f 76 61 72 5f 61 72 67 73 sert(@typeOf(assert).is_var_args
1a940 20 3d 3d 20 66 61 6c 73 65 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c .==.false);.}</code></pre><pre><
1a960 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 code.class="shell">$.zig.test.te
1a980 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 66 6e 20 72 65 66 6c 65 63 74 69 6f 6e 2e 2e 2e st.zig.Test.1/1.fn.reflection...
1a9a0 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a OK.</code></pre>................
1a9c0 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 45 72 72 6f 72 73 22 3e 45 72 72 6f 72 73 3c 2f 68 31 ......<h1.id="Errors">Errors</h1
1a9e0 3e 0a 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 45 72 72 6f 72 2d 53 65 74 2d 54 79 70 65 22 >........<h2.id="Error-Set-Type"
1aa00 3e 45 72 72 6f 72 20 53 65 74 20 54 79 70 65 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a >Error.Set.Type</h2>........<p>.
1aa20 20 20 20 20 20 20 41 6e 20 65 72 72 6f 72 20 73 65 74 20 69 73 20 6c 69 6b 65 20 61 6e 20 3c 61 ......An.error.set.is.like.an.<a
1aa40 20 68 72 65 66 3d 22 23 65 6e 75 6d 22 3e 65 6e 75 6d 3c 2f 61 3e 2e 0a 20 20 20 20 20 20 48 6f .href="#enum">enum</a>........Ho
1aa60 77 65 76 65 72 2c 20 65 61 63 68 20 65 72 72 6f 72 20 6e 61 6d 65 20 61 63 72 6f 73 73 20 74 68 wever,.each.error.name.across.th
1aa80 65 20 65 6e 74 69 72 65 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 67 65 74 73 20 61 73 73 69 67 6e e.entire.compilation.gets.assign
1aaa0 65 64 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 0a 20 20 20 20 20 20 67 72 65 ed.an.unsigned.integer.......gre
1aac0 61 74 65 72 20 74 68 61 6e 20 30 2e 20 59 6f 75 20 61 72 65 20 61 6c 6c 6f 77 65 64 20 74 6f 20 ater.than.0..You.are.allowed.to.
1aae0 64 65 63 6c 61 72 65 20 74 68 65 20 73 61 6d 65 20 65 72 72 6f 72 20 6e 61 6d 65 20 6d 6f 72 65 declare.the.same.error.name.more
1ab00 20 74 68 61 6e 20 6f 6e 63 65 2c 20 61 6e 64 20 69 66 20 79 6f 75 20 64 6f 2c 20 69 74 0a 20 20 .than.once,.and.if.you.do,.it...
1ab20 20 20 20 20 67 65 74 73 20 61 73 73 69 67 6e 65 64 20 74 68 65 20 73 61 6d 65 20 69 6e 74 65 67 ....gets.assigned.the.same.integ
1ab40 65 72 20 76 61 6c 75 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 er.value........</p>.......<p>..
1ab60 20 20 20 20 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 75 6e 69 71 75 65 20 65 72 72 6f 72 20 .....The.number.of.unique.error.
1ab80 76 61 6c 75 65 73 20 61 63 72 6f 73 73 20 74 68 65 20 65 6e 74 69 72 65 20 63 6f 6d 70 69 6c 61 values.across.the.entire.compila
1aba0 74 69 6f 6e 20 73 68 6f 75 6c 64 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 73 69 7a 65 20 6f tion.should.determine.the.size.o
1abc0 66 20 74 68 65 20 65 72 72 6f 72 20 73 65 74 20 74 79 70 65 2e 0a 20 20 20 20 20 20 48 6f 77 65 f.the.error.set.type........Howe
1abe0 76 65 72 20 72 69 67 68 74 20 6e 6f 77 20 69 74 20 69 73 20 68 61 72 64 20 63 6f 64 65 64 20 74 ver.right.now.it.is.hard.coded.t
1ac00 6f 20 62 65 20 61 20 3c 63 6f 64 65 3e 75 31 36 3c 2f 63 6f 64 65 3e 2e 20 53 65 65 20 3c 61 20 o.be.a.<code>u16</code>..See.<a.
1ac20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 7a 69 67 2d 6c 61 6e href="https://github.com/zig-lan
1ac40 67 2f 7a 69 67 2f 69 73 73 75 65 73 2f 37 38 36 22 3e 23 37 36 38 3c 2f 61 3e 2e 0a 20 20 20 20 g/zig/issues/786">#768</a>......
1ac60 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 59 6f 75 20 63 61 6e 20 69 ..</p>.......<p>.......You.can.i
1ac80 6d 70 6c 69 63 69 74 6c 79 20 63 61 73 74 20 61 6e 20 65 72 72 6f 72 20 66 72 6f 6d 20 61 20 73 mplicitly.cast.an.error.from.a.s
1aca0 75 62 73 65 74 20 74 6f 20 69 74 73 20 73 75 70 65 72 73 65 74 3a 0a 20 20 20 20 20 20 3c 2f 70 ubset.to.its.superset:.......</p
1acc0 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 >.......<p.class="file">test.zig
1ace0 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 </p><pre><code.class="zig">const
1ad00 20 73 74 64 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 3b .std.=.@import(&quot;std&quot;);
1ad20 0a 0a 63 6f 6e 73 74 20 46 69 6c 65 4f 70 65 6e 45 72 72 6f 72 20 3d 20 65 72 72 6f 72 20 7b 0a ..const.FileOpenError.=.error.{.
1ad40 20 20 20 20 41 63 63 65 73 73 44 65 6e 69 65 64 2c 0a 20 20 20 20 4f 75 74 4f 66 4d 65 6d 6f 72 ....AccessDenied,.....OutOfMemor
1ad60 79 2c 0a 20 20 20 20 46 69 6c 65 4e 6f 74 46 6f 75 6e 64 2c 0a 7d 3b 0a 0a 63 6f 6e 73 74 20 41 y,.....FileNotFound,.};..const.A
1ad80 6c 6c 6f 63 61 74 69 6f 6e 45 72 72 6f 72 20 3d 20 65 72 72 6f 72 20 7b 0a 20 20 20 20 4f 75 74 llocationError.=.error.{.....Out
1ada0 4f 66 4d 65 6d 6f 72 79 2c 0a 7d 3b 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 69 6d 70 6c 69 63 69 OfMemory,.};..test.&quot;implici
1adc0 74 20 63 61 73 74 20 73 75 62 73 65 74 20 74 6f 20 73 75 70 65 72 73 65 74 26 71 75 6f 74 3b 20 t.cast.subset.to.superset&quot;.
1ade0 7b 0a 20 20 20 20 63 6f 6e 73 74 20 65 72 72 20 3d 20 66 6f 6f 28 41 6c 6c 6f 63 61 74 69 6f 6e {.....const.err.=.foo(Allocation
1ae00 45 72 72 6f 72 2e 4f 75 74 4f 66 4d 65 6d 6f 72 79 29 3b 0a 20 20 20 20 73 74 64 2e 64 65 62 75 Error.OutOfMemory);.....std.debu
1ae20 67 2e 61 73 73 65 72 74 28 65 72 72 20 3d 3d 20 46 69 6c 65 4f 70 65 6e 45 72 72 6f 72 2e 4f 75 g.assert(err.==.FileOpenError.Ou
1ae40 74 4f 66 4d 65 6d 6f 72 79 29 3b 0a 7d 0a 0a 66 6e 20 66 6f 6f 28 65 72 72 3a 20 41 6c 6c 6f 63 tOfMemory);.}..fn.foo(err:.Alloc
1ae60 61 74 69 6f 6e 45 72 72 6f 72 29 20 46 69 6c 65 4f 70 65 6e 45 72 72 6f 72 20 7b 0a 20 20 20 20 ationError).FileOpenError.{.....
1ae80 72 65 74 75 72 6e 20 65 72 72 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c return.err;.}</code></pre><pre><
1aea0 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 code.class="shell">$.zig.test.te
1aec0 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 69 6d 70 6c 69 63 69 74 20 63 61 73 74 20 73 75 st.zig.Test.1/1.implicit.cast.su
1aee0 62 73 65 74 20 74 6f 20 73 75 70 65 72 73 65 74 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 bset.to.superset...OK.</code></p
1af00 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 42 75 74 20 79 6f 75 20 63 61 6e re>........<p>.......But.you.can
1af20 6e 6f 74 20 69 6d 70 6c 69 63 69 74 6c 79 20 63 61 73 74 20 61 6e 20 65 72 72 6f 72 20 66 72 6f not.implicitly.cast.an.error.fro
1af40 6d 20 61 20 73 75 70 65 72 73 65 74 20 74 6f 20 61 20 73 75 62 73 65 74 3a 0a 20 20 20 20 20 20 m.a.superset.to.a.subset:.......
1af60 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e </p>.......<p.class="file">test.
1af80 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f zig</p><pre><code.class="zig">co
1afa0 6e 73 74 20 46 69 6c 65 4f 70 65 6e 45 72 72 6f 72 20 3d 20 65 72 72 6f 72 20 7b 0a 20 20 20 20 nst.FileOpenError.=.error.{.....
1afc0 41 63 63 65 73 73 44 65 6e 69 65 64 2c 0a 20 20 20 20 4f 75 74 4f 66 4d 65 6d 6f 72 79 2c 0a 20 AccessDenied,.....OutOfMemory,..
1afe0 20 20 20 46 69 6c 65 4e 6f 74 46 6f 75 6e 64 2c 0a 7d 3b 0a 0a 63 6f 6e 73 74 20 41 6c 6c 6f 63 ...FileNotFound,.};..const.Alloc
1b000 61 74 69 6f 6e 45 72 72 6f 72 20 3d 20 65 72 72 6f 72 20 7b 0a 20 20 20 20 4f 75 74 4f 66 4d 65 ationError.=.error.{.....OutOfMe
1b020 6d 6f 72 79 2c 0a 7d 3b 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 69 6d 70 6c 69 63 69 74 20 63 61 mory,.};..test.&quot;implicit.ca
1b040 73 74 20 73 75 70 65 72 73 65 74 20 74 6f 20 73 75 62 73 65 74 26 71 75 6f 74 3b 20 7b 0a 20 20 st.superset.to.subset&quot;.{...
1b060 20 20 66 6f 6f 28 46 69 6c 65 4f 70 65 6e 45 72 72 6f 72 2e 4f 75 74 4f 66 4d 65 6d 6f 72 79 29 ..foo(FileOpenError.OutOfMemory)
1b080 20 63 61 74 63 68 20 7b 7d 3b 0a 7d 0a 0a 66 6e 20 66 6f 6f 28 65 72 72 3a 20 46 69 6c 65 4f 70 .catch.{};.}..fn.foo(err:.FileOp
1b0a0 65 6e 45 72 72 6f 72 29 20 41 6c 6c 6f 63 61 74 69 6f 6e 45 72 72 6f 72 20 7b 0a 20 20 20 20 72 enError).AllocationError.{.....r
1b0c0 65 74 75 72 6e 20 65 72 72 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 eturn.err;.}</code></pre><pre><c
1b0e0 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 ode.class="shell">$.zig.test.tes
1b100 74 2e 7a 69 67 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 t.zig.<span.class="t0_1">/home/a
1b120 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a ndy/dev/zig/docgen_tmp/test.zig:
1b140 31 36 3a 31 32 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 16:12:.</span><span.class="t31_1
1b160 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 ">error:</span><span.class="t0_1
1b180 22 3e 20 65 78 70 65 63 74 65 64 20 27 41 6c 6c 6f 63 61 74 69 6f 6e 45 72 72 6f 72 27 2c 20 66 ">.expected.'AllocationError',.f
1b1a0 6f 75 6e 64 20 27 46 69 6c 65 4f 70 65 6e 45 72 72 6f 72 27 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 ound.'FileOpenError'</span>.....
1b1c0 72 65 74 75 72 6e 20 65 72 72 3b 0a 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 return.err;............<span.cla
1b1e0 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d ss="t32_1">^</span>.<span.class=
1b200 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e "t0_1">/home/andy/dev/zig/docgen
1b220 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 32 3a 35 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 _tmp/test.zig:2:5:.</span><span.
1b240 63 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 class="t36_1">note:</span><span.
1b260 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 27 65 72 72 6f 72 2e 41 63 63 65 73 73 44 65 6e 69 65 class="t0_1">.'error.AccessDenie
1b280 64 27 20 6e 6f 74 20 61 20 6d 65 6d 62 65 72 20 6f 66 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 65 d'.not.a.member.of.destination.e
1b2a0 72 72 6f 72 20 73 65 74 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 41 63 63 65 73 73 44 65 6e 69 65 64 rror.set</span>.....AccessDenied
1b2c0 2c 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 ,.....<span.class="t32_1">^</spa
1b2e0 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 n>.<span.class="t0_1">/home/andy
1b300 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 34 3a 35 /dev/zig/docgen_tmp/test.zig:4:5
1b320 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 :.</span><span.class="t36_1">not
1b340 65 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 27 65 72 e:</span><span.class="t0_1">.'er
1b360 72 6f 72 2e 46 69 6c 65 4e 6f 74 46 6f 75 6e 64 27 20 6e 6f 74 20 61 20 6d 65 6d 62 65 72 20 6f ror.FileNotFound'.not.a.member.o
1b380 66 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 65 72 72 6f 72 20 73 65 74 3c 2f 73 70 61 6e 3e 0a 20 f.destination.error.set</span>..
1b3a0 20 20 20 46 69 6c 65 4e 6f 74 46 6f 75 6e 64 2c 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 ...FileNotFound,.....<span.class
1b3c0 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a ="t32_1">^</span>.</code></pre>.
1b3e0 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 72 65 20 69 73 20 61 20 73 68 6f 72 .......<p>.......There.is.a.shor
1b400 74 63 75 74 20 66 6f 72 20 64 65 63 6c 61 72 69 6e 67 20 61 6e 20 65 72 72 6f 72 20 73 65 74 20 tcut.for.declaring.an.error.set.
1b420 77 69 74 68 20 6f 6e 6c 79 20 31 20 76 61 6c 75 65 2c 20 61 6e 64 20 74 68 65 6e 20 67 65 74 74 with.only.1.value,.and.then.gett
1b440 69 6e 67 20 74 68 61 74 20 76 61 6c 75 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 ing.that.value:.......</p>......
1b460 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 65 72 .<pre><code.class="zig">const.er
1b480 72 20 3d 20 65 72 72 6f 72 2e 46 69 6c 65 4e 6f 74 46 6f 75 6e 64 3b 3c 2f 63 6f 64 65 3e 3c 2f r.=.error.FileNotFound;</code></
1b4a0 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 54 68 69 73 20 69 73 20 65 71 75 69 76 61 6c 65 6e 74 pre>.......<p>This.is.equivalent
1b4c0 20 74 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d .to:</p>.......<pre><code.class=
1b4e0 22 7a 69 67 22 3e 63 6f 6e 73 74 20 65 72 72 20 3d 20 28 65 72 72 6f 72 20 7b 46 69 6c 65 4e 6f "zig">const.err.=.(error.{FileNo
1b500 74 46 6f 75 6e 64 7d 29 2e 46 69 6c 65 4e 6f 74 46 6f 75 6e 64 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 tFound}).FileNotFound;</code></p
1b520 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 62 65 63 6f 6d 65 73 re>.......<p>.......This.becomes
1b540 20 75 73 65 66 75 6c 20 77 68 65 6e 20 75 73 69 6e 67 20 3c 61 20 68 72 65 66 3d 22 23 49 6e 66 .useful.when.using.<a.href="#Inf
1b560 65 72 72 65 64 2d 45 72 72 6f 72 2d 53 65 74 73 22 3e 49 6e 66 65 72 72 65 64 20 45 72 72 6f 72 erred-Error-Sets">Inferred.Error
1b580 20 53 65 74 73 3c 2f 61 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 .Sets</a>........</p>.......<h3.
1b5a0 69 64 3d 22 54 68 65 2d 47 6c 6f 62 61 6c 2d 45 72 72 6f 72 2d 53 65 74 22 3e 54 68 65 20 47 6c id="The-Global-Error-Set">The.Gl
1b5c0 6f 62 61 6c 20 45 72 72 6f 72 20 53 65 74 3c 2f 68 33 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 3c 63 obal.Error.Set</h3>........<p><c
1b5e0 6f 64 65 3e 65 72 72 6f 72 3c 2f 63 6f 64 65 3e 20 72 65 66 65 72 73 20 74 6f 20 74 68 65 20 67 ode>error</code>.refers.to.the.g
1b600 6c 6f 62 61 6c 20 65 72 72 6f 72 20 73 65 74 2e 0a 20 20 20 20 20 20 54 68 69 73 20 69 73 20 74 lobal.error.set........This.is.t
1b620 68 65 20 65 72 72 6f 72 20 73 65 74 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 61 6c 6c 20 65 he.error.set.that.contains.all.e
1b640 72 72 6f 72 73 20 69 6e 20 74 68 65 20 65 6e 74 69 72 65 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 rrors.in.the.entire.compilation.
1b660 75 6e 69 74 2e 0a 20 20 20 20 20 20 49 74 20 69 73 20 61 20 73 75 70 65 72 73 65 74 20 6f 66 20 unit........It.is.a.superset.of.
1b680 61 6c 6c 20 6f 74 68 65 72 20 65 72 72 6f 72 20 73 65 74 73 20 61 6e 64 20 61 20 73 75 62 73 65 all.other.error.sets.and.a.subse
1b6a0 74 20 6f 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 6d 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 t.of.none.of.them........</p>...
1b6c0 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 59 6f 75 20 63 61 6e 20 69 6d 70 6c 69 63 69 74 6c 79 ....<p>.......You.can.implicitly
1b6e0 20 63 61 73 74 20 61 6e 79 20 65 72 72 6f 72 20 73 65 74 20 74 6f 20 74 68 65 20 67 6c 6f 62 61 .cast.any.error.set.to.the.globa
1b700 6c 20 6f 6e 65 2c 20 61 6e 64 20 79 6f 75 20 63 61 6e 20 65 78 70 6c 69 63 69 74 6c 79 0a 20 20 l.one,.and.you.can.explicitly...
1b720 20 20 20 20 63 61 73 74 20 61 6e 20 65 72 72 6f 72 20 6f 66 20 67 6c 6f 62 61 6c 20 65 72 72 6f ....cast.an.error.of.global.erro
1b740 72 20 73 65 74 20 74 6f 20 61 20 6e 6f 6e 2d 67 6c 6f 62 61 6c 20 6f 6e 65 2e 20 54 68 69 73 20 r.set.to.a.non-global.one..This.
1b760 69 6e 73 65 72 74 73 20 61 20 6c 61 6e 67 75 61 67 65 2d 6c 65 76 65 6c 0a 20 20 20 20 20 20 61 inserts.a.language-level.......a
1b780 73 73 65 72 74 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 65 20 65 72 72 6f 72 20 76 61 6c ssert.to.make.sure.the.error.val
1b7a0 75 65 20 69 73 20 69 6e 20 66 61 63 74 20 69 6e 20 74 68 65 20 64 65 73 74 69 6e 61 74 69 6f 6e ue.is.in.fact.in.the.destination
1b7c0 20 65 72 72 6f 72 20 73 65 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e .error.set........</p>.......<p>
1b7e0 0a 20 20 20 20 20 20 54 68 65 20 67 6c 6f 62 61 6c 20 65 72 72 6f 72 20 73 65 74 20 73 68 6f 75 .......The.global.error.set.shou
1b800 6c 64 20 67 65 6e 65 72 61 6c 6c 79 20 62 65 20 61 76 6f 69 64 65 64 20 77 68 65 6e 20 70 6f 73 ld.generally.be.avoided.when.pos
1b820 73 69 62 6c 65 2c 20 62 65 63 61 75 73 65 20 69 74 20 70 72 65 76 65 6e 74 73 0a 20 20 20 20 20 sible,.because.it.prevents......
1b840 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 20 66 72 6f 6d 20 6b 6e 6f 77 69 6e 67 20 77 68 61 74 20 .the.compiler.from.knowing.what.
1b860 65 72 72 6f 72 73 20 61 72 65 20 70 6f 73 73 69 62 6c 65 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 errors.are.possible.at.compile-t
1b880 69 6d 65 2e 20 4b 6e 6f 77 69 6e 67 0a 20 20 20 20 20 20 74 68 65 20 65 72 72 6f 72 20 73 65 74 ime..Knowing.......the.error.set
1b8a0 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 69 73 20 62 65 74 74 65 72 20 66 6f 72 20 67 .at.compile-time.is.better.for.g
1b8c0 65 6e 65 72 61 74 65 64 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 74 20 61 6e 64 20 66 6f 72 0a enerated.documentationt.and.for.
1b8e0 20 20 20 20 20 20 68 65 6c 70 66 75 6c 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 73 20 73 75 63 ......helpful.error.messages.suc
1b900 68 20 61 73 20 66 6f 72 67 65 74 74 69 6e 67 20 61 20 70 6f 73 73 69 62 6c 65 20 65 72 72 6f 72 h.as.forgetting.a.possible.error
1b920 20 76 61 6c 75 65 20 69 6e 20 61 20 3c 61 20 68 72 65 66 3d 22 23 73 77 69 74 63 68 22 3e 73 77 .value.in.a.<a.href="#switch">sw
1b940 69 74 63 68 3c 2f 61 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 itch</a>........</p>............
1b960 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 45 72 72 6f 72 2d 55 6e 69 6f 6e 2d 54 79 70 .........<h2.id="Error-Union-Typ
1b980 65 22 3e 45 72 72 6f 72 20 55 6e 69 6f 6e 20 54 79 70 65 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 e">Error.Union.Type</h2>........
1b9a0 3c 70 3e 0a 20 20 20 20 20 20 4d 6f 73 74 20 6f 66 20 74 68 65 20 74 69 6d 65 20 79 6f 75 20 77 <p>.......Most.of.the.time.you.w
1b9c0 69 6c 6c 20 6e 6f 74 20 66 69 6e 64 20 79 6f 75 72 73 65 6c 66 20 75 73 69 6e 67 20 61 6e 20 65 ill.not.find.yourself.using.an.e
1b9e0 72 72 6f 72 20 73 65 74 20 74 79 70 65 2e 20 49 6e 73 74 65 61 64 2c 0a 20 20 20 20 20 20 6c 69 rror.set.type..Instead,.......li
1ba00 6b 65 6c 79 20 79 6f 75 20 77 69 6c 6c 20 62 65 20 75 73 69 6e 67 20 74 68 65 20 65 72 72 6f 72 kely.you.will.be.using.the.error
1ba20 20 75 6e 69 6f 6e 20 74 79 70 65 2e 20 54 68 69 73 20 69 73 20 77 68 65 6e 20 79 6f 75 20 74 61 .union.type..This.is.when.you.ta
1ba40 6b 65 20 61 6e 20 65 72 72 6f 72 20 73 65 74 0a 20 20 20 20 20 20 61 6e 64 20 61 20 6e 6f 72 6d ke.an.error.set.......and.a.norm
1ba60 61 6c 20 74 79 70 65 2c 20 61 6e 64 20 63 72 65 61 74 65 20 61 6e 20 65 72 72 6f 72 20 75 6e 69 al.type,.and.create.an.error.uni
1ba80 6f 6e 20 77 69 74 68 20 74 68 65 20 3c 63 6f 64 65 3e 21 3c 2f 63 6f 64 65 3e 20 62 69 6e 61 72 on.with.the.<code>!</code>.binar
1baa0 79 20 6f 70 65 72 61 74 6f 72 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e y.operator........</p>.......<p>
1bac0 0a 20 20 20 20 20 20 48 65 72 65 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 70 61 72 .......Here.is.a.function.to.par
1bae0 73 65 20 61 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 61 20 36 34 2d 62 69 74 20 69 6e 74 65 67 65 se.a.string.into.a.64-bit.intege
1bb00 72 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 r:.......</p>.......<p.class="fi
1bb20 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 le">test.zig</p><pre><code.class
1bb40 3d 22 7a 69 67 22 3e 70 75 62 20 66 6e 20 70 61 72 73 65 55 36 34 28 62 75 66 3a 20 5b 5d 63 6f ="zig">pub.fn.parseU64(buf:.[]co
1bb60 6e 73 74 20 75 38 2c 20 72 61 64 69 78 3a 20 75 38 29 20 21 75 36 34 20 7b 0a 20 20 20 20 76 61 nst.u8,.radix:.u8).!u64.{.....va
1bb80 72 20 78 3a 20 75 36 34 20 3d 20 30 3b 0a 0a 20 20 20 20 66 6f 72 20 28 62 75 66 29 20 7c 63 7c r.x:.u64.=.0;......for.(buf).|c|
1bba0 20 7b 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 64 69 67 69 74 20 3d 20 63 68 61 72 54 6f 44 .{.........const.digit.=.charToD
1bbc0 69 67 69 74 28 63 29 3b 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 64 69 67 69 74 20 26 67 74 3b igit(c);..........if.(digit.&gt;
1bbe0 3d 20 72 61 64 69 78 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 72 =.radix).{.............return.er
1bc00 72 6f 72 2e 49 6e 76 61 6c 69 64 43 68 61 72 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 ror.InvalidChar;.........}......
1bc20 20 20 20 20 2f 2f 20 78 20 2a 3d 20 72 61 64 69 78 0a 20 20 20 20 20 20 20 20 69 66 20 28 40 6d ....//.x.*=.radix.........if.(@m
1bc40 75 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 28 75 36 34 2c 20 78 2c 20 72 61 64 69 78 2c 20 26 61 ulWithOverflow(u64,.x,.radix,.&a
1bc60 6d 70 3b 78 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 72 72 6f mp;x)).{.............return.erro
1bc80 72 2e 4f 76 65 72 66 6c 6f 77 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 2f r.Overflow;.........}........../
1bca0 2f 20 78 20 2b 3d 20 64 69 67 69 74 0a 20 20 20 20 20 20 20 20 69 66 20 28 40 61 64 64 57 69 74 /.x.+=.digit.........if.(@addWit
1bcc0 68 4f 76 65 72 66 6c 6f 77 28 75 36 34 2c 20 78 2c 20 64 69 67 69 74 2c 20 26 61 6d 70 3b 78 29 hOverflow(u64,.x,.digit,.&amp;x)
1bce0 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 72 72 6f 72 2e 4f 76 65 ).{.............return.error.Ove
1bd00 72 66 6c 6f 77 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 72 65 74 75 rflow;.........}.....}......retu
1bd20 72 6e 20 78 3b 0a 7d 0a 0a 66 6e 20 63 68 61 72 54 6f 44 69 67 69 74 28 63 3a 20 75 38 29 20 75 rn.x;.}..fn.charToDigit(c:.u8).u
1bd40 38 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 73 77 69 74 63 68 20 28 63 29 20 7b 0a 20 20 20 20 8.{.....return.switch.(c).{.....
1bd60 20 20 20 20 27 30 27 20 2e 2e 2e 20 27 39 27 20 3d 26 67 74 3b 20 63 20 2d 20 27 30 27 2c 0a 20 ....'0'.....'9'.=&gt;.c.-.'0',..
1bd80 20 20 20 20 20 20 20 27 41 27 20 2e 2e 2e 20 27 5a 27 20 3d 26 67 74 3b 20 63 20 2d 20 27 41 27 .......'A'.....'Z'.=&gt;.c.-.'A'
1bda0 20 2b 20 31 30 2c 0a 20 20 20 20 20 20 20 20 27 61 27 20 2e 2e 2e 20 27 7a 27 20 3d 26 67 74 3b .+.10,.........'a'.....'z'.=&gt;
1bdc0 20 63 20 2d 20 27 61 27 20 2b 20 31 30 2c 0a 20 20 20 20 20 20 20 20 65 6c 73 65 20 3d 26 67 74 .c.-.'a'.+.10,.........else.=&gt
1bde0 3b 20 40 6d 61 78 56 61 6c 75 65 28 75 38 29 2c 0a 20 20 20 20 7d 3b 0a 7d 0a 0a 74 65 73 74 20 ;.@maxValue(u8),.....};.}..test.
1be00 26 71 75 6f 74 3b 70 61 72 73 65 20 75 36 34 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 63 6f 6e 73 &quot;parse.u64&quot;.{.....cons
1be20 74 20 72 65 73 75 6c 74 20 3d 20 74 72 79 20 70 61 72 73 65 55 36 34 28 26 71 75 6f 74 3b 31 32 t.result.=.try.parseU64(&quot;12
1be40 33 34 26 71 75 6f 74 3b 2c 20 31 30 29 3b 0a 20 20 20 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 34&quot;,.10);.....@import(&quot
1be60 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 28 72 65 73 75 6c 74 20 ;std&quot;).debug.assert(result.
1be80 3d 3d 20 31 32 33 34 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f ==.1234);.}</code></pre><pre><co
1bea0 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 de.class="shell">$.zig.test.test
1bec0 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 70 61 72 73 65 20 75 36 34 2e 2e 2e 4f 4b 0a 3c 2f 63 .zig.Test.1/1.parse.u64...OK.</c
1bee0 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4e 6f 74 69 ode></pre>........<p>.......Noti
1bf00 63 65 20 74 68 65 20 72 65 74 75 72 6e 20 74 79 70 65 20 69 73 20 3c 63 6f 64 65 3e 21 75 36 34 ce.the.return.type.is.<code>!u64
1bf20 3c 2f 63 6f 64 65 3e 2e 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 20 66 75 6e </code>..This.means.that.the.fun
1bf40 63 74 69 6f 6e 0a 20 20 20 20 20 20 65 69 74 68 65 72 20 72 65 74 75 72 6e 73 20 61 6e 20 75 6e ction.......either.returns.an.un
1bf60 73 69 67 6e 65 64 20 36 34 20 62 69 74 20 69 6e 74 65 67 65 72 2c 20 6f 72 20 61 6e 20 65 72 72 signed.64.bit.integer,.or.an.err
1bf80 6f 72 2e 20 57 65 20 6c 65 66 74 20 6f 66 66 20 74 68 65 20 65 72 72 6f 72 20 73 65 74 0a 20 20 or..We.left.off.the.error.set...
1bfa0 20 20 20 20 74 6f 20 74 68 65 20 6c 65 66 74 20 6f 66 20 74 68 65 20 3c 63 6f 64 65 3e 21 3c 2f ....to.the.left.of.the.<code>!</
1bfc0 63 6f 64 65 3e 2c 20 73 6f 20 74 68 65 20 65 72 72 6f 72 20 73 65 74 20 69 73 20 69 6e 66 65 72 code>,.so.the.error.set.is.infer
1bfe0 72 65 64 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 red........</p>.......<p>.......
1c000 57 69 74 68 69 6e 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 64 65 66 69 6e 69 74 69 6f 6e 2c 20 Within.the.function.definition,.
1c020 79 6f 75 20 63 61 6e 20 73 65 65 20 73 6f 6d 65 20 72 65 74 75 72 6e 20 73 74 61 74 65 6d 65 6e you.can.see.some.return.statemen
1c040 74 73 20 74 68 61 74 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 61 6e 20 65 72 72 6f 72 2c 20 61 ts.that.return.......an.error,.a
1c060 6e 64 20 61 74 20 74 68 65 20 62 6f 74 74 6f 6d 20 61 20 72 65 74 75 72 6e 20 73 74 61 74 65 6d nd.at.the.bottom.a.return.statem
1c080 65 6e 74 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 61 20 3c 63 6f 64 65 3e 75 36 34 3c 2f 63 6f ent.that.returns.a.<code>u64</co
1c0a0 64 65 3e 2e 0a 20 20 20 20 20 20 42 6f 74 68 20 74 79 70 65 73 20 69 6d 70 6c 69 63 69 74 6c 79 de>........Both.types.implicitly
1c0c0 20 63 61 73 74 20 74 6f 20 3c 63 6f 64 65 3e 65 72 72 6f 72 21 75 36 34 3c 2f 63 6f 64 65 3e 2e .cast.to.<code>error!u64</code>.
1c0e0 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 57 68 61 74 .......</p>.......<p>.......What
1c100 20 69 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 74 6f 20 75 73 65 20 74 68 69 73 20 66 75 6e 63 74 .it.looks.like.to.use.this.funct
1c120 69 6f 6e 20 76 61 72 69 65 73 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68 61 74 20 79 6f 75 ion.varies.depending.on.what.you
1c140 27 72 65 0a 20 20 20 20 20 20 74 72 79 69 6e 67 20 74 6f 20 64 6f 2e 20 4f 6e 65 20 6f 66 20 74 're.......trying.to.do..One.of.t
1c160 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c he.following:.......</p>.......<
1c180 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 59 6f 75 20 77 61 6e 74 20 74 6f 20 70 72 6f 76 ul>.........<li>You.want.to.prov
1c1a0 69 64 65 20 61 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 66 20 69 74 20 72 65 74 75 72 6e ide.a.default.value.if.it.return
1c1c0 65 64 20 61 6e 20 65 72 72 6f 72 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 49 66 ed.an.error.</li>.........<li>If
1c1e0 20 69 74 20 72 65 74 75 72 6e 65 64 20 61 6e 20 65 72 72 6f 72 20 74 68 65 6e 20 79 6f 75 20 77 .it.returned.an.error.then.you.w
1c200 61 6e 74 20 74 6f 20 72 65 74 75 72 6e 20 74 68 65 20 73 61 6d 65 20 65 72 72 6f 72 2e 3c 2f 6c ant.to.return.the.same.error.</l
1c220 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 59 6f 75 20 6b 6e 6f 77 20 77 69 74 68 20 63 6f 6d i>.........<li>You.know.with.com
1c240 70 6c 65 74 65 20 63 65 72 74 61 69 6e 74 79 20 69 74 20 77 69 6c 6c 20 6e 6f 74 20 72 65 74 75 plete.certainty.it.will.not.retu
1c260 72 6e 20 61 6e 20 65 72 72 6f 72 2c 20 73 6f 20 77 61 6e 74 20 74 6f 20 75 6e 63 6f 6e 64 69 74 rn.an.error,.so.want.to.uncondit
1c280 69 6f 6e 61 6c 6c 79 20 75 6e 77 72 61 70 20 69 74 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 ionally.unwrap.it.</li>.........
1c2a0 3c 6c 69 3e 59 6f 75 20 77 61 6e 74 20 74 6f 20 74 61 6b 65 20 61 20 64 69 66 66 65 72 65 6e 74 <li>You.want.to.take.a.different
1c2c0 20 61 63 74 69 6f 6e 20 66 6f 72 20 65 61 63 68 20 70 6f 73 73 69 62 6c 65 20 65 72 72 6f 72 2e .action.for.each.possible.error.
1c2e0 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 49 66 20 79 6f </li>.......</ul>.......<p>If.yo
1c300 75 20 77 61 6e 74 20 74 6f 20 70 72 6f 76 69 64 65 20 61 20 64 65 66 61 75 6c 74 20 76 61 6c 75 u.want.to.provide.a.default.valu
1c320 65 2c 20 79 6f 75 20 63 61 6e 20 75 73 65 20 74 68 65 20 3c 63 6f 64 65 3e 63 61 74 63 68 3c 2f e,.you.can.use.the.<code>catch</
1c340 63 6f 64 65 3e 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 3a 3c 2f 70 3e 0a 20 20 20 20 20 code>.binary.operator:</p>......
1c360 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 6e 20 64 6f 41 54 68 .<pre><code.class="zig">fn.doATh
1c380 69 6e 67 28 73 74 72 3a 20 5b 5d 75 38 29 20 76 6f 69 64 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 ing(str:.[]u8).void.{.....const.
1c3a0 6e 75 6d 62 65 72 20 3d 20 70 61 72 73 65 55 36 34 28 73 74 72 2c 20 31 30 29 20 63 61 74 63 68 number.=.parseU64(str,.10).catch
1c3c0 20 31 33 3b 0a 20 20 20 20 2f 2f 20 2e 2e 2e 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 .13;.....//.....}</code></pre>..
1c3e0 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 20 74 68 69 73 20 63 6f 64 65 2c 20 3c 63 6f .....<p>.......In.this.code,.<co
1c400 64 65 3e 6e 75 6d 62 65 72 3c 2f 63 6f 64 65 3e 20 77 69 6c 6c 20 62 65 20 65 71 75 61 6c 20 74 de>number</code>.will.be.equal.t
1c420 6f 20 74 68 65 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 70 61 72 73 65 64 20 73 74 72 69 6e 67 o.the.successfully.parsed.string
1c440 2c 20 6f 72 0a 20 20 20 20 20 20 61 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 6f 66 20 31 33 ,.or.......a.default.value.of.13
1c460 2e 20 54 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 20 72 69 67 68 74 20 68 61 6e 64 20 73 69 64 ..The.type.of.the.right.hand.sid
1c480 65 20 6f 66 20 74 68 65 20 62 69 6e 61 72 79 20 3c 63 6f 64 65 3e 63 61 74 63 68 3c 2f 63 6f 64 e.of.the.binary.<code>catch</cod
1c4a0 65 3e 20 6f 70 65 72 61 74 6f 72 20 6d 75 73 74 0a 20 20 20 20 20 20 6d 61 74 63 68 20 74 68 65 e>.operator.must.......match.the
1c4c0 20 75 6e 77 72 61 70 70 65 64 20 65 72 72 6f 72 20 75 6e 69 6f 6e 20 74 79 70 65 2c 20 6f 72 20 .unwrapped.error.union.type,.or.
1c4e0 62 65 20 6f 66 20 74 79 70 65 20 3c 63 6f 64 65 3e 6e 6f 72 65 74 75 72 6e 3c 2f 63 6f 64 65 3e be.of.type.<code>noreturn</code>
1c500 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 4c 65 74 27 73 20 73 61 79 20 ........</p>.......<p>Let's.say.
1c520 79 6f 75 20 77 61 6e 74 65 64 20 74 6f 20 72 65 74 75 72 6e 20 74 68 65 20 65 72 72 6f 72 20 69 you.wanted.to.return.the.error.i
1c540 66 20 79 6f 75 20 67 6f 74 20 6f 6e 65 2c 20 6f 74 68 65 72 77 69 73 65 20 63 6f 6e 74 69 6e 75 f.you.got.one,.otherwise.continu
1c560 65 20 77 69 74 68 20 74 68 65 0a 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 6c 6f 67 69 63 3a e.with.the.......function.logic:
1c580 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 </p>.......<pre><code.class="zig
1c5a0 22 3e 66 6e 20 64 6f 41 54 68 69 6e 67 28 73 74 72 3a 20 5b 5d 75 38 29 20 21 76 6f 69 64 20 7b ">fn.doAThing(str:.[]u8).!void.{
1c5c0 0a 20 20 20 20 63 6f 6e 73 74 20 6e 75 6d 62 65 72 20 3d 20 70 61 72 73 65 55 36 34 28 73 74 72 .....const.number.=.parseU64(str
1c5e0 2c 20 31 30 29 20 63 61 74 63 68 20 7c 65 72 72 7c 20 72 65 74 75 72 6e 20 65 72 72 3b 0a 20 20 ,.10).catch.|err|.return.err;...
1c600 20 20 2f 2f 20 2e 2e 2e 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 ..//.....}</code></pre>.......<p
1c620 3e 0a 20 20 20 20 20 20 20 20 54 68 65 72 65 20 69 73 20 61 20 73 68 6f 72 74 63 75 74 20 66 6f >.........There.is.a.shortcut.fo
1c640 72 20 74 68 69 73 2e 20 54 68 65 20 3c 63 6f 64 65 3e 74 72 79 3c 2f 63 6f 64 65 3e 20 65 78 70 r.this..The.<code>try</code>.exp
1c660 72 65 73 73 69 6f 6e 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c ression:.......</p>.......<pre><
1c680 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 6e 20 64 6f 41 54 68 69 6e 67 28 73 74 72 code.class="zig">fn.doAThing(str
1c6a0 3a 20 5b 5d 75 38 29 20 21 76 6f 69 64 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 6e 75 6d 62 65 72 :.[]u8).!void.{.....const.number
1c6c0 20 3d 20 74 72 79 20 70 61 72 73 65 55 36 34 28 73 74 72 2c 20 31 30 29 3b 0a 20 20 20 20 2f 2f .=.try.parseU64(str,.10);.....//
1c6e0 20 2e 2e 2e 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 .....}</code></pre>.......<p>...
1c700 20 20 20 20 3c 63 6f 64 65 3e 74 72 79 3c 2f 63 6f 64 65 3e 20 65 76 61 6c 75 61 74 65 73 20 61 ....<code>try</code>.evaluates.a
1c720 6e 20 65 72 72 6f 72 20 75 6e 69 6f 6e 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 49 66 20 69 74 20 n.error.union.expression..If.it.
1c740 69 73 20 61 6e 20 65 72 72 6f 72 2c 20 69 74 20 72 65 74 75 72 6e 73 0a 20 20 20 20 20 20 66 72 is.an.error,.it.returns.......fr
1c760 6f 6d 20 74 68 65 20 63 75 72 72 65 6e 74 20 66 75 6e 63 74 69 6f 6e 20 77 69 74 68 20 74 68 65 om.the.current.function.with.the
1c780 20 73 61 6d 65 20 65 72 72 6f 72 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 74 68 65 20 65 78 70 72 .same.error..Otherwise,.the.expr
1c7a0 65 73 73 69 6f 6e 20 72 65 73 75 6c 74 73 20 69 6e 0a 20 20 20 20 20 20 74 68 65 20 75 6e 77 72 ession.results.in.......the.unwr
1c7c0 61 70 70 65 64 20 76 61 6c 75 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 apped.value........</p>.......<p
1c7e0 3e 0a 20 20 20 20 20 20 20 20 4d 61 79 62 65 20 79 6f 75 20 6b 6e 6f 77 20 77 69 74 68 20 63 6f >.........Maybe.you.know.with.co
1c800 6d 70 6c 65 74 65 20 63 65 72 74 61 69 6e 74 79 20 74 68 61 74 20 61 6e 20 65 78 70 72 65 73 73 mplete.certainty.that.an.express
1c820 69 6f 6e 20 77 69 6c 6c 20 6e 65 76 65 72 20 62 65 20 61 6e 20 65 72 72 6f 72 2e 0a 20 20 20 20 ion.will.never.be.an.error......
1c840 20 20 20 20 49 6e 20 74 68 69 73 20 63 61 73 65 20 79 6f 75 20 63 61 6e 20 64 6f 20 74 68 69 73 ....In.this.case.you.can.do.this
1c860 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c :.......</p>.......<pre><code.cl
1c880 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 6e 75 6d 62 65 72 20 3d 20 70 61 72 73 65 55 36 ass="zig">const.number.=.parseU6
1c8a0 34 28 26 71 75 6f 74 3b 31 32 33 34 26 71 75 6f 74 3b 2c 20 31 30 29 20 63 61 74 63 68 20 75 6e 4(&quot;1234&quot;,.10).catch.un
1c8c0 72 65 61 63 68 61 62 6c 65 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 reachable;</code></pre>.......<p
1c8e0 3e 0a 20 20 20 20 20 20 48 65 72 65 20 77 65 20 6b 6e 6f 77 20 66 6f 72 20 73 75 72 65 20 74 68 >.......Here.we.know.for.sure.th
1c900 61 74 20 22 31 32 33 34 22 20 77 69 6c 6c 20 70 61 72 73 65 20 73 75 63 63 65 73 73 66 75 6c 6c at."1234".will.parse.successfull
1c920 79 2e 20 53 6f 20 77 65 20 70 75 74 20 74 68 65 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 75 6e 72 y..So.we.put.the.......<code>unr
1c940 65 61 63 68 61 62 6c 65 3c 2f 63 6f 64 65 3e 20 76 61 6c 75 65 20 6f 6e 20 74 68 65 20 72 69 67 eachable</code>.value.on.the.rig
1c960 68 74 20 68 61 6e 64 20 73 69 64 65 2e 20 3c 63 6f 64 65 3e 75 6e 72 65 61 63 68 61 62 6c 65 3c ht.hand.side..<code>unreachable<
1c980 2f 63 6f 64 65 3e 20 67 65 6e 65 72 61 74 65 73 0a 20 20 20 20 20 20 61 20 70 61 6e 69 63 20 69 /code>.generates.......a.panic.i
1c9a0 6e 20 44 65 62 75 67 20 61 6e 64 20 52 65 6c 65 61 73 65 53 61 66 65 20 6d 6f 64 65 73 20 61 6e n.Debug.and.ReleaseSafe.modes.an
1c9c0 64 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 20 69 6e 20 52 65 6c 65 61 73 65 46 d.undefined.behavior.in.ReleaseF
1c9e0 61 73 74 20 6d 6f 64 65 2e 20 53 6f 2c 20 77 68 69 6c 65 20 77 65 27 72 65 20 64 65 62 75 67 67 ast.mode..So,.while.we're.debugg
1ca00 69 6e 67 20 74 68 65 0a 20 20 20 20 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 2c 20 69 66 20 74 68 ing.the.......application,.if.th
1ca20 65 72 65 20 3c 65 6d 3e 77 61 73 3c 2f 65 6d 3e 20 61 20 73 75 72 70 72 69 73 65 20 65 72 72 6f ere.<em>was</em>.a.surprise.erro
1ca40 72 20 68 65 72 65 2c 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 77 6f 75 6c 64 20 63 72 r.here,.the.application.would.cr
1ca60 61 73 68 0a 20 20 20 20 20 20 61 70 70 72 6f 70 72 69 61 74 65 6c 79 2e 0a 20 20 20 20 20 20 3c ash.......appropriately........<
1ca80 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 46 69 6e 61 6c 6c 79 2c 20 79 6f 75 /p>.......<p>.......Finally,.you
1caa0 20 6d 61 79 20 77 61 6e 74 20 74 6f 20 74 61 6b 65 20 61 20 64 69 66 66 65 72 65 6e 74 20 61 63 .may.want.to.take.a.different.ac
1cac0 74 69 6f 6e 20 66 6f 72 20 65 76 65 72 79 20 73 69 74 75 61 74 69 6f 6e 2e 20 46 6f 72 20 74 68 tion.for.every.situation..For.th
1cae0 61 74 2c 20 77 65 20 63 6f 6d 62 69 6e 65 0a 20 20 20 20 20 20 74 68 65 20 3c 63 6f 64 65 3e 69 at,.we.combine.......the.<code>i
1cb00 66 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 3c 63 6f 64 65 3e 73 77 69 74 63 68 3c 2f 63 6f 64 65 3e f</code>.and.<code>switch</code>
1cb20 20 65 78 70 72 65 73 73 69 6f 6e 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 .expression:.......</p>.......<p
1cb40 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 6e 20 64 6f 41 54 68 69 6e 67 re><code.class="zig">fn.doAThing
1cb60 28 73 74 72 3a 20 5b 5d 75 38 29 20 76 6f 69 64 20 7b 0a 20 20 20 20 69 66 20 28 70 61 72 73 65 (str:.[]u8).void.{.....if.(parse
1cb80 55 36 34 28 73 74 72 2c 20 31 30 29 29 20 7c 6e 75 6d 62 65 72 7c 20 7b 0a 20 20 20 20 20 20 20 U64(str,.10)).|number|.{........
1cba0 20 64 6f 53 6f 6d 65 74 68 69 6e 67 57 69 74 68 4e 75 6d 62 65 72 28 6e 75 6d 62 65 72 29 3b 0a .doSomethingWithNumber(number);.
1cbc0 20 20 20 20 7d 20 65 6c 73 65 20 7c 65 72 72 7c 20 73 77 69 74 63 68 20 28 65 72 72 29 20 7b 0a ....}.else.|err|.switch.(err).{.
1cbe0 20 20 20 20 20 20 20 20 65 72 72 6f 72 2e 4f 76 65 72 66 6c 6f 77 20 3d 26 67 74 3b 20 7b 0a 20 ........error.Overflow.=&gt;.{..
1cc00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 68 61 6e 64 6c 65 20 6f 76 65 72 66 6c 6f 77 2e 2e 2e ...........//.handle.overflow...
1cc20 0a 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 2f 2f 20 77 65 20 70 72 6f 6d 69 73 .........},.........//.we.promis
1cc40 65 20 74 68 61 74 20 49 6e 76 61 6c 69 64 43 68 61 72 20 77 6f 6e 27 74 20 68 61 70 70 65 6e 20 e.that.InvalidChar.won't.happen.
1cc60 28 6f 72 20 63 72 61 73 68 20 69 6e 20 64 65 62 75 67 20 6d 6f 64 65 20 69 66 20 69 74 20 64 6f (or.crash.in.debug.mode.if.it.do
1cc80 65 73 29 0a 20 20 20 20 20 20 20 20 65 72 72 6f 72 2e 49 6e 76 61 6c 69 64 43 68 61 72 20 3d 26 es).........error.InvalidChar.=&
1cca0 67 74 3b 20 75 6e 72 65 61 63 68 61 62 6c 65 2c 0a 20 20 20 20 7d 0a 7d 3c 2f 63 6f 64 65 3e 3c gt;.unreachable,.....}.}</code><
1ccc0 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 6f 74 68 65 72 20 /pre>.......<p>.......The.other.
1cce0 63 6f 6d 70 6f 6e 65 6e 74 20 74 6f 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e 67 20 69 73 20 64 component.to.error.handling.is.d
1cd00 65 66 65 72 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 20 20 20 20 20 20 49 6e 20 61 64 64 69 74 69 efer.statements........In.additi
1cd20 6f 6e 20 74 6f 20 61 6e 20 75 6e 63 6f 6e 64 69 74 69 6f 6e 61 6c 20 3c 63 6f 64 65 3e 64 65 66 on.to.an.unconditional.<code>def
1cd40 65 72 3c 2f 63 6f 64 65 3e 2c 20 5a 69 67 20 68 61 73 20 3c 63 6f 64 65 3e 65 72 72 64 65 66 65 er</code>,.Zig.has.<code>errdefe
1cd60 72 3c 2f 63 6f 64 65 3e 2c 0a 20 20 20 20 20 20 77 68 69 63 68 20 65 76 61 6c 75 61 74 65 73 20 r</code>,.......which.evaluates.
1cd80 74 68 65 20 64 65 66 65 72 72 65 64 20 65 78 70 72 65 73 73 69 6f 6e 20 6f 6e 20 62 6c 6f 63 6b the.deferred.expression.on.block
1cda0 20 65 78 69 74 20 70 61 74 68 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 0a 20 20 20 20 20 20 .exit.path.if.and.only.if.......
1cdc0 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 65 64 20 77 69 74 68 20 61 6e 20 65 72 the.function.returned.with.an.er
1cde0 72 6f 72 20 66 72 6f 6d 20 74 68 65 20 62 6c 6f 63 6b 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 ror.from.the.block........</p>..
1ce00 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 45 78 61 6d 70 6c 65 3a 0a 20 20 20 20 20 20 3c 2f .....<p>.......Example:.......</
1ce20 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e p>.......<pre><code.class="zig">
1ce40 66 6e 20 63 72 65 61 74 65 46 6f 6f 28 70 61 72 61 6d 3a 20 69 33 32 29 20 21 46 6f 6f 20 7b 0a fn.createFoo(param:.i32).!Foo.{.
1ce60 20 20 20 20 63 6f 6e 73 74 20 66 6f 6f 20 3d 20 74 72 79 20 74 72 79 54 6f 41 6c 6c 6f 63 61 74 ....const.foo.=.try.tryToAllocat
1ce80 65 46 6f 6f 28 29 3b 0a 20 20 20 20 2f 2f 20 6e 6f 77 20 77 65 20 68 61 76 65 20 61 6c 6c 6f 63 eFoo();.....//.now.we.have.alloc
1cea0 61 74 65 64 20 66 6f 6f 2e 20 77 65 20 6e 65 65 64 20 74 6f 20 66 72 65 65 20 69 74 20 69 66 20 ated.foo..we.need.to.free.it.if.
1cec0 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 66 61 69 6c 73 2e 0a 20 20 20 20 2f 2f 20 62 75 74 20 77 the.function.fails......//.but.w
1cee0 65 20 77 61 6e 74 20 74 6f 20 72 65 74 75 72 6e 20 69 74 20 69 66 20 74 68 65 20 66 75 6e 63 74 e.want.to.return.it.if.the.funct
1cf00 69 6f 6e 20 73 75 63 63 65 65 64 73 2e 0a 20 20 20 20 65 72 72 64 65 66 65 72 20 64 65 61 6c 6c ion.succeeds......errdefer.deall
1cf20 6f 63 61 74 65 46 6f 6f 28 66 6f 6f 29 3b 0a 0a 20 20 20 20 63 6f 6e 73 74 20 74 6d 70 5f 62 75 ocateFoo(foo);......const.tmp_bu
1cf40 66 20 3d 20 61 6c 6c 6f 63 61 74 65 54 6d 70 42 75 66 66 65 72 28 29 20 3f 3f 20 72 65 74 75 72 f.=.allocateTmpBuffer().??.retur
1cf60 6e 20 65 72 72 6f 72 2e 4f 75 74 4f 66 4d 65 6d 6f 72 79 3b 0a 20 20 20 20 2f 2f 20 74 6d 70 5f n.error.OutOfMemory;.....//.tmp_
1cf80 62 75 66 20 69 73 20 74 72 75 6c 79 20 61 20 74 65 6d 70 6f 72 61 72 79 20 72 65 73 6f 75 72 63 buf.is.truly.a.temporary.resourc
1cfa0 65 2c 20 61 6e 64 20 77 65 20 66 6f 72 20 73 75 72 65 20 77 61 6e 74 20 74 6f 20 63 6c 65 61 6e e,.and.we.for.sure.want.to.clean
1cfc0 20 69 74 20 75 70 0a 20 20 20 20 2f 2f 20 62 65 66 6f 72 65 20 74 68 69 73 20 62 6c 6f 63 6b 20 .it.up.....//.before.this.block.
1cfe0 6c 65 61 76 65 73 20 73 63 6f 70 65 0a 20 20 20 20 64 65 66 65 72 20 64 65 61 6c 6c 6f 63 61 74 leaves.scope.....defer.deallocat
1d000 65 54 6d 70 42 75 66 66 65 72 28 74 6d 70 5f 62 75 66 29 3b 0a 0a 20 20 20 20 69 66 20 28 70 61 eTmpBuffer(tmp_buf);......if.(pa
1d020 72 61 6d 20 26 67 74 3b 20 31 33 33 37 29 20 72 65 74 75 72 6e 20 65 72 72 6f 72 2e 49 6e 76 61 ram.&gt;.1337).return.error.Inva
1d040 6c 69 64 50 61 72 61 6d 3b 0a 0a 20 20 20 20 2f 2f 20 68 65 72 65 20 74 68 65 20 65 72 72 64 65 lidParam;......//.here.the.errde
1d060 66 65 72 20 77 69 6c 6c 20 6e 6f 74 20 72 75 6e 20 73 69 6e 63 65 20 77 65 27 72 65 20 72 65 74 fer.will.not.run.since.we're.ret
1d080 75 72 6e 69 6e 67 20 73 75 63 63 65 73 73 20 66 72 6f 6d 20 74 68 65 20 66 75 6e 63 74 69 6f 6e urning.success.from.the.function
1d0a0 2e 0a 20 20 20 20 2f 2f 20 62 75 74 20 74 68 65 20 64 65 66 65 72 20 77 69 6c 6c 20 72 75 6e 21 ......//.but.the.defer.will.run!
1d0c0 0a 20 20 20 20 72 65 74 75 72 6e 20 66 6f 6f 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a .....return.foo;.}</code></pre>.
1d0e0 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 6e 65 61 74 20 74 68 69 6e 67 20 61 ......<p>.......The.neat.thing.a
1d100 62 6f 75 74 20 74 68 69 73 20 69 73 20 74 68 61 74 20 79 6f 75 20 67 65 74 20 72 6f 62 75 73 74 bout.this.is.that.you.get.robust
1d120 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e 67 20 77 69 74 68 6f 75 74 0a 20 20 20 20 20 20 74 68 .error.handling.without.......th
1d140 65 20 76 65 72 62 6f 73 69 74 79 20 61 6e 64 20 63 6f 67 6e 69 74 69 76 65 20 6f 76 65 72 68 65 e.verbosity.and.cognitive.overhe
1d160 61 64 20 6f 66 20 74 72 79 69 6e 67 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 65 76 65 72 79 20 ad.of.trying.to.make.sure.every.
1d180 65 78 69 74 20 70 61 74 68 0a 20 20 20 20 20 20 69 73 20 63 6f 76 65 72 65 64 2e 20 54 68 65 20 exit.path.......is.covered..The.
1d1a0 64 65 61 6c 6c 6f 63 61 74 69 6f 6e 20 63 6f 64 65 20 69 73 20 61 6c 77 61 79 73 20 64 69 72 65 deallocation.code.is.always.dire
1d1c0 63 74 6c 79 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 63 6f ctly.following.the.allocation.co
1d1e0 64 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 41 de........</p>.......<p>.......A
1d200 20 63 6f 75 70 6c 65 20 6f 66 20 6f 74 68 65 72 20 74 69 64 62 69 74 73 20 61 62 6f 75 74 20 65 .couple.of.other.tidbits.about.e
1d220 72 72 6f 72 20 68 61 6e 64 6c 69 6e 67 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 rror.handling:.......</p>.......
1d240 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 54 68 65 73 65 20 70 72 69 6d 69 74 69 76 65 <ul>.........<li>These.primitive
1d260 73 20 67 69 76 65 20 65 6e 6f 75 67 68 20 65 78 70 72 65 73 73 69 76 65 6e 65 73 73 20 74 68 61 s.give.enough.expressiveness.tha
1d280 74 20 69 74 27 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 70 72 61 63 74 69 63 61 6c 0a 20 20 20 20 t.it's.completely.practical.....
1d2a0 20 20 20 20 20 20 20 20 74 6f 20 68 61 76 65 20 66 61 69 6c 69 6e 67 20 74 6f 20 63 68 65 63 6b ........to.have.failing.to.check
1d2c0 20 66 6f 72 20 61 6e 20 65 72 72 6f 72 20 62 65 20 61 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 .for.an.error.be.a.compile.error
1d2e0 2e 20 49 66 20 79 6f 75 20 72 65 61 6c 6c 79 20 77 61 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 ..If.you.really.want............
1d300 20 74 6f 20 69 67 6e 6f 72 65 20 74 68 65 20 65 72 72 6f 72 2c 20 79 6f 75 20 63 61 6e 20 61 64 .to.ignore.the.error,.you.can.ad
1d320 64 20 3c 63 6f 64 65 3e 63 61 74 63 68 20 75 6e 72 65 61 63 68 61 62 6c 65 3c 2f 63 6f 64 65 3e d.<code>catch.unreachable</code>
1d340 20 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 74 68 65 20 61 64 64 65 64 20 62 .and.............get.the.added.b
1d360 65 6e 65 66 69 74 20 6f 66 20 63 72 61 73 68 69 6e 67 20 69 6e 20 44 65 62 75 67 20 61 6e 64 20 enefit.of.crashing.in.Debug.and.
1d380 52 65 6c 65 61 73 65 53 61 66 65 20 6d 6f 64 65 73 20 69 66 20 79 6f 75 72 20 61 73 73 75 6d 70 ReleaseSafe.modes.if.your.assump
1d3a0 74 69 6f 6e 20 77 61 73 20 77 72 6f 6e 67 2e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 tion.was.wrong..........</li>...
1d3c0 20 20 20 20 20 20 3c 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 53 69 6e 63 65 20 5a 69 67 20 75 ......<li>...........Since.Zig.u
1d3e0 6e 64 65 72 73 74 61 6e 64 73 20 65 72 72 6f 72 20 74 79 70 65 73 2c 20 69 74 20 63 61 6e 20 70 nderstands.error.types,.it.can.p
1d400 72 65 2d 77 65 69 67 68 74 20 62 72 61 6e 63 68 65 73 20 69 6e 20 66 61 76 6f 72 20 6f 66 0a 20 re-weight.branches.in.favor.of..
1d420 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 73 20 6e 6f 74 20 6f 63 63 75 72 69 6e 67 2e 20 4a 75 .........errors.not.occuring..Ju
1d440 73 74 20 61 20 73 6d 61 6c 6c 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 62 65 6e 65 66 69 74 20 st.a.small.optimization.benefit.
1d460 74 68 61 74 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 0a 20 20 20 20 20 20 20 20 20 20 that.is.not.available...........
1d480 69 6e 20 6f 74 68 65 72 20 6c 61 6e 67 75 61 67 65 73 2e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 in.other.languages..........</li
1d4a0 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a >.......</ul>.......<p>See.also:
1d4c0 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 64 65 66 65 72 22 3e 64 65 </p><ul>.<li><a.href="#defer">de
1d4e0 66 65 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 66 22 3e 69 fer</a></li>.<li><a.href="#if">i
1d500 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 77 69 74 63 68 22 f</a></li>.<li><a.href="#switch"
1d520 3e 73 77 69 74 63 68 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 0a 20 20 20 20 20 20 3c >switch</a></li>.</ul>.........<
1d540 70 3e 41 6e 20 65 72 72 6f 72 20 75 6e 69 6f 6e 20 69 73 20 63 72 65 61 74 65 64 20 77 69 74 68 p>An.error.union.is.created.with
1d560 20 74 68 65 20 3c 63 6f 64 65 3e 21 3c 2f 63 6f 64 65 3e 20 62 69 6e 61 72 79 20 6f 70 65 72 61 .the.<code>!</code>.binary.opera
1d580 74 6f 72 2e 0a 20 20 20 20 20 20 59 6f 75 20 63 61 6e 20 75 73 65 20 63 6f 6d 70 69 6c 65 2d 74 tor........You.can.use.compile-t
1d5a0 69 6d 65 20 72 65 66 6c 65 63 74 69 6f 6e 20 74 6f 20 61 63 63 65 73 73 20 74 68 65 20 63 68 69 ime.reflection.to.access.the.chi
1d5c0 6c 64 20 74 79 70 65 20 6f 66 20 61 6e 20 65 72 72 6f 72 20 75 6e 69 6f 6e 3a 3c 2f 70 3e 0a 20 ld.type.of.an.error.union:</p>..
1d5e0 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 .....<p.class="file">test.zig</p
1d600 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 ><pre><code.class="zig">const.as
1d620 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e sert.=.@import(&quot;std&quot;).
1d640 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 65 72 72 6f 72 20 debug.assert;..test.&quot;error.
1d660 75 6e 69 6f 6e 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 76 61 72 20 66 6f 6f 3a 20 65 72 72 6f 72 union&quot;.{.....var.foo:.error
1d680 21 69 33 32 20 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0a 0a 20 20 20 20 2f 2f 20 49 6d 70 6c 69 63 !i32.=.undefined;......//.Implic
1d6a0 69 74 6c 79 20 63 61 73 74 20 66 72 6f 6d 20 63 68 69 6c 64 20 74 79 70 65 20 6f 66 20 61 6e 20 itly.cast.from.child.type.of.an.
1d6c0 65 72 72 6f 72 20 75 6e 69 6f 6e 3a 0a 20 20 20 20 66 6f 6f 20 3d 20 31 32 33 34 3b 0a 0a 20 20 error.union:.....foo.=.1234;....
1d6e0 20 20 2f 2f 20 49 6d 70 6c 69 63 69 74 6c 79 20 63 61 73 74 20 66 72 6f 6d 20 61 6e 20 65 72 72 ..//.Implicitly.cast.from.an.err
1d700 6f 72 20 73 65 74 3a 0a 20 20 20 20 66 6f 6f 20 3d 20 65 72 72 6f 72 2e 53 6f 6d 65 45 72 72 6f or.set:.....foo.=.error.SomeErro
1d720 72 3b 0a 0a 20 20 20 20 2f 2f 20 55 73 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 72 65 66 6c r;......//.Use.compile-time.refl
1d740 65 63 74 69 6f 6e 20 74 6f 20 61 63 63 65 73 73 20 74 68 65 20 70 61 79 6c 6f 61 64 20 74 79 70 ection.to.access.the.payload.typ
1d760 65 20 6f 66 20 61 6e 20 65 72 72 6f 72 20 75 6e 69 6f 6e 3a 0a 20 20 20 20 63 6f 6d 70 74 69 6d e.of.an.error.union:.....comptim
1d780 65 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 66 6f 6f 29 2e 50 61 79 6c 6f 61 64 20 3d 3d e.assert(@typeOf(foo).Payload.==
1d7a0 20 69 33 32 29 3b 0a 0a 20 20 20 20 2f 2f 20 55 73 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 .i32);......//.Use.compile-time.
1d7c0 72 65 66 6c 65 63 74 69 6f 6e 20 74 6f 20 61 63 63 65 73 73 20 74 68 65 20 65 72 72 6f 72 20 73 reflection.to.access.the.error.s
1d7e0 65 74 20 74 79 70 65 20 6f 66 20 61 6e 20 65 72 72 6f 72 20 75 6e 69 6f 6e 3a 0a 20 20 20 20 63 et.type.of.an.error.union:.....c
1d800 6f 6d 70 74 69 6d 65 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 66 6f 6f 29 2e 45 72 72 6f omptime.assert(@typeOf(foo).Erro
1d820 72 53 65 74 20 3d 3d 20 65 72 72 6f 72 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 rSet.==.error);.}</code></pre><p
1d840 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 re><code.class="shell">$.zig.tes
1d860 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 65 72 72 6f 72 20 75 6e 69 6f 6e 2e t.test.zig.Test.1/1.error.union.
1d880 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 ..OK.</code></pre>........<p>TOD
1d8a0 4f 20 74 68 65 20 3c 63 6f 64 65 3e 7c 7c 3c 2f 63 6f 64 65 3e 20 6f 70 65 72 61 74 6f 72 20 66 O.the.<code>||</code>.operator.f
1d8c0 6f 72 20 65 72 72 6f 72 20 73 65 74 73 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 or.error.sets</p>.......<h3.id="
1d8e0 49 6e 66 65 72 72 65 64 2d 45 72 72 6f 72 2d 53 65 74 73 22 3e 49 6e 66 65 72 72 65 64 20 45 72 Inferred-Error-Sets">Inferred.Er
1d900 72 6f 72 20 53 65 74 73 3c 2f 68 33 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3c 2f 70 3e ror.Sets</h3>........<p>TODO</p>
1d920 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 45 72 72 .....................<h2.id="Err
1d940 6f 72 2d 52 65 74 75 72 6e 2d 54 72 61 63 65 73 22 3e 45 72 72 6f 72 20 52 65 74 75 72 6e 20 54 or-Return-Traces">Error.Return.T
1d960 72 61 63 65 73 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3c 2f 70 3e 0a 20 20 races</h2>........<p>TODO</p>...
1d980 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 4e 75 6c 6c 61 62 ..................<h1.id="Nullab
1d9a0 6c 65 73 22 3e 4e 75 6c 6c 61 62 6c 65 73 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 les">Nullables</h1>........<p>..
1d9c0 20 20 20 20 20 4f 6e 65 20 61 72 65 61 20 74 68 61 74 20 5a 69 67 20 70 72 6f 76 69 64 65 73 20 .....One.area.that.Zig.provides.
1d9e0 73 61 66 65 74 79 20 77 69 74 68 6f 75 74 20 63 6f 6d 70 72 6f 6d 69 73 69 6e 67 20 65 66 66 69 safety.without.compromising.effi
1da00 63 69 65 6e 63 79 20 6f 72 0a 20 20 20 20 20 20 72 65 61 64 61 62 69 6c 69 74 79 20 69 73 20 77 ciency.or.......readability.is.w
1da20 69 74 68 20 74 68 65 20 6e 75 6c 6c 61 62 6c 65 20 74 79 70 65 2e 0a 20 20 20 20 20 20 3c 2f 70 ith.the.nullable.type........</p
1da40 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 71 75 65 73 74 69 6f 6e 20 6d >.......<p>.......The.question.m
1da60 61 72 6b 20 73 79 6d 62 6f 6c 69 7a 65 73 20 74 68 65 20 6e 75 6c 6c 61 62 6c 65 20 74 79 70 65 ark.symbolizes.the.nullable.type
1da80 2e 20 59 6f 75 20 63 61 6e 20 63 6f 6e 76 65 72 74 20 61 20 74 79 70 65 20 74 6f 20 61 20 6e 75 ..You.can.convert.a.type.to.a.nu
1daa0 6c 6c 61 62 6c 65 0a 20 20 20 20 20 20 74 79 70 65 20 62 79 20 70 75 74 74 69 6e 67 20 61 20 71 llable.......type.by.putting.a.q
1dac0 75 65 73 74 69 6f 6e 20 6d 61 72 6b 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 69 74 2c 20 6c 69 6b uestion.mark.in.front.of.it,.lik
1dae0 65 20 74 68 69 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 e.this:.......</p>.......<pre><c
1db00 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2f 2f 20 6e 6f 72 6d 61 6c 20 69 6e 74 65 67 65 ode.class="zig">//.normal.intege
1db20 72 0a 63 6f 6e 73 74 20 6e 6f 72 6d 61 6c 5f 69 6e 74 3a 20 69 33 32 20 3d 20 31 32 33 34 3b 0a r.const.normal_int:.i32.=.1234;.
1db40 0a 2f 2f 20 6e 75 6c 6c 61 62 6c 65 20 69 6e 74 65 67 65 72 0a 63 6f 6e 73 74 20 6e 75 6c 6c 61 .//.nullable.integer.const.nulla
1db60 62 6c 65 5f 69 6e 74 3a 20 3f 69 33 32 20 3d 20 35 36 37 38 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 ble_int:.?i32.=.5678;</code></pr
1db80 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4e 6f 77 20 74 68 65 20 76 61 72 69 61 e>.......<p>.......Now.the.varia
1dba0 62 6c 65 20 3c 63 6f 64 65 3e 6e 75 6c 6c 61 62 6c 65 5f 69 6e 74 3c 2f 63 6f 64 65 3e 20 63 6f ble.<code>nullable_int</code>.co
1dbc0 75 6c 64 20 62 65 20 61 6e 20 3c 63 6f 64 65 3e 69 33 32 3c 2f 63 6f 64 65 3e 2c 20 6f 72 20 3c uld.be.an.<code>i32</code>,.or.<
1dbe0 63 6f 64 65 3e 6e 75 6c 6c 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 code>null</code>........</p>....
1dc00 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 73 74 65 61 64 20 6f 66 20 69 6e 74 65 67 65 72 73 ...<p>.......Instead.of.integers
1dc20 2c 20 6c 65 74 27 73 20 74 61 6c 6b 20 61 62 6f 75 74 20 70 6f 69 6e 74 65 72 73 2e 20 4e 75 6c ,.let's.talk.about.pointers..Nul
1dc40 6c 20 72 65 66 65 72 65 6e 63 65 73 20 61 72 65 20 74 68 65 20 73 6f 75 72 63 65 20 6f 66 20 6d l.references.are.the.source.of.m
1dc60 61 6e 79 20 72 75 6e 74 69 6d 65 0a 20 20 20 20 20 20 65 78 63 65 70 74 69 6f 6e 73 2c 20 61 6e any.runtime.......exceptions,.an
1dc80 64 20 65 76 65 6e 20 73 74 61 6e 64 20 61 63 63 75 73 65 64 20 6f 66 20 62 65 69 6e 67 0a 20 20 d.even.stand.accused.of.being...
1dca0 20 20 20 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 77 77 77 2e 6c 75 63 69 64 63 68 ....<a.href="https://www.lucidch
1dcc0 61 72 74 2e 63 6f 6d 2f 74 65 63 68 62 6c 6f 67 2f 32 30 31 35 2f 30 38 2f 33 31 2f 74 68 65 2d art.com/techblog/2015/08/31/the-
1dce0 77 6f 72 73 74 2d 6d 69 73 74 61 6b 65 2d 6f 66 2d 63 6f 6d 70 75 74 65 72 2d 73 63 69 65 6e 63 worst-mistake-of-computer-scienc
1dd00 65 2f 22 3e 74 68 65 20 77 6f 72 73 74 20 6d 69 73 74 61 6b 65 20 6f 66 20 63 6f 6d 70 75 74 65 e/">the.worst.mistake.of.compute
1dd20 72 20 73 63 69 65 6e 63 65 3c 2f 61 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 r.science</a>........</p>.......
1dd40 3c 70 3e 5a 69 67 20 64 6f 65 73 20 6e 6f 74 20 68 61 76 65 20 74 68 65 6d 2e 3c 2f 70 3e 0a 20 <p>Zig.does.not.have.them.</p>..
1dd60 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 73 74 65 61 64 2c 20 79 6f 75 20 63 61 6e 20 .....<p>.......Instead,.you.can.
1dd80 75 73 65 20 61 20 6e 75 6c 6c 61 62 6c 65 20 70 6f 69 6e 74 65 72 2e 20 54 68 69 73 20 73 65 63 use.a.nullable.pointer..This.sec
1dda0 72 65 74 6c 79 20 63 6f 6d 70 69 6c 65 73 20 64 6f 77 6e 20 74 6f 20 61 20 6e 6f 72 6d 61 6c 20 retly.compiles.down.to.a.normal.
1ddc0 70 6f 69 6e 74 65 72 2c 0a 20 20 20 20 20 20 73 69 6e 63 65 20 77 65 20 6b 6e 6f 77 20 77 65 20 pointer,.......since.we.know.we.
1dde0 63 61 6e 20 75 73 65 20 30 20 61 73 20 74 68 65 20 6e 75 6c 6c 20 76 61 6c 75 65 20 66 6f 72 20 can.use.0.as.the.null.value.for.
1de00 74 68 65 20 6e 75 6c 6c 61 62 6c 65 20 74 79 70 65 2e 20 42 75 74 20 74 68 65 20 63 6f 6d 70 69 the.nullable.type..But.the.compi
1de20 6c 65 72 0a 20 20 20 20 20 20 63 61 6e 20 63 68 65 63 6b 20 79 6f 75 72 20 77 6f 72 6b 20 61 6e ler.......can.check.your.work.an
1de40 64 20 6d 61 6b 65 20 73 75 72 65 20 79 6f 75 20 64 6f 6e 27 74 20 61 73 73 69 67 6e 20 6e 75 6c d.make.sure.you.don't.assign.nul
1de60 6c 20 74 6f 20 73 6f 6d 65 74 68 69 6e 67 20 74 68 61 74 20 63 61 6e 27 74 20 62 65 20 6e 75 6c l.to.something.that.can't.be.nul
1de80 6c 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 79 l........</p>.......<p>.......Ty
1dea0 70 69 63 61 6c 6c 79 20 74 68 65 20 64 6f 77 6e 73 69 64 65 20 6f 66 20 6e 6f 74 20 68 61 76 69 pically.the.downside.of.not.havi
1dec0 6e 67 20 6e 75 6c 6c 20 69 73 20 74 68 61 74 20 69 74 20 6d 61 6b 65 73 20 74 68 65 20 63 6f 64 ng.null.is.that.it.makes.the.cod
1dee0 65 20 6d 6f 72 65 20 76 65 72 62 6f 73 65 20 74 6f 0a 20 20 20 20 20 20 77 72 69 74 65 2e 20 42 e.more.verbose.to.......write..B
1df00 75 74 2c 20 6c 65 74 27 73 20 63 6f 6d 70 61 72 65 20 73 6f 6d 65 20 65 71 75 69 76 61 6c 65 6e ut,.let's.compare.some.equivalen
1df20 74 20 43 20 63 6f 64 65 20 61 6e 64 20 5a 69 67 20 63 6f 64 65 2e 0a 20 20 20 20 20 20 3c 2f 70 t.C.code.and.Zig.code........</p
1df40 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 61 73 6b 3a 20 63 61 6c 6c 20 6d 61 6c >.......<p>.......Task:.call.mal
1df60 6c 6f 63 2c 20 69 66 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 6e 75 6c 6c 2c 20 72 65 74 75 loc,.if.the.result.is.null,.retu
1df80 72 6e 20 6e 75 6c 6c 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 43 20 63 rn.null........</p>.......<p>C.c
1dfa0 6f 64 65 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 ode</p>.......<pre><code.class="
1dfc0 63 70 70 22 3e 2f 2f 20 6d 61 6c 6c 6f 63 20 70 72 6f 74 6f 74 79 70 65 20 69 6e 63 6c 75 64 65 cpp">//.malloc.prototype.include
1dfe0 64 20 66 6f 72 20 72 65 66 65 72 65 6e 63 65 0a 76 6f 69 64 20 2a 6d 61 6c 6c 6f 63 28 73 69 7a d.for.reference.void.*malloc(siz
1e000 65 5f 74 20 73 69 7a 65 29 3b 0a 0a 73 74 72 75 63 74 20 46 6f 6f 20 2a 64 6f 5f 61 5f 74 68 69 e_t.size);..struct.Foo.*do_a_thi
1e020 6e 67 28 76 6f 69 64 29 20 7b 0a 20 20 20 20 63 68 61 72 20 2a 70 74 72 20 3d 20 6d 61 6c 6c 6f ng(void).{.....char.*ptr.=.mallo
1e040 63 28 31 32 33 34 29 3b 0a 20 20 20 20 69 66 20 28 21 70 74 72 29 20 72 65 74 75 72 6e 20 4e 55 c(1234);.....if.(!ptr).return.NU
1e060 4c 4c 3b 0a 20 20 20 20 2f 2f 20 2e 2e 2e 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 LL;.....//.....}</code></pre>...
1e080 20 20 20 20 3c 70 3e 5a 69 67 20 63 6f 64 65 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c ....<p>Zig.code</p>.......<pre><
1e0a0 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2f 2f 20 6d 61 6c 6c 6f 63 20 70 72 6f 74 6f code.class="zig">//.malloc.proto
1e0c0 74 79 70 65 20 69 6e 63 6c 75 64 65 64 20 66 6f 72 20 72 65 66 65 72 65 6e 63 65 0a 65 78 74 65 type.included.for.reference.exte
1e0e0 72 6e 20 66 6e 20 6d 61 6c 6c 6f 63 28 73 69 7a 65 3a 20 73 69 7a 65 5f 74 29 20 3f 26 61 6d 70 rn.fn.malloc(size:.size_t).?&amp
1e100 3b 75 38 3b 0a 0a 66 6e 20 64 6f 41 54 68 69 6e 67 28 29 20 3f 26 61 6d 70 3b 46 6f 6f 20 7b 0a ;u8;..fn.doAThing().?&amp;Foo.{.
1e120 20 20 20 20 63 6f 6e 73 74 20 70 74 72 20 3d 20 6d 61 6c 6c 6f 63 28 31 32 33 34 29 20 3f 3f 20 ....const.ptr.=.malloc(1234).??.
1e140 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0a 20 20 20 20 2f 2f 20 2e 2e 2e 0a 7d 3c 2f 63 6f 64 65 3e return.null;.....//.....}</code>
1e160 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 20 20 48 65 72 65 2c 20 5a </pre>.......<p>.........Here,.Z
1e180 69 67 20 69 73 20 61 74 20 6c 65 61 73 74 20 61 73 20 63 6f 6e 76 65 6e 69 65 6e 74 2c 20 69 66 ig.is.at.least.as.convenient,.if
1e1a0 20 6e 6f 74 20 6d 6f 72 65 2c 20 74 68 61 6e 20 43 2e 20 41 6e 64 2c 20 74 68 65 20 74 79 70 65 .not.more,.than.C..And,.the.type
1e1c0 20 6f 66 20 22 70 74 72 22 0a 20 20 20 20 20 20 20 20 69 73 20 3c 63 6f 64 65 3e 26 61 6d 70 3b .of."ptr".........is.<code>&amp;
1e1e0 75 38 3c 2f 63 6f 64 65 3e 20 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 3c 63 6f 64 65 3e 3f 26 61 u8</code>.<em>not</em>.<code>?&a
1e200 6d 70 3b 75 38 3c 2f 63 6f 64 65 3e 2e 20 54 68 65 20 3c 63 6f 64 65 3e 3f 3f 3c 2f 63 6f 64 65 mp;u8</code>..The.<code>??</code
1e220 3e 20 6f 70 65 72 61 74 6f 72 0a 20 20 20 20 20 20 20 20 75 6e 77 72 61 70 70 65 64 20 74 68 65 >.operator.........unwrapped.the
1e240 20 6e 75 6c 6c 61 62 6c 65 20 74 79 70 65 20 61 6e 64 20 74 68 65 72 65 66 6f 72 65 20 3c 63 6f .nullable.type.and.therefore.<co
1e260 64 65 3e 70 74 72 3c 2f 63 6f 64 65 3e 20 69 73 20 67 75 61 72 61 6e 74 65 65 64 20 74 6f 20 62 de>ptr</code>.is.guaranteed.to.b
1e280 65 20 6e 6f 6e 2d 6e 75 6c 6c 20 65 76 65 72 79 77 68 65 72 65 0a 20 20 20 20 20 20 20 20 69 74 e.non-null.everywhere.........it
1e2a0 20 69 73 20 75 73 65 64 20 69 6e 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 2e 0a 20 20 20 20 20 20 .is.used.in.the.function........
1e2c0 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 20 20 54 68 65 20 6f 74 68 65 72 </p>.......<p>.........The.other
1e2e0 20 66 6f 72 6d 20 6f 66 20 63 68 65 63 6b 69 6e 67 20 61 67 61 69 6e 73 74 20 4e 55 4c 4c 20 79 .form.of.checking.against.NULL.y
1e300 6f 75 20 6d 69 67 68 74 20 73 65 65 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 74 68 69 73 3a 0a 20 20 ou.might.see.looks.like.this:...
1e320 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d ....</p>.......<pre><code.class=
1e340 22 63 70 70 22 3e 76 6f 69 64 20 64 6f 5f 61 5f 74 68 69 6e 67 28 73 74 72 75 63 74 20 46 6f 6f "cpp">void.do_a_thing(struct.Foo
1e360 20 2a 66 6f 6f 29 20 7b 0a 20 20 20 20 2f 2f 20 64 6f 20 73 6f 6d 65 20 73 74 75 66 66 0a 0a 20 .*foo).{.....//.do.some.stuff...
1e380 20 20 20 69 66 20 28 66 6f 6f 29 20 7b 0a 20 20 20 20 20 20 20 20 64 6f 5f 73 6f 6d 65 74 68 69 ...if.(foo).{.........do_somethi
1e3a0 6e 67 5f 77 69 74 68 5f 66 6f 6f 28 66 6f 6f 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 ng_with_foo(foo);.....}......//.
1e3c0 64 6f 20 73 6f 6d 65 20 73 74 75 66 66 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 do.some.stuff.}</code></pre>....
1e3e0 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 20 20 49 6e 20 5a 69 67 20 79 6f 75 20 63 61 6e 20 61 63 ...<p>.........In.Zig.you.can.ac
1e400 63 6f 6d 70 6c 69 73 68 20 74 68 65 20 73 61 6d 65 20 74 68 69 6e 67 3a 0a 20 20 20 20 20 20 3c complish.the.same.thing:.......<
1e420 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 /p>.......<pre><code.class="zig"
1e440 3e 66 6e 20 64 6f 41 54 68 69 6e 67 28 6e 75 6c 6c 61 62 6c 65 5f 66 6f 6f 3a 20 3f 26 61 6d 70 >fn.doAThing(nullable_foo:.?&amp
1e460 3b 46 6f 6f 29 20 76 6f 69 64 20 7b 0a 20 20 20 20 2f 2f 20 64 6f 20 73 6f 6d 65 20 73 74 75 66 ;Foo).void.{.....//.do.some.stuf
1e480 66 0a 0a 20 20 20 20 69 66 20 28 6e 75 6c 6c 61 62 6c 65 5f 66 6f 6f 29 20 7c 66 6f 6f 7c 20 7b f......if.(nullable_foo).|foo|.{
1e4a0 0a 20 20 20 20 20 20 64 6f 53 6f 6d 65 74 68 69 6e 67 57 69 74 68 46 6f 6f 28 66 6f 6f 29 3b 0a .......doSomethingWithFoo(foo);.
1e4c0 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 64 6f 20 73 6f 6d 65 20 73 74 75 66 66 0a 7d 3c 2f 63 ....}......//.do.some.stuff.}</c
1e4e0 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4f 6e 63 65 20 ode></pre>.......<p>.......Once.
1e500 61 67 61 69 6e 2c 20 74 68 65 20 6e 6f 74 61 62 6c 65 20 74 68 69 6e 67 20 68 65 72 65 20 69 73 again,.the.notable.thing.here.is
1e520 20 74 68 61 74 20 69 6e 73 69 64 65 20 74 68 65 20 69 66 20 62 6c 6f 63 6b 2c 0a 20 20 20 20 20 .that.inside.the.if.block,......
1e540 20 3c 63 6f 64 65 3e 66 6f 6f 3c 2f 63 6f 64 65 3e 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 61 .<code>foo</code>.is.no.longer.a
1e560 20 6e 75 6c 6c 61 62 6c 65 20 70 6f 69 6e 74 65 72 2c 20 69 74 20 69 73 20 61 20 70 6f 69 6e 74 .nullable.pointer,.it.is.a.point
1e580 65 72 2c 20 77 68 69 63 68 0a 20 20 20 20 20 20 63 61 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c 2e 0a er,.which.......cannot.be.null..
1e5a0 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4f 6e 65 20 62 ......</p>.......<p>.......One.b
1e5c0 65 6e 65 66 69 74 20 74 6f 20 74 68 69 73 20 69 73 20 74 68 61 74 20 66 75 6e 63 74 69 6f 6e 73 enefit.to.this.is.that.functions
1e5e0 20 77 68 69 63 68 20 74 61 6b 65 20 70 6f 69 6e 74 65 72 73 20 61 73 20 61 72 67 75 6d 65 6e 74 .which.take.pointers.as.argument
1e600 73 20 63 61 6e 0a 20 20 20 20 20 20 62 65 20 61 6e 6e 6f 74 61 74 65 64 20 77 69 74 68 20 74 68 s.can.......be.annotated.with.th
1e620 65 20 22 6e 6f 6e 6e 75 6c 6c 22 20 61 74 74 72 69 62 75 74 65 20 2d 20 3c 63 6f 64 65 3e 5f 5f e."nonnull".attribute.-.<code>__
1e640 61 74 74 72 69 62 75 74 65 5f 5f 28 28 6e 6f 6e 6e 75 6c 6c 29 29 3c 2f 63 6f 64 65 3e 20 69 6e attribute__((nonnull))</code>.in
1e660 0a 20 20 20 20 20 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 67 63 63 2e 67 6e 75 2e .......<a.href="https://gcc.gnu.
1e680 6f 72 67 2f 6f 6e 6c 69 6e 65 64 6f 63 73 2f 67 63 63 2d 34 2e 30 2e 30 2f 67 63 63 2f 46 75 6e org/onlinedocs/gcc-4.0.0/gcc/Fun
1e6a0 63 74 69 6f 6e 2d 41 74 74 72 69 62 75 74 65 73 2e 68 74 6d 6c 22 3e 47 43 43 3c 2f 61 3e 2e 0a ction-Attributes.html">GCC</a>..
1e6c0 20 20 20 20 20 20 54 68 65 20 6f 70 74 69 6d 69 7a 65 72 20 63 61 6e 20 73 6f 6d 65 74 69 6d 65 ......The.optimizer.can.sometime
1e6e0 73 20 6d 61 6b 65 20 62 65 74 74 65 72 20 64 65 63 69 73 69 6f 6e 73 20 6b 6e 6f 77 69 6e 67 20 s.make.better.decisions.knowing.
1e700 74 68 61 74 20 70 6f 69 6e 74 65 72 20 61 72 67 75 6d 65 6e 74 73 0a 20 20 20 20 20 20 63 61 6e that.pointer.arguments.......can
1e720 6e 6f 74 20 62 65 20 6e 75 6c 6c 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 not.be.null........</p>.......<h
1e740 32 20 69 64 3d 22 4e 75 6c 6c 61 62 6c 65 2d 54 79 70 65 22 3e 4e 75 6c 6c 61 62 6c 65 20 54 79 2.id="Nullable-Type">Nullable.Ty
1e760 70 65 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 41 20 6e 75 6c 6c 61 62 6c 65 20 69 73 20 pe</h2>........<p>A.nullable.is.
1e780 63 72 65 61 74 65 64 20 62 79 20 70 75 74 74 69 6e 67 20 3c 63 6f 64 65 3e 3f 3c 2f 63 6f 64 65 created.by.putting.<code>?</code
1e7a0 3e 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 61 20 74 79 70 65 2e 20 59 6f 75 20 63 61 6e 20 75 73 >.in.front.of.a.type..You.can.us
1e7c0 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 20 20 20 20 20 20 72 65 66 6c 65 63 74 69 6f 6e 20 e.compile-time.......reflection.
1e7e0 74 6f 20 61 63 63 65 73 73 20 74 68 65 20 63 68 69 6c 64 20 74 79 70 65 20 6f 66 20 61 20 6e 75 to.access.the.child.type.of.a.nu
1e800 6c 6c 61 62 6c 65 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 llable:</p>.......<p.class="file
1e820 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 ">test.zig</p><pre><code.class="
1e840 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f zig">const.assert.=.@import(&quo
1e860 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 74 65 73 74 t;std&quot;).debug.assert;..test
1e880 20 26 71 75 6f 74 3b 6e 75 6c 6c 61 62 6c 65 20 74 79 70 65 26 71 75 6f 74 3b 20 7b 0a 20 20 20 .&quot;nullable.type&quot;.{....
1e8a0 20 2f 2f 20 44 65 63 6c 61 72 65 20 61 20 6e 75 6c 6c 61 62 6c 65 20 61 6e 64 20 69 6d 70 6c 69 .//.Declare.a.nullable.and.impli
1e8c0 63 69 74 6c 79 20 63 61 73 74 20 66 72 6f 6d 20 6e 75 6c 6c 3a 0a 20 20 20 20 76 61 72 20 66 6f citly.cast.from.null:.....var.fo
1e8e0 6f 3a 20 3f 69 33 32 20 3d 20 6e 75 6c 6c 3b 0a 0a 20 20 20 20 2f 2f 20 49 6d 70 6c 69 63 69 74 o:.?i32.=.null;......//.Implicit
1e900 6c 79 20 63 61 73 74 20 66 72 6f 6d 20 63 68 69 6c 64 20 74 79 70 65 20 6f 66 20 61 20 6e 75 6c ly.cast.from.child.type.of.a.nul
1e920 6c 61 62 6c 65 0a 20 20 20 20 66 6f 6f 20 3d 20 31 32 33 34 3b 0a 0a 20 20 20 20 2f 2f 20 55 73 lable.....foo.=.1234;......//.Us
1e940 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 72 65 66 6c 65 63 74 69 6f 6e 20 74 6f 20 61 63 63 e.compile-time.reflection.to.acc
1e960 65 73 73 20 74 68 65 20 63 68 69 6c 64 20 74 79 70 65 20 6f 66 20 74 68 65 20 6e 75 6c 6c 61 62 ess.the.child.type.of.the.nullab
1e980 6c 65 3a 0a 20 20 20 20 63 6f 6d 70 74 69 6d 65 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 le:.....comptime.assert(@typeOf(
1e9a0 66 6f 6f 29 2e 43 68 69 6c 64 20 3d 3d 20 69 33 32 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 foo).Child.==.i32);.}</code></pr
1e9c0 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 e><pre><code.class="shell">$.zig
1e9e0 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 6e 75 6c 6c 61 62 6c 65 .test.test.zig.Test.1/1.nullable
1ea00 20 74 79 70 65 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 .type...OK.</code></pre>........
1ea20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 43 61 73 74 69 6e 67 22 3e 43 ..............<h1.id="Casting">C
1ea40 61 73 74 69 6e 67 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 70 6c asting</h1>........<p>TODO:.expl
1ea60 61 69 6e 20 69 6d 70 6c 69 63 69 74 20 76 73 20 65 78 70 6c 69 63 69 74 20 63 61 73 74 69 6e 67 ain.implicit.vs.explicit.casting
1ea80 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 72 65 73 6f 6c 76 65 20 70 65 65 72 </p>.......<p>TODO:.resolve.peer
1eaa0 20 74 79 70 65 73 20 62 75 69 6c 74 69 6e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f .types.builtin</p>.......<p>TODO
1eac0 3a 20 74 72 75 6e 63 61 74 65 20 62 75 69 6c 74 69 6e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e :.truncate.builtin</p>.......<p>
1eae0 54 4f 44 4f 3a 20 62 69 74 63 61 73 74 20 62 75 69 6c 74 69 6e 3c 2f 70 3e 0a 20 20 20 20 20 20 TODO:.bitcast.builtin</p>.......
1eb00 3c 70 3e 54 4f 44 4f 3a 20 69 6e 74 20 74 6f 20 70 74 72 20 62 75 69 6c 74 69 6e 3c 2f 70 3e 0a <p>TODO:.int.to.ptr.builtin</p>.
1eb20 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 70 74 72 20 74 6f 20 69 6e 74 20 62 75 69 6c 74 69 ......<p>TODO:.ptr.to.int.builti
1eb40 6e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 70 74 72 63 61 73 74 20 62 75 69 n</p>.......<p>TODO:.ptrcast.bui
1eb60 6c 74 69 6e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 70 6c 61 69 6e 20 ltin</p>.......<p>TODO:.explain.
1eb80 6e 75 6d 62 65 72 20 6c 69 74 65 72 61 6c 73 20 76 73 20 63 6f 6e 63 72 65 74 65 20 74 79 70 65 number.literals.vs.concrete.type
1eba0 73 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 76 6f 69 64 22 s</p>..............<h1.id="void"
1ebc0 3e 76 6f 69 64 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 61 73 73 69 67 >void</h1>........<p>TODO:.assig
1ebe0 6e 69 6e 67 20 76 6f 69 64 20 68 61 73 20 6e 6f 20 63 6f 64 65 67 65 6e 3c 2f 70 3e 0a 20 20 20 ning.void.has.no.codegen</p>....
1ec00 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 68 61 73 68 6d 61 70 20 77 69 74 68 20 76 6f 69 64 20 62 65 ...<p>TODO:.hashmap.with.void.be
1ec20 63 6f 6d 65 73 20 61 20 73 65 74 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 64 comes.a.set</p>.......<p>TODO:.d
1ec40 69 66 66 65 72 65 6e 63 65 20 62 65 74 77 65 65 6e 20 63 5f 76 6f 69 64 20 61 6e 64 20 76 6f 69 ifference.between.c_void.and.voi
1ec60 64 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 76 6f 69 64 20 69 73 20 74 68 65 d</p>.......<p>TODO:.void.is.the
1ec80 20 64 65 66 61 75 6c 74 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 6f 66 20 66 75 6e 63 74 69 6f .default.return.value.of.functio
1eca0 6e 73 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 66 75 6e 63 74 69 6f 6e 73 20 ns</p>.......<p>TODO:.functions.
1ecc0 72 65 71 75 69 72 65 20 61 73 73 69 67 6e 69 6e 67 20 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c require.assigning.the.return.val
1ece0 75 65 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 74 68 69 73 ue</p>..............<h1.id="this
1ed00 22 3e 74 68 69 73 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 61 6d ">this</h1>........<p>TODO:.exam
1ed20 70 6c 65 20 6f 66 20 74 68 69 73 20 72 65 66 65 72 72 69 6e 67 20 74 6f 20 53 65 6c 66 20 73 74 ple.of.this.referring.to.Self.st
1ed40 72 75 63 74 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 61 6d 70 6c 65 20 ruct</p>.......<p>TODO:.example.
1ed60 6f 66 20 74 68 69 73 20 72 65 66 65 72 72 69 6e 67 20 74 6f 20 72 65 63 75 72 73 69 6f 6e 20 66 of.this.referring.to.recursion.f
1ed80 75 6e 63 74 69 6f 6e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 61 6d 70 unction</p>.......<p>TODO:.examp
1eda0 6c 65 20 6f 66 20 74 68 69 73 20 72 65 66 65 72 72 69 6e 67 20 74 6f 20 62 61 73 69 63 20 62 6c le.of.this.referring.to.basic.bl
1edc0 6f 63 6b 20 66 6f 72 20 40 73 65 74 52 75 6e 74 69 6d 65 53 61 66 65 74 79 3c 2f 70 3e 0a 20 20 ock.for.@setRuntimeSafety</p>...
1ede0 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 63 6f 6d 70 74 69 6d 65 22 3e 63 6f 6d ...........<h1.id="comptime">com
1ee00 70 74 69 6d 65 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 5a 69 67 20 ptime</h1>........<p>.......Zig.
1ee20 70 6c 61 63 65 73 20 69 6d 70 6f 72 74 61 6e 63 65 20 6f 6e 20 74 68 65 20 63 6f 6e 63 65 70 74 places.importance.on.the.concept
1ee40 20 6f 66 20 77 68 65 74 68 65 72 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 6b 6e 6f .of.whether.an.expression.is.kno
1ee60 77 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2e 0a 20 20 20 20 20 20 54 68 65 72 65 20 wn.at.compile-time........There.
1ee80 61 72 65 20 61 20 66 65 77 20 64 69 66 66 65 72 65 6e 74 20 70 6c 61 63 65 73 20 74 68 69 73 20 are.a.few.different.places.this.
1eea0 63 6f 6e 63 65 70 74 20 69 73 20 75 73 65 64 2c 20 61 6e 64 20 74 68 65 73 65 20 62 75 69 6c 64 concept.is.used,.and.these.build
1eec0 69 6e 67 20 62 6c 6f 63 6b 73 20 61 72 65 20 75 73 65 64 0a 20 20 20 20 20 20 74 6f 20 6b 65 65 ing.blocks.are.used.......to.kee
1eee0 70 20 74 68 65 20 6c 61 6e 67 75 61 67 65 20 73 6d 61 6c 6c 2c 20 72 65 61 64 61 62 6c 65 2c 20 p.the.language.small,.readable,.
1ef00 61 6e 64 20 70 6f 77 65 72 66 75 6c 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c and.powerful........</p>.......<
1ef20 68 32 20 69 64 3d 22 49 6e 74 72 6f 64 75 63 69 6e 67 2d 74 68 65 2d 43 6f 6d 70 69 6c 65 2d 54 h2.id="Introducing-the-Compile-T
1ef40 69 6d 65 2d 43 6f 6e 63 65 70 74 22 3e 49 6e 74 72 6f 64 75 63 69 6e 67 20 74 68 65 20 43 6f 6d ime-Concept">Introducing.the.Com
1ef60 70 69 6c 65 2d 54 69 6d 65 20 43 6f 6e 63 65 70 74 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 68 pile-Time.Concept</h2>........<h
1ef80 33 20 69 64 3d 22 43 6f 6d 70 69 6c 65 2d 54 69 6d 65 2d 50 61 72 61 6d 65 74 65 72 73 22 3e 43 3.id="Compile-Time-Parameters">C
1efa0 6f 6d 70 69 6c 65 2d 54 69 6d 65 20 50 61 72 61 6d 65 74 65 72 73 3c 2f 68 33 3e 0a 0a 20 20 20 ompile-Time.Parameters</h3>.....
1efc0 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 43 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 70 61 72 61 6d 65 ...<p>.......Compile-time.parame
1efe0 74 65 72 73 20 69 73 20 68 6f 77 20 5a 69 67 20 69 6d 70 6c 65 6d 65 6e 74 73 20 67 65 6e 65 72 ters.is.how.Zig.implements.gener
1f000 69 63 73 2e 20 49 74 20 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 64 75 63 6b 20 74 79 70 ics..It.is.compile-time.duck.typ
1f020 69 6e 67 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 ing........</p>.......<pre><code
1f040 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 6e 20 6d 61 78 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 .class="zig">fn.max(comptime.T:.
1f060 74 79 70 65 2c 20 61 3a 20 54 2c 20 62 3a 20 54 29 20 54 20 7b 0a 20 20 20 20 72 65 74 75 72 6e type,.a:.T,.b:.T).T.{.....return
1f080 20 69 66 20 28 61 20 26 67 74 3b 20 62 29 20 61 20 65 6c 73 65 20 62 3b 0a 7d 0a 66 6e 20 67 69 .if.(a.&gt;.b).a.else.b;.}.fn.gi
1f0a0 6d 6d 65 54 68 65 42 69 67 67 65 72 46 6c 6f 61 74 28 61 3a 20 66 33 32 2c 20 62 3a 20 66 33 32 mmeTheBiggerFloat(a:.f32,.b:.f32
1f0c0 29 20 66 33 32 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 6d 61 78 28 66 33 32 2c 20 61 2c 20 62 ).f32.{.....return.max(f32,.a,.b
1f0e0 29 3b 0a 7d 0a 66 6e 20 67 69 6d 6d 65 54 68 65 42 69 67 67 65 72 49 6e 74 65 67 65 72 28 61 3a );.}.fn.gimmeTheBiggerInteger(a:
1f100 20 75 36 34 2c 20 62 3a 20 75 36 34 29 20 75 36 34 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 6d .u64,.b:.u64).u64.{.....return.m
1f120 61 78 28 75 36 34 2c 20 61 2c 20 62 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 ax(u64,.a,.b);.}</code></pre>...
1f140 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 20 5a 69 67 2c 20 74 79 70 65 73 20 61 72 65 20 ....<p>.......In.Zig,.types.are.
1f160 66 69 72 73 74 2d 63 6c 61 73 73 20 63 69 74 69 7a 65 6e 73 2e 20 54 68 65 79 20 63 61 6e 20 62 first-class.citizens..They.can.b
1f180 65 20 61 73 73 69 67 6e 65 64 20 74 6f 20 76 61 72 69 61 62 6c 65 73 2c 20 70 61 73 73 65 64 20 e.assigned.to.variables,.passed.
1f1a0 61 73 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 66 75 6e 63 74 69 6f 6e 73 2c 0a 20 20 20 20 as.parameters.to.functions,.....
1f1c0 20 20 61 6e 64 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 66 75 6e 63 74 69 6f 6e 73 2e 20 48 ..and.returned.from.functions..H
1f1e0 6f 77 65 76 65 72 2c 20 74 68 65 79 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 69 6e owever,.they.can.only.be.used.in
1f200 20 65 78 70 72 65 73 73 69 6f 6e 73 20 77 68 69 63 68 20 61 72 65 20 6b 6e 6f 77 6e 20 61 74 20 .expressions.which.are.known.at.
1f220 3c 65 6d 3e 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 3c 2f 65 6d 3e 2c 0a 20 20 20 20 20 20 77 68 69 <em>compile-time</em>,.......whi
1f240 63 68 20 69 73 20 77 68 79 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 3c 63 6f 64 65 3e 54 3c ch.is.why.the.parameter.<code>T<
1f260 2f 63 6f 64 65 3e 20 69 6e 20 74 68 65 20 61 62 6f 76 65 20 73 6e 69 70 70 65 74 20 6d 75 73 74 /code>.in.the.above.snippet.must
1f280 20 62 65 20 6d 61 72 6b 65 64 20 77 69 74 68 20 3c 63 6f 64 65 3e 63 6f 6d 70 74 69 6d 65 3c 2f .be.marked.with.<code>comptime</
1f2a0 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 code>........</p>.......<p>.....
1f2c0 20 20 41 20 3c 63 6f 64 65 3e 63 6f 6d 70 74 69 6d 65 3c 2f 63 6f 64 65 3e 20 70 61 72 61 6d 65 ..A.<code>comptime</code>.parame
1f2e0 74 65 72 20 6d 65 61 6e 73 20 74 68 61 74 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 ter.means.that:.......</p>......
1f300 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 41 74 20 74 68 65 20 63 61 6c 6c 73 69 74 .<ul>.........<li>At.the.callsit
1f320 65 2c 20 74 68 65 20 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20 6b 6e 6f 77 6e 20 61 74 20 63 6f e,.the.value.must.be.known.at.co
1f340 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 6f 72 20 69 74 20 69 73 20 61 20 63 6f 6d 70 69 6c 65 20 65 mpile-time,.or.it.is.a.compile.e
1f360 72 72 6f 72 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 49 6e 20 74 68 65 20 66 75 rror.</li>.........<li>In.the.fu
1f380 6e 63 74 69 6f 6e 20 64 65 66 69 6e 69 74 69 6f 6e 2c 20 74 68 65 20 76 61 6c 75 65 20 69 73 20 nction.definition,.the.value.is.
1f3a0 6b 6e 6f 77 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2e 3c 2f 6c 69 3e 0a 20 20 20 20 known.at.compile-time.</li>.....
1f3c0 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 ..</ul>.......<p>.......</p>....
1f3e0 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 77 65 20 ...<p>.......For.example,.if.we.
1f400 77 65 72 65 20 74 6f 20 69 6e 74 72 6f 64 75 63 65 20 61 6e 6f 74 68 65 72 20 66 75 6e 63 74 69 were.to.introduce.another.functi
1f420 6f 6e 20 74 6f 20 74 68 65 20 61 62 6f 76 65 20 73 6e 69 70 70 65 74 3a 0a 20 20 20 20 20 20 3c on.to.the.above.snippet:.......<
1f440 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a /p>.......<p.class="file">test.z
1f460 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 6e 20 ig</p><pre><code.class="zig">fn.
1f480 6d 61 78 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 2c 20 61 3a 20 54 2c 20 62 3a 20 54 max(comptime.T:.type,.a:.T,.b:.T
1f4a0 29 20 54 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 69 66 20 28 61 20 26 67 74 3b 20 62 29 20 61 ).T.{.....return.if.(a.&gt;.b).a
1f4c0 20 65 6c 73 65 20 62 3b 0a 7d 0a 74 65 73 74 20 26 71 75 6f 74 3b 74 72 79 20 74 6f 20 70 61 73 .else.b;.}.test.&quot;try.to.pas
1f4e0 73 20 61 20 72 75 6e 74 69 6d 65 20 74 79 70 65 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 66 6f 6f s.a.runtime.type&quot;.{.....foo
1f500 28 66 61 6c 73 65 29 3b 0a 7d 0a 66 6e 20 66 6f 6f 28 63 6f 6e 64 69 74 69 6f 6e 3a 20 62 6f 6f (false);.}.fn.foo(condition:.boo
1f520 6c 29 20 76 6f 69 64 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 72 65 73 75 6c 74 20 3d 20 6d 61 78 l).void.{.....const.result.=.max
1f540 28 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 64 69 74 69 6f 6e 29 20 66 33 32 20 65 6c 73 (.........if.(condition).f32.els
1f560 65 20 75 36 34 2c 0a 20 20 20 20 20 20 20 20 31 32 33 34 2c 0a 20 20 20 20 20 20 20 20 35 36 37 e.u64,.........1234,.........567
1f580 38 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 8);.}</code></pre><pre><code.cla
1f5a0 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 3c ss="shell">$.zig.test.test.zig.<
1f5c0 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 span.class="t0_1">/home/andy/dev
1f5e0 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 39 3a 39 3a 20 3c 2f /zig/docgen_tmp/test.zig:9:9:.</
1f600 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 6f 72 3a 3c span><span.class="t31_1">error:<
1f620 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 75 6e 61 62 6c 65 /span><span.class="t0_1">.unable
1f640 20 74 6f 20 65 76 61 6c 75 61 74 65 20 63 6f 6e 73 74 61 6e 74 20 65 78 70 72 65 73 73 69 6f 6e .to.evaluate.constant.expression
1f660 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 64 69 74 69 6f 6e 29 20 66 </span>.........if.(condition).f
1f680 33 32 20 65 6c 73 65 20 75 36 34 2c 0a 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 32.else.u64,.........<span.class
1f6a0 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a ="t32_1">^</span>.</code></pre>.
1f6c0 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 69 73 20 61 6e 20 65 72 72 6f .......<p>.......This.is.an.erro
1f6e0 72 20 62 65 63 61 75 73 65 20 74 68 65 20 70 72 6f 67 72 61 6d 6d 65 72 20 61 74 74 65 6d 70 74 r.because.the.programmer.attempt
1f700 65 64 20 74 6f 20 70 61 73 73 20 61 20 76 61 6c 75 65 20 6f 6e 6c 79 20 6b 6e 6f 77 6e 20 61 74 ed.to.pass.a.value.only.known.at
1f720 20 72 75 6e 2d 74 69 6d 65 0a 20 20 20 20 20 20 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e 20 77 68 .run-time.......to.a.function.wh
1f740 69 63 68 20 65 78 70 65 63 74 73 20 61 20 76 61 6c 75 65 20 6b 6e 6f 77 6e 20 61 74 20 63 6f 6d ich.expects.a.value.known.at.com
1f760 70 69 6c 65 2d 74 69 6d 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a pile-time........</p>.......<p>.
1f780 20 20 20 20 20 20 41 6e 6f 74 68 65 72 20 77 61 79 20 74 6f 20 67 65 74 20 61 6e 20 65 72 72 6f ......Another.way.to.get.an.erro
1f7a0 72 20 69 73 20 69 66 20 77 65 20 70 61 73 73 20 61 20 74 79 70 65 20 74 68 61 74 20 76 69 6f 6c r.is.if.we.pass.a.type.that.viol
1f7c0 61 74 65 73 20 74 68 65 20 74 79 70 65 20 63 68 65 63 6b 65 72 20 77 68 65 6e 20 74 68 65 0a 20 ates.the.type.checker.when.the..
1f7e0 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 6e 61 6c 79 7a 65 64 2e 20 54 68 69 73 20 .....function.is.analyzed..This.
1f800 69 73 20 77 68 61 74 20 69 74 20 6d 65 61 6e 73 20 74 6f 20 68 61 76 65 20 3c 65 6d 3e 63 6f 6d is.what.it.means.to.have.<em>com
1f820 70 69 6c 65 2d 74 69 6d 65 20 64 75 63 6b 20 74 79 70 69 6e 67 3c 2f 65 6d 3e 2e 0a 20 20 20 20 pile-time.duck.typing</em>......
1f840 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 46 6f 72 20 65 78 61 6d 70 ..</p>.......<p>.......For.examp
1f860 6c 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 le:.......</p>.......<p.class="f
1f880 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 ile">test.zig</p><pre><code.clas
1f8a0 73 3d 22 7a 69 67 22 3e 66 6e 20 6d 61 78 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 2c s="zig">fn.max(comptime.T:.type,
1f8c0 20 61 3a 20 54 2c 20 62 3a 20 54 29 20 54 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 69 66 20 28 .a:.T,.b:.T).T.{.....return.if.(
1f8e0 61 20 26 67 74 3b 20 62 29 20 61 20 65 6c 73 65 20 62 3b 0a 7d 0a 74 65 73 74 20 26 71 75 6f 74 a.&gt;.b).a.else.b;.}.test.&quot
1f900 3b 74 72 79 20 74 6f 20 63 6f 6d 70 61 72 65 20 62 6f 6f 6c 73 26 71 75 6f 74 3b 20 7b 0a 20 20 ;try.to.compare.bools&quot;.{...
1f920 20 20 5f 20 3d 20 6d 61 78 28 62 6f 6f 6c 2c 20 74 72 75 65 2c 20 66 61 6c 73 65 29 3b 0a 7d 3c .._.=.max(bool,.true,.false);.}<
1f940 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 /code></pre><pre><code.class="sh
1f960 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 3c 73 70 61 6e 20 63 ell">$.zig.test.test.zig.<span.c
1f980 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 lass="t0_1">/home/andy/dev/zig/d
1f9a0 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 32 3a 31 38 3a 20 3c 2f 73 70 61 6e 3e ocgen_tmp/test.zig:2:18:.</span>
1f9c0 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 6e <span.class="t31_1">error:</span
1f9e0 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 6f 70 65 72 61 74 6f 72 20 6e 6f ><span.class="t0_1">.operator.no
1fa00 74 20 61 6c 6c 6f 77 65 64 20 66 6f 72 20 74 79 70 65 20 27 62 6f 6f 6c 27 3c 2f 73 70 61 6e 3e t.allowed.for.type.'bool'</span>
1fa20 0a 20 20 20 20 72 65 74 75 72 6e 20 69 66 20 28 61 20 26 67 74 3b 20 62 29 20 61 20 65 6c 73 65 .....return.if.(a.&gt;.b).a.else
1fa40 20 62 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 .b;..................<span.class
1fa60 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 ="t32_1">^</span>.<span.class="t
1fa80 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 0_1">/home/andy/dev/zig/docgen_t
1faa0 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 31 32 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 mp/test.zig:5:12:.</span><span.c
1fac0 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 lass="t36_1">note:</span><span.c
1fae0 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 3c 2f 73 lass="t0_1">.called.from.here</s
1fb00 70 61 6e 3e 0a 20 20 20 20 5f 20 3d 20 6d 61 78 28 62 6f 6f 6c 2c 20 74 72 75 65 2c 20 66 61 6c pan>....._.=.max(bool,.true,.fal
1fb20 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 se);............<span.class="t32
1fb40 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 _1">^</span>.</code></pre>......
1fb60 20 20 3c 70 3e 0a 20 20 20 20 20 20 4f 6e 20 74 68 65 20 66 6c 69 70 20 73 69 64 65 2c 20 69 6e ..<p>.......On.the.flip.side,.in
1fb80 73 69 64 65 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20 77 69 74 side.the.function.definition.wit
1fba0 68 20 74 68 65 20 3c 63 6f 64 65 3e 63 6f 6d 70 74 69 6d 65 3c 2f 63 6f 64 65 3e 20 70 61 72 61 h.the.<code>comptime</code>.para
1fbc0 6d 65 74 65 72 2c 20 74 68 65 0a 20 20 20 20 20 20 76 61 6c 75 65 20 69 73 20 6b 6e 6f 77 6e 20 meter,.the.......value.is.known.
1fbe0 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2e 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 at.compile-time..This.means.that
1fc00 20 77 65 20 61 63 74 75 61 6c 6c 79 20 63 6f 75 6c 64 20 6d 61 6b 65 20 74 68 69 73 20 77 6f 72 .we.actually.could.make.this.wor
1fc20 6b 20 66 6f 72 20 74 68 65 20 62 6f 6f 6c 20 74 79 70 65 0a 20 20 20 20 20 20 69 66 20 77 65 20 k.for.the.bool.type.......if.we.
1fc40 77 61 6e 74 65 64 20 74 6f 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 wanted.to:.......</p>.......<p.c
1fc60 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f lass="file">test.zig</p><pre><co
1fc80 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 6e 20 6d 61 78 28 63 6f 6d 70 74 69 6d 65 20 54 de.class="zig">fn.max(comptime.T
1fca0 3a 20 74 79 70 65 2c 20 61 3a 20 54 2c 20 62 3a 20 54 29 20 54 20 7b 0a 20 20 20 20 69 66 20 28 :.type,.a:.T,.b:.T).T.{.....if.(
1fcc0 54 20 3d 3d 20 62 6f 6f 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 20 6f 72 T.==.bool).{.........return.a.or
1fce0 20 62 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 61 20 26 67 74 3b 20 62 29 20 7b 0a 20 .b;.....}.else.if.(a.&gt;.b).{..
1fd00 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 .......return.a;.....}.else.{...
1fd20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 3b 0a 20 20 20 20 7d 0a 7d 0a 74 65 73 74 20 26 71 75 ......return.b;.....}.}.test.&qu
1fd40 6f 74 3b 74 72 79 20 74 6f 20 63 6f 6d 70 61 72 65 20 62 6f 6f 6c 73 26 71 75 6f 74 3b 20 7b 0a ot;try.to.compare.bools&quot;.{.
1fd60 20 20 20 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 ....@import(&quot;std&quot;).deb
1fd80 75 67 2e 61 73 73 65 72 74 28 6d 61 78 28 62 6f 6f 6c 2c 20 66 61 6c 73 65 2c 20 74 72 75 65 29 ug.assert(max(bool,.false,.true)
1fda0 20 3d 3d 20 74 72 75 65 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 .==.true);.}</code></pre><pre><c
1fdc0 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 ode.class="shell">$.zig.test.tes
1fde0 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 74 72 79 20 74 6f 20 63 6f 6d 70 61 72 65 20 62 6f t.zig.Test.1/1.try.to.compare.bo
1fe00 6f 6c 73 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 ols...OK.</code></pre>........<p
1fe20 3e 0a 20 20 20 20 20 20 54 68 69 73 20 77 6f 72 6b 73 20 62 65 63 61 75 73 65 20 5a 69 67 20 69 >.......This.works.because.Zig.i
1fe40 6d 70 6c 69 63 69 74 6c 79 20 69 6e 6c 69 6e 65 73 20 3c 63 6f 64 65 3e 69 66 3c 2f 63 6f 64 65 mplicitly.inlines.<code>if</code
1fe60 3e 20 65 78 70 72 65 73 73 69 6f 6e 73 20 77 68 65 6e 20 74 68 65 20 63 6f 6e 64 69 74 69 6f 6e >.expressions.when.the.condition
1fe80 0a 20 20 20 20 20 20 69 73 20 6b 6e 6f 77 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c .......is.known.at.compile-time,
1fea0 20 61 6e 64 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 20 67 75 61 72 61 6e 74 65 65 73 20 74 68 61 .and.the.compiler.guarantees.tha
1fec0 74 20 69 74 20 77 69 6c 6c 20 73 6b 69 70 20 61 6e 61 6c 79 73 69 73 20 6f 66 0a 20 20 20 20 20 t.it.will.skip.analysis.of......
1fee0 20 74 68 65 20 62 72 61 6e 63 68 20 6e 6f 74 20 74 61 6b 65 6e 2e 0a 20 20 20 20 20 20 3c 2f 70 .the.branch.not.taken........</p
1ff00 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61 >.......<p>.......This.means.tha
1ff20 74 20 74 68 65 20 61 63 74 75 61 6c 20 66 75 6e 63 74 69 6f 6e 20 67 65 6e 65 72 61 74 65 64 20 t.the.actual.function.generated.
1ff40 66 6f 72 20 3c 63 6f 64 65 3e 6d 61 78 3c 2f 63 6f 64 65 3e 20 69 6e 20 74 68 69 73 20 73 69 74 for.<code>max</code>.in.this.sit
1ff60 75 61 74 69 6f 6e 20 6c 6f 6f 6b 73 20 6c 69 6b 65 0a 20 20 20 20 20 20 74 68 69 73 3a 0a 20 20 uation.looks.like.......this:...
1ff80 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d ....</p>.......<pre><code.class=
1ffa0 22 7a 69 67 22 3e 66 6e 20 6d 61 78 28 61 3a 20 62 6f 6f 6c 2c 20 62 3a 20 62 6f 6f 6c 29 20 62 "zig">fn.max(a:.bool,.b:.bool).b
1ffc0 6f 6f 6c 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 61 20 6f 72 20 62 3b 0a 7d 3c 2f 63 6f 64 65 ool.{.....return.a.or.b;.}</code
1ffe0 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 41 6c 6c 20 74 68 65 20 ></pre>.......<p>.......All.the.
20000 63 6f 64 65 20 74 68 61 74 20 64 65 61 6c 74 20 77 69 74 68 20 63 6f 6d 70 69 6c 65 2d 74 69 6d code.that.dealt.with.compile-tim
20020 65 20 6b 6e 6f 77 6e 20 76 61 6c 75 65 73 20 69 73 20 65 6c 69 6d 69 6e 61 74 65 64 20 61 6e 64 e.known.values.is.eliminated.and
20040 20 77 65 20 61 72 65 20 6c 65 66 74 20 77 69 74 68 20 6f 6e 6c 79 0a 20 20 20 20 20 20 74 68 65 .we.are.left.with.only.......the
20060 20 6e 65 63 65 73 73 61 72 79 20 72 75 6e 2d 74 69 6d 65 20 63 6f 64 65 20 74 6f 20 61 63 63 6f .necessary.run-time.code.to.acco
20080 6d 70 6c 69 73 68 20 74 68 65 20 74 61 73 6b 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 mplish.the.task........</p>.....
200a0 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 77 6f 72 6b 73 20 74 68 65 20 73 61 6d 65 20 ..<p>.......This.works.the.same.
200c0 77 61 79 20 66 6f 72 20 3c 63 6f 64 65 3e 73 77 69 74 63 68 3c 2f 63 6f 64 65 3e 20 65 78 70 72 way.for.<code>switch</code>.expr
200e0 65 73 73 69 6f 6e 73 20 2d 20 74 68 65 79 20 61 72 65 20 69 6d 70 6c 69 63 69 74 6c 79 20 69 6e essions.-.they.are.implicitly.in
20100 6c 69 6e 65 64 0a 20 20 20 20 20 20 77 68 65 6e 20 74 68 65 20 74 61 72 67 65 74 20 65 78 70 72 lined.......when.the.target.expr
20120 65 73 73 69 6f 6e 20 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6b 6e 6f 77 6e 2e 0a 20 20 ession.is.compile-time.known....
20140 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 43 6f ....</p>..............<h3.id="Co
20160 6d 70 69 6c 65 2d 54 69 6d 65 2d 56 61 72 69 61 62 6c 65 73 22 3e 43 6f 6d 70 69 6c 65 2d 54 69 mpile-Time-Variables">Compile-Ti
20180 6d 65 20 56 61 72 69 61 62 6c 65 73 3c 2f 68 33 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 me.Variables</h3>........<p>....
201a0 20 20 20 49 6e 20 5a 69 67 2c 20 74 68 65 20 70 72 6f 67 72 61 6d 6d 65 72 20 63 61 6e 20 6c 61 ...In.Zig,.the.programmer.can.la
201c0 62 65 6c 20 76 61 72 69 61 62 6c 65 73 20 61 73 20 3c 63 6f 64 65 3e 63 6f 6d 70 74 69 6d 65 3c bel.variables.as.<code>comptime<
201e0 2f 63 6f 64 65 3e 2e 20 54 68 69 73 20 67 75 61 72 61 6e 74 65 65 73 20 74 6f 20 74 68 65 20 63 /code>..This.guarantees.to.the.c
20200 6f 6d 70 69 6c 65 72 0a 20 20 20 20 20 20 74 68 61 74 20 65 76 65 72 79 20 6c 6f 61 64 20 61 6e ompiler.......that.every.load.an
20220 64 20 73 74 6f 72 65 20 6f 66 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 69 73 20 70 65 72 66 6f d.store.of.the.variable.is.perfo
20240 72 6d 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2e 20 41 6e 79 20 76 69 6f 6c 61 74 rmed.at.compile-time..Any.violat
20260 69 6f 6e 20 6f 66 20 74 68 69 73 20 72 65 73 75 6c 74 73 20 69 6e 20 61 0a 20 20 20 20 20 20 63 ion.of.this.results.in.a.......c
20280 6f 6d 70 69 6c 65 20 65 72 72 6f 72 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c ompile.error........</p>.......<
202a0 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 63 6f 6d 62 69 6e 65 64 20 77 69 74 68 20 74 68 65 20 p>.......This.combined.with.the.
202c0 66 61 63 74 20 74 68 61 74 20 77 65 20 63 61 6e 20 3c 63 6f 64 65 3e 69 6e 6c 69 6e 65 3c 2f 63 fact.that.we.can.<code>inline</c
202e0 6f 64 65 3e 20 6c 6f 6f 70 73 20 61 6c 6c 6f 77 73 20 75 73 20 74 6f 20 77 72 69 74 65 0a 20 20 ode>.loops.allows.us.to.write...
20300 20 20 20 20 61 20 66 75 6e 63 74 69 6f 6e 20 77 68 69 63 68 20 69 73 20 70 61 72 74 69 61 6c 6c ....a.function.which.is.partiall
20320 79 20 65 76 61 6c 75 61 74 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 61 6e 64 20 y.evaluated.at.compile-time.and.
20340 70 61 72 74 69 61 6c 6c 79 20 61 74 20 72 75 6e 2d 74 69 6d 65 2e 0a 20 20 20 20 20 20 3c 2f 70 partially.at.run-time........</p
20360 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 3a 0a 20 >.......<p>.......For.example:..
20380 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e .....</p>.......<p.class="file">
203a0 63 6f 6d 70 74 69 6d 65 5f 76 61 72 73 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 comptime_vars.zig</p><pre><code.
203c0 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f class="zig">const.assert.=.@impo
203e0 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 rt(&quot;std&quot;).debug.assert
20400 3b 0a 0a 63 6f 6e 73 74 20 43 6d 64 46 6e 20 3d 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 6e 61 ;..const.CmdFn.=.struct.{.....na
20420 6d 65 3a 20 5b 5d 63 6f 6e 73 74 20 75 38 2c 0a 20 20 20 20 66 75 6e 63 3a 20 66 6e 28 69 33 32 me:.[]const.u8,.....func:.fn(i32
20440 29 20 69 33 32 2c 0a 7d 3b 0a 0a 63 6f 6e 73 74 20 63 6d 64 5f 66 6e 73 20 3d 20 5b 5d 43 6d 64 ).i32,.};..const.cmd_fns.=.[]Cmd
20460 46 6e 7b 0a 20 20 20 20 43 6d 64 46 6e 20 7b 2e 6e 61 6d 65 20 3d 20 26 71 75 6f 74 3b 6f 6e 65 Fn{.....CmdFn.{.name.=.&quot;one
20480 26 71 75 6f 74 3b 2c 20 2e 66 75 6e 63 20 3d 20 6f 6e 65 7d 2c 0a 20 20 20 20 43 6d 64 46 6e 20 &quot;,..func.=.one},.....CmdFn.
204a0 7b 2e 6e 61 6d 65 20 3d 20 26 71 75 6f 74 3b 74 77 6f 26 71 75 6f 74 3b 2c 20 2e 66 75 6e 63 20 {.name.=.&quot;two&quot;,..func.
204c0 3d 20 74 77 6f 7d 2c 0a 20 20 20 20 43 6d 64 46 6e 20 7b 2e 6e 61 6d 65 20 3d 20 26 71 75 6f 74 =.two},.....CmdFn.{.name.=.&quot
204e0 3b 74 68 72 65 65 26 71 75 6f 74 3b 2c 20 2e 66 75 6e 63 20 3d 20 74 68 72 65 65 7d 2c 0a 7d 3b ;three&quot;,..func.=.three},.};
20500 0a 66 6e 20 6f 6e 65 28 76 61 6c 75 65 3a 20 69 33 32 29 20 69 33 32 20 7b 20 72 65 74 75 72 6e .fn.one(value:.i32).i32.{.return
20520 20 76 61 6c 75 65 20 2b 20 31 3b 20 7d 0a 66 6e 20 74 77 6f 28 76 61 6c 75 65 3a 20 69 33 32 29 .value.+.1;.}.fn.two(value:.i32)
20540 20 69 33 32 20 7b 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 2b 20 32 3b 20 7d 0a 66 6e 20 74 68 .i32.{.return.value.+.2;.}.fn.th
20560 72 65 65 28 76 61 6c 75 65 3a 20 69 33 32 29 20 69 33 32 20 7b 20 72 65 74 75 72 6e 20 76 61 6c ree(value:.i32).i32.{.return.val
20580 75 65 20 2b 20 33 3b 20 7d 0a 0a 66 6e 20 70 65 72 66 6f 72 6d 46 6e 28 63 6f 6d 70 74 69 6d 65 ue.+.3;.}..fn.performFn(comptime
205a0 20 70 72 65 66 69 78 5f 63 68 61 72 3a 20 75 38 2c 20 73 74 61 72 74 5f 76 61 6c 75 65 3a 20 69 .prefix_char:.u8,.start_value:.i
205c0 33 32 29 20 69 33 32 20 7b 0a 20 20 20 20 76 61 72 20 72 65 73 75 6c 74 3a 20 69 33 32 20 3d 20 32).i32.{.....var.result:.i32.=.
205e0 73 74 61 72 74 5f 76 61 6c 75 65 3b 0a 20 20 20 20 63 6f 6d 70 74 69 6d 65 20 76 61 72 20 69 20 start_value;.....comptime.var.i.
20600 3d 20 30 3b 0a 20 20 20 20 69 6e 6c 69 6e 65 20 77 68 69 6c 65 20 28 69 20 26 6c 74 3b 20 63 6d =.0;.....inline.while.(i.&lt;.cm
20620 64 5f 66 6e 73 2e 6c 65 6e 29 20 3a 20 28 69 20 2b 3d 20 31 29 20 7b 0a 20 20 20 20 20 20 20 20 d_fns.len).:.(i.+=.1).{.........
20640 69 66 20 28 63 6d 64 5f 66 6e 73 5b 69 5d 2e 6e 61 6d 65 5b 30 5d 20 3d 3d 20 70 72 65 66 69 78 if.(cmd_fns[i].name[0].==.prefix
20660 5f 63 68 61 72 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 63 6d _char).{.............result.=.cm
20680 64 5f 66 6e 73 5b 69 5d 2e 66 75 6e 63 28 72 65 73 75 6c 74 29 3b 0a 20 20 20 20 20 20 20 20 7d d_fns[i].func(result);.........}
206a0 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 74 65 73 .....}.....return.result;.}..tes
206c0 74 20 26 71 75 6f 74 3b 70 65 72 66 6f 72 6d 20 66 6e 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 61 t.&quot;perform.fn&quot;.{.....a
206e0 73 73 65 72 74 28 70 65 72 66 6f 72 6d 46 6e 28 27 74 27 2c 20 31 29 20 3d 3d 20 36 29 3b 0a 20 ssert(performFn('t',.1).==.6);..
20700 20 20 20 61 73 73 65 72 74 28 70 65 72 66 6f 72 6d 46 6e 28 27 6f 27 2c 20 30 29 20 3d 3d 20 31 ...assert(performFn('o',.0).==.1
20720 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 70 65 72 66 6f 72 6d 46 6e 28 27 77 27 2c 20 39 39 29 );.....assert(performFn('w',.99)
20740 20 3d 3d 20 39 39 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 .==.99);.}</code></pre><pre><cod
20760 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 63 6f 6d 70 74 e.class="shell">$.zig.test.compt
20780 69 6d 65 5f 76 61 72 73 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 70 65 72 66 6f 72 6d 20 66 6e ime_vars.zig.Test.1/1.perform.fn
207a0 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 ...OK.</code></pre>........<p>..
207c0 20 20 20 20 20 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 73 20 61 20 62 69 74 20 63 6f 6e 74 72 .....This.example.is.a.bit.contr
207e0 69 76 65 64 2c 20 62 65 63 61 75 73 65 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 65 ived,.because.the.compile-time.e
20800 76 61 6c 75 61 74 69 6f 6e 20 63 6f 6d 70 6f 6e 65 6e 74 20 69 73 20 75 6e 6e 65 63 65 73 73 61 valuation.component.is.unnecessa
20820 72 79 3b 0a 20 20 20 20 20 20 74 68 69 73 20 63 6f 64 65 20 77 6f 75 6c 64 20 77 6f 72 6b 20 66 ry;.......this.code.would.work.f
20840 69 6e 65 20 69 66 20 69 74 20 77 61 73 20 61 6c 6c 20 64 6f 6e 65 20 61 74 20 72 75 6e 2d 74 69 ine.if.it.was.all.done.at.run-ti
20860 6d 65 2e 20 42 75 74 20 69 74 20 64 6f 65 73 20 65 6e 64 20 75 70 20 67 65 6e 65 72 61 74 69 6e me..But.it.does.end.up.generatin
20880 67 0a 20 20 20 20 20 20 64 69 66 66 65 72 65 6e 74 20 63 6f 64 65 2e 20 49 6e 20 74 68 69 73 20 g.......different.code..In.this.
208a0 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 3c 63 6f 64 65 3e 70 65 72 66 example,.the.function.<code>perf
208c0 6f 72 6d 46 6e 3c 2f 63 6f 64 65 3e 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 74 68 72 65 65 20 ormFn</code>.is.generated.three.
208e0 64 69 66 66 65 72 65 6e 74 20 74 69 6d 65 73 2c 0a 20 20 20 20 20 20 66 6f 72 20 74 68 65 20 64 different.times,.......for.the.d
20900 69 66 66 65 72 65 6e 74 20 76 61 6c 75 65 73 20 6f 66 20 3c 63 6f 64 65 3e 70 72 65 66 69 78 5f ifferent.values.of.<code>prefix_
20920 63 68 61 72 3c 2f 63 6f 64 65 3e 20 70 72 6f 76 69 64 65 64 3a 0a 20 20 20 20 20 20 3c 2f 70 3e char</code>.provided:.......</p>
20940 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2f 2f .......<pre><code.class="zig">//
20960 20 46 72 6f 6d 20 74 68 65 20 6c 69 6e 65 3a 0a 2f 2f 20 61 73 73 65 72 74 28 70 65 72 66 6f 72 .From.the.line:.//.assert(perfor
20980 6d 46 6e 28 27 74 27 2c 20 31 29 20 3d 3d 20 36 29 3b 0a 66 6e 20 70 65 72 66 6f 72 6d 46 6e 28 mFn('t',.1).==.6);.fn.performFn(
209a0 73 74 61 72 74 5f 76 61 6c 75 65 3a 20 69 33 32 29 20 69 33 32 20 7b 0a 20 20 20 20 76 61 72 20 start_value:.i32).i32.{.....var.
209c0 72 65 73 75 6c 74 3a 20 69 33 32 20 3d 20 73 74 61 72 74 5f 76 61 6c 75 65 3b 0a 20 20 20 20 72 result:.i32.=.start_value;.....r
209e0 65 73 75 6c 74 20 3d 20 74 77 6f 28 72 65 73 75 6c 74 29 3b 0a 20 20 20 20 72 65 73 75 6c 74 20 esult.=.two(result);.....result.
20a00 3d 20 74 68 72 65 65 28 72 65 73 75 6c 74 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 =.three(result);.....return.resu
20a20 6c 74 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 lt;.}</code></pre>.......<pre><c
20a40 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2f 2f 20 46 72 6f 6d 20 74 68 65 20 6c 69 6e 65 ode.class="zig">//.From.the.line
20a60 3a 0a 2f 2f 20 61 73 73 65 72 74 28 70 65 72 66 6f 72 6d 46 6e 28 27 6f 27 2c 20 30 29 20 3d 3d :.//.assert(performFn('o',.0).==
20a80 20 31 29 3b 0a 66 6e 20 70 65 72 66 6f 72 6d 46 6e 28 73 74 61 72 74 5f 76 61 6c 75 65 3a 20 69 .1);.fn.performFn(start_value:.i
20aa0 33 32 29 20 69 33 32 20 7b 0a 20 20 20 20 76 61 72 20 72 65 73 75 6c 74 3a 20 69 33 32 20 3d 20 32).i32.{.....var.result:.i32.=.
20ac0 73 74 61 72 74 5f 76 61 6c 75 65 3b 0a 20 20 20 20 72 65 73 75 6c 74 20 3d 20 6f 6e 65 28 72 65 start_value;.....result.=.one(re
20ae0 73 75 6c 74 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 3c 2f 63 6f 64 sult);.....return.result;.}</cod
20b00 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d e></pre>.......<pre><code.class=
20b20 22 7a 69 67 22 3e 2f 2f 20 46 72 6f 6d 20 74 68 65 20 6c 69 6e 65 3a 0a 2f 2f 20 61 73 73 65 72 "zig">//.From.the.line:.//.asser
20b40 74 28 70 65 72 66 6f 72 6d 46 6e 28 27 77 27 2c 20 39 39 29 20 3d 3d 20 39 39 29 3b 0a 66 6e 20 t(performFn('w',.99).==.99);.fn.
20b60 70 65 72 66 6f 72 6d 46 6e 28 73 74 61 72 74 5f 76 61 6c 75 65 3a 20 69 33 32 29 20 69 33 32 20 performFn(start_value:.i32).i32.
20b80 7b 0a 20 20 20 20 76 61 72 20 72 65 73 75 6c 74 3a 20 69 33 32 20 3d 20 73 74 61 72 74 5f 76 61 {.....var.result:.i32.=.start_va
20ba0 6c 75 65 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 3c 2f 63 6f 64 65 3e lue;.....return.result;.}</code>
20bc0 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4e 6f 74 65 20 74 68 61 74 </pre>.......<p>.......Note.that
20be0 20 74 68 69 73 20 68 61 70 70 65 6e 73 20 65 76 65 6e 20 69 6e 20 61 20 64 65 62 75 67 20 62 75 .this.happens.even.in.a.debug.bu
20c00 69 6c 64 3b 20 69 6e 20 61 20 72 65 6c 65 61 73 65 20 62 75 69 6c 64 20 74 68 65 73 65 20 67 65 ild;.in.a.release.build.these.ge
20c20 6e 65 72 61 74 65 64 20 66 75 6e 63 74 69 6f 6e 73 20 73 74 69 6c 6c 0a 20 20 20 20 20 20 70 61 nerated.functions.still.......pa
20c40 73 73 20 74 68 72 6f 75 67 68 20 72 69 67 6f 72 6f 75 73 20 4c 4c 56 4d 20 6f 70 74 69 6d 69 7a ss.through.rigorous.LLVM.optimiz
20c60 61 74 69 6f 6e 73 2e 20 54 68 65 20 69 6d 70 6f 72 74 61 6e 74 20 74 68 69 6e 67 20 74 6f 20 6e ations..The.important.thing.to.n
20c80 6f 74 65 2c 20 68 6f 77 65 76 65 72 2c 20 69 73 20 6e 6f 74 20 74 68 61 74 20 74 68 69 73 0a 20 ote,.however,.is.not.that.this..
20ca0 20 20 20 20 20 69 73 20 61 20 77 61 79 20 74 6f 20 77 72 69 74 65 20 6d 6f 72 65 20 6f 70 74 69 .....is.a.way.to.write.more.opti
20cc0 6d 69 7a 65 64 20 63 6f 64 65 2c 20 62 75 74 20 74 68 61 74 20 69 74 20 69 73 20 61 20 77 61 79 mized.code,.but.that.it.is.a.way
20ce0 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74 20 77 68 61 74 20 3c 65 6d 3e 73 68 6f 75 .to.make.sure.that.what.<em>shou
20d00 6c 64 3c 2f 65 6d 3e 20 68 61 70 70 65 6e 0a 20 20 20 20 20 20 61 74 20 63 6f 6d 70 69 6c 65 2d ld</em>.happen.......at.compile-
20d20 74 69 6d 65 2c 20 3c 65 6d 3e 64 6f 65 73 3c 2f 65 6d 3e 20 68 61 70 70 65 6e 20 61 74 20 63 6f time,.<em>does</em>.happen.at.co
20d40 6d 70 69 6c 65 2d 74 69 6d 65 2e 20 54 68 69 73 20 63 61 74 63 68 65 73 20 6d 6f 72 65 20 65 72 mpile-time..This.catches.more.er
20d60 72 6f 72 73 20 61 6e 64 20 61 73 20 64 65 6d 6f 6e 73 74 72 61 74 65 64 0a 20 20 20 20 20 20 6c rors.and.as.demonstrated.......l
20d80 61 74 65 72 20 69 6e 20 74 68 69 73 20 61 72 74 69 63 6c 65 2c 20 61 6c 6c 6f 77 73 20 65 78 70 ater.in.this.article,.allows.exp
20da0 72 65 73 73 69 76 65 6e 65 73 73 20 74 68 61 74 20 69 6e 20 6f 74 68 65 72 20 6c 61 6e 67 75 61 ressiveness.that.in.other.langua
20dc0 67 65 73 20 72 65 71 75 69 72 65 73 20 75 73 69 6e 67 20 6d 61 63 72 6f 73 2c 0a 20 20 20 20 20 ges.requires.using.macros,......
20de0 20 67 65 6e 65 72 61 74 65 64 20 63 6f 64 65 2c 20 6f 72 20 61 20 70 72 65 70 72 6f 63 65 73 73 .generated.code,.or.a.preprocess
20e00 6f 72 20 74 6f 20 61 63 63 6f 6d 70 6c 69 73 68 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 or.to.accomplish........</p>....
20e20 20 20 20 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 43 6f 6d 70 69 6c 65 2d 54 69 6d 65 2d 45 ..........<h3.id="Compile-Time-E
20e40 78 70 72 65 73 73 69 6f 6e 73 22 3e 43 6f 6d 70 69 6c 65 2d 54 69 6d 65 20 45 78 70 72 65 73 73 xpressions">Compile-Time.Express
20e60 69 6f 6e 73 3c 2f 68 33 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 20 5a 69 ions</h3>........<p>.......In.Zi
20e80 67 2c 20 69 74 20 6d 61 74 74 65 72 73 20 77 68 65 74 68 65 72 20 61 20 67 69 76 65 6e 20 65 78 g,.it.matters.whether.a.given.ex
20ea0 70 72 65 73 73 69 6f 6e 20 69 73 20 6b 6e 6f 77 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d pression.is.known.at.compile-tim
20ec0 65 20 6f 72 20 72 75 6e 2d 74 69 6d 65 2e 20 41 20 70 72 6f 67 72 61 6d 6d 65 72 20 63 61 6e 0a e.or.run-time..A.programmer.can.
20ee0 20 20 20 20 20 20 75 73 65 20 61 20 3c 63 6f 64 65 3e 63 6f 6d 70 74 69 6d 65 3c 2f 63 6f 64 65 ......use.a.<code>comptime</code
20f00 3e 20 65 78 70 72 65 73 73 69 6f 6e 20 74 6f 20 67 75 61 72 61 6e 74 65 65 20 74 68 61 74 20 74 >.expression.to.guarantee.that.t
20f20 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 77 69 6c 6c 20 62 65 20 65 76 61 6c 75 61 74 65 64 20 he.expression.will.be.evaluated.
20f40 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2e 0a 20 20 20 20 20 20 49 66 20 74 68 69 73 20 63 at.compile-time........If.this.c
20f60 61 6e 6e 6f 74 20 62 65 20 61 63 63 6f 6d 70 6c 69 73 68 65 64 2c 20 74 68 65 20 63 6f 6d 70 69 annot.be.accomplished,.the.compi
20f80 6c 65 72 20 77 69 6c 6c 20 65 6d 69 74 20 61 6e 20 65 72 72 6f 72 2e 20 46 6f 72 20 65 78 61 6d ler.will.emit.an.error..For.exam
20fa0 70 6c 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 ple:.......</p>.......<p.class="
20fc0 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 file">test.zig</p><pre><code.cla
20fe0 73 73 3d 22 7a 69 67 22 3e 65 78 74 65 72 6e 20 66 6e 20 65 78 69 74 28 29 20 6e 6f 72 65 74 75 ss="zig">extern.fn.exit().noretu
21000 72 6e 3b 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 66 6f 6f 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 rn;..test.&quot;foo&quot;.{.....
21020 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 20 20 20 20 65 78 69 74 28 29 3b 0a 20 20 20 20 7d comptime.{.........exit();.....}
21040 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d .}</code></pre><pre><code.class=
21060 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 3c 73 70 61 "shell">$.zig.test.test.zig.<spa
21080 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 n.class="t0_1">/home/andy/dev/zi
210a0 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 39 3a 20 3c 2f 73 70 61 g/docgen_tmp/test.zig:5:9:.</spa
210c0 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 n><span.class="t31_1">error:</sp
210e0 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 75 6e 61 62 6c 65 20 74 6f an><span.class="t0_1">.unable.to
21100 20 65 76 61 6c 75 61 74 65 20 63 6f 6e 73 74 61 6e 74 20 65 78 70 72 65 73 73 69 6f 6e 3c 2f 73 .evaluate.constant.expression</s
21120 70 61 6e 3e 0a 20 20 20 20 20 20 20 20 65 78 69 74 28 29 3b 0a 20 20 20 20 20 20 20 20 3c 73 70 pan>.........exit();.........<sp
21140 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 an.class="t32_1">^</span>.</code
21160 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 74 20 64 6f 65 73 ></pre>........<p>.......It.does
21180 6e 27 74 20 6d 61 6b 65 20 73 65 6e 73 65 20 74 68 61 74 20 61 20 70 72 6f 67 72 61 6d 20 63 6f n't.make.sense.that.a.program.co
211a0 75 6c 64 20 63 61 6c 6c 20 3c 63 6f 64 65 3e 65 78 69 74 28 29 3c 2f 63 6f 64 65 3e 20 28 6f 72 uld.call.<code>exit()</code>.(or
211c0 20 61 6e 79 20 6f 74 68 65 72 20 65 78 74 65 72 6e 61 6c 20 66 75 6e 63 74 69 6f 6e 29 0a 20 20 .any.other.external.function)...
211e0 20 20 20 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 73 6f 20 74 68 69 73 20 69 73 20 ....at.compile-time,.so.this.is.
21200 61 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 2e 20 48 6f 77 65 76 65 72 2c 20 61 20 3c 63 6f 64 a.compile.error..However,.a.<cod
21220 65 3e 63 6f 6d 70 74 69 6d 65 3c 2f 63 6f 64 65 3e 20 65 78 70 72 65 73 73 69 6f 6e 20 64 6f 65 e>comptime</code>.expression.doe
21240 73 20 6d 75 63 68 0a 20 20 20 20 20 20 6d 6f 72 65 20 74 68 61 6e 20 73 6f 6d 65 74 69 6d 65 73 s.much.......more.than.sometimes
21260 20 63 61 75 73 65 20 61 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 2e 0a 20 20 20 20 20 20 3c 2f .cause.a.compile.error........</
21280 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 57 69 74 68 69 6e 20 61 20 3c 63 6f 64 p>.......<p>.......Within.a.<cod
212a0 65 3e 63 6f 6d 70 74 69 6d 65 3c 2f 63 6f 64 65 3e 20 65 78 70 72 65 73 73 69 6f 6e 3a 0a 20 20 e>comptime</code>.expression:...
212c0 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e ....</p>.......<ul>.........<li>
212e0 41 6c 6c 20 76 61 72 69 61 62 6c 65 73 20 61 72 65 20 3c 63 6f 64 65 3e 63 6f 6d 70 74 69 6d 65 All.variables.are.<code>comptime
21300 3c 2f 63 6f 64 65 3e 20 76 61 72 69 61 62 6c 65 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 </code>.variables.</li>.........
21320 3c 6c 69 3e 41 6c 6c 20 3c 63 6f 64 65 3e 69 66 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 3e 77 <li>All.<code>if</code>,.<code>w
21340 68 69 6c 65 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 3e 66 6f 72 3c 2f 63 6f 64 65 3e 2c 20 61 hile</code>,.<code>for</code>,.a
21360 6e 64 20 3c 63 6f 64 65 3e 73 77 69 74 63 68 3c 2f 63 6f 64 65 3e 0a 20 20 20 20 20 20 20 20 20 nd.<code>switch</code>..........
21380 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61 72 65 20 65 76 61 6c 75 61 74 65 64 20 61 74 20 63 6f .expressions.are.evaluated.at.co
213a0 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 6f 72 20 65 6d 69 74 20 61 20 63 6f 6d 70 69 6c 65 20 65 72 mpile-time,.or.emit.a.compile.er
213c0 72 6f 72 20 69 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 2e 3c 2f 6c 69 ror.if.this.is.not.possible.</li
213e0 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 41 6c 6c 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 >.........<li>All.function.calls
21400 20 63 61 75 73 65 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 20 74 6f 20 69 6e 74 65 72 70 72 65 74 .cause.the.compiler.to.interpret
21420 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 65 .the.function.at.compile-time,.e
21440 6d 69 74 74 69 6e 67 20 61 0a 20 20 20 20 20 20 20 20 20 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f mitting.a...........compile.erro
21460 72 20 69 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 74 72 69 65 73 20 74 6f 20 64 6f 20 73 6f r.if.the.function.tries.to.do.so
21480 6d 65 74 68 69 6e 67 20 74 68 61 74 20 68 61 73 20 67 6c 6f 62 61 6c 20 72 75 6e 2d 74 69 6d 65 mething.that.has.global.run-time
214a0 20 73 69 64 65 20 65 66 66 65 63 74 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a .side.effects.</li>.......</ul>.
214c0 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20 ......<p>.......This.means.that.
214e0 61 20 70 72 6f 67 72 61 6d 6d 65 72 20 63 61 6e 20 63 72 65 61 74 65 20 61 20 66 75 6e 63 74 69 a.programmer.can.create.a.functi
21500 6f 6e 20 77 68 69 63 68 20 69 73 20 63 61 6c 6c 65 64 20 62 6f 74 68 20 61 74 20 63 6f 6d 70 69 on.which.is.called.both.at.compi
21520 6c 65 2d 74 69 6d 65 20 61 6e 64 20 72 75 6e 2d 74 69 6d 65 2c 20 77 69 74 68 0a 20 20 20 20 20 le-time.and.run-time,.with......
21540 20 6e 6f 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 74 6f 20 74 68 65 20 66 75 6e 63 74 69 6f 6e .no.modification.to.the.function
21560 20 72 65 71 75 69 72 65 64 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a .required........</p>.......<p>.
21580 20 20 20 20 20 20 4c 65 74 27 73 20 6c 6f 6f 6b 20 61 74 20 61 6e 20 65 78 61 6d 70 6c 65 3a 0a ......Let's.look.at.an.example:.
215a0 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 ......</p>.......<p.class="file"
215c0 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a >test.zig</p><pre><code.class="z
215e0 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 ig">const.assert.=.@import(&quot
21600 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 66 6e 20 66 69 ;std&quot;).debug.assert;..fn.fi
21620 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 3a 20 75 33 32 29 20 75 33 32 20 7b 0a 20 20 20 20 69 66 bonacci(index:.u32).u32.{.....if
21640 20 28 69 6e 64 65 78 20 26 6c 74 3b 20 32 29 20 72 65 74 75 72 6e 20 69 6e 64 65 78 3b 0a 20 20 .(index.&lt;.2).return.index;...
21660 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 ..return.fibonacci(index.-.1).+.
21680 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 fibonacci(index.-.2);.}..test.&q
216a0 75 6f 74 3b 66 69 62 6f 6e 61 63 63 69 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 2f 2f 20 74 65 73 uot;fibonacci&quot;.{.....//.tes
216c0 74 20 66 69 62 6f 6e 61 63 63 69 20 61 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20 20 20 61 73 73 65 t.fibonacci.at.run-time.....asse
216e0 72 74 28 66 69 62 6f 6e 61 63 63 69 28 37 29 20 3d 3d 20 31 33 29 3b 0a 0a 20 20 20 20 2f 2f 20 rt(fibonacci(7).==.13);......//.
21700 74 65 73 74 20 66 69 62 6f 6e 61 63 63 69 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 20 test.fibonacci.at.compile-time..
21720 20 20 20 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 66 69 62 ...comptime.{.........assert(fib
21740 6f 6e 61 63 63 69 28 37 29 20 3d 3d 20 31 33 29 3b 0a 20 20 20 20 7d 0a 7d 3c 2f 63 6f 64 65 3e onacci(7).==.13);.....}.}</code>
21760 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 </pre><pre><code.class="shell">$
21780 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 66 69 62 6f .zig.test.test.zig.Test.1/1.fibo
217a0 6e 61 63 63 69 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 nacci...OK.</code></pre>........
217c0 3c 70 3e 0a 20 20 20 20 20 20 49 6d 61 67 69 6e 65 20 69 66 20 77 65 20 68 61 64 20 66 6f 72 67 <p>.......Imagine.if.we.had.forg
217e0 6f 74 74 65 6e 20 74 68 65 20 62 61 73 65 20 63 61 73 65 20 6f 66 20 74 68 65 20 72 65 63 75 72 otten.the.base.case.of.the.recur
21800 73 69 76 65 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 74 72 69 65 64 20 74 6f 20 72 75 6e 20 74 sive.function.and.tried.to.run.t
21820 68 65 20 74 65 73 74 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c he.tests:.......</p>.......<p.cl
21840 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 ass="file">test.zig</p><pre><cod
21860 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d e.class="zig">const.assert.=.@im
21880 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 port(&quot;std&quot;).debug.asse
218a0 72 74 3b 0a 0a 66 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 3a 20 75 33 32 29 20 75 33 rt;..fn.fibonacci(index:.u32).u3
218c0 32 20 7b 0a 20 20 20 20 2f 2f 69 66 20 28 69 6e 64 65 78 20 26 6c 74 3b 20 32 29 20 72 65 74 75 2.{.....//if.(index.&lt;.2).retu
218e0 72 6e 20 69 6e 64 65 78 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 rn.index;.....return.fibonacci(i
21900 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 ndex.-.1).+.fibonacci(index.-.2)
21920 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 66 69 62 6f 6e 61 63 63 69 26 71 75 6f 74 3b 20 ;.}..test.&quot;fibonacci&quot;.
21940 7b 0a 20 20 20 20 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 {.....comptime.{.........assert(
21960 66 69 62 6f 6e 61 63 63 69 28 37 29 20 3d 3d 20 31 33 29 3b 0a 20 20 20 20 7d 0a 7d 3c 2f 63 6f fibonacci(7).==.13);.....}.}</co
21980 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c de></pre><pre><code.class="shell
219a0 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 3c 73 70 61 6e 20 63 6c 61 73 ">$.zig.test.test.zig.<span.clas
219c0 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 s="t0_1">/home/andy/dev/zig/docg
219e0 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 32 38 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 en_tmp/test.zig:5:28:.</span><sp
21a00 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 6e 3e 3c 73 an.class="t31_1">error:</span><s
21a20 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 6f 70 65 72 61 74 69 6f 6e 20 63 61 75 73 pan.class="t0_1">.operation.caus
21a40 65 64 20 6f 76 65 72 66 6c 6f 77 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 ed.overflow</span>.....return.fi
21a60 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 bonacci(index.-.1).+.fibonacci(i
21a80 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ndex.-.2);......................
21aa0 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 ......<span.class="t32_1">^</spa
21ac0 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 n>.<span.class="t0_1">/home/andy
21ae0 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 32 /dev/zig/docgen_tmp/test.zig:5:2
21b00 31 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 1:.</span><span.class="t36_1">no
21b20 74 65 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 te:</span><span.class="t0_1">.ca
21b40 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 72 65 74 75 72 6e lled.from.here</span>.....return
21b60 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 .fibonacci(index.-.1).+.fibonacc
21b80 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 i(index.-.2);...................
21ba0 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c ..<span.class="t32_1">^</span>.<
21bc0 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 span.class="t0_1">/home/andy/dev
21be0 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 32 31 3a 20 3c /zig/docgen_tmp/test.zig:5:21:.<
21c00 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c /span><span.class="t36_1">note:<
21c20 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 6c 6c 65 64 /span><span.class="t0_1">.called
21c40 20 66 72 6f 6d 20 68 65 72 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 .from.here</span>.....return.fib
21c60 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e onacci(index.-.1).+.fibonacci(in
21c80 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 dex.-.2);.....................<s
21ca0 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e pan.class="t32_1">^</span>.<span
21cc0 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 .class="t0_1">/home/andy/dev/zig
21ce0 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 32 31 3a 20 3c 2f 73 70 61 /docgen_tmp/test.zig:5:21:.</spa
21d00 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 n><span.class="t36_1">note:</spa
21d20 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 6c 6c 65 64 20 66 72 6f n><span.class="t0_1">.called.fro
21d40 6d 20 68 65 72 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 m.here</span>.....return.fibonac
21d60 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 ci(index.-.1).+.fibonacci(index.
21d80 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 -.2);.....................<span.
21da0 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 class="t32_1">^</span>.<span.cla
21dc0 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 ss="t0_1">/home/andy/dev/zig/doc
21de0 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 32 31 3a 20 3c 2f 73 70 61 6e 3e 3c 73 gen_tmp/test.zig:5:21:.</span><s
21e00 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 6e 3e 3c 73 pan.class="t36_1">note:</span><s
21e20 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 pan.class="t0_1">.called.from.he
21e40 72 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 re</span>.....return.fibonacci(i
21e60 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 ndex.-.1).+.fibonacci(index.-.2)
21e80 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 ;.....................<span.clas
21ea0 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 s="t32_1">^</span>.<span.class="
21ec0 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f t0_1">/home/andy/dev/zig/docgen_
21ee0 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 32 31 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 tmp/test.zig:5:21:.</span><span.
21f00 63 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 class="t36_1">note:</span><span.
21f20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 3c 2f class="t0_1">.called.from.here</
21f40 73 70 61 6e 3e 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 span>.....return.fibonacci(index
21f60 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 .-.1).+.fibonacci(index.-.2);...
21f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 ..................<span.class="t
21fa0 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 32_1">^</span>.<span.class="t0_1
21fc0 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f ">/home/andy/dev/zig/docgen_tmp/
21fe0 74 65 73 74 2e 7a 69 67 3a 35 3a 32 31 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 test.zig:5:21:.</span><span.clas
22000 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 s="t36_1">note:</span><span.clas
22020 73 3d 22 74 30 5f 31 22 3e 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 3c 2f 73 70 61 6e s="t0_1">.called.from.here</span
22040 3e 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 >.....return.fibonacci(index.-.1
22060 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 ).+.fibonacci(index.-.2);.......
22080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 ..............<span.class="t32_1
220a0 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 ">^</span>.<span.class="t0_1">/h
220c0 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 ome/andy/dev/zig/docgen_tmp/test
220e0 2e 7a 69 67 3a 35 3a 32 31 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 .zig:5:21:.</span><span.class="t
22100 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 36_1">note:</span><span.class="t
22120 30 5f 31 22 3e 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 3c 2f 73 70 61 6e 3e 0a 20 20 0_1">.called.from.here</span>...
22140 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 ..return.fibonacci(index.-.1).+.
22160 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 fibonacci(index.-.2);...........
22180 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c ..........<span.class="t32_1">^<
221a0 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f /span>.<span.class="t0_1">/home/
221c0 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 andy/dev/zig/docgen_tmp/test.zig
221e0 3a 31 30 3a 32 35 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 36 5f :10:25:.</span><span.class="t36_
22200 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 1">note:</span><span.class="t0_1
22220 22 3e 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 20 ">.called.from.here</span>......
22240 20 20 20 61 73 73 65 72 74 28 66 69 62 6f 6e 61 63 63 69 28 37 29 20 3d 3d 20 31 33 29 3b 0a 20 ...assert(fibonacci(7).==.13);..
22260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 .......................<span.cla
22280 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 ss="t32_1">^</span>.</code></pre
222a0 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 63 6f 6d 70 69 6c 65 72 20 >........<p>.......The.compiler.
222c0 70 72 6f 64 75 63 65 73 20 61 6e 20 65 72 72 6f 72 20 77 68 69 63 68 20 69 73 20 61 20 73 74 61 produces.an.error.which.is.a.sta
222e0 63 6b 20 74 72 61 63 65 20 66 72 6f 6d 20 74 72 79 69 6e 67 20 74 6f 20 65 76 61 6c 75 61 74 65 ck.trace.from.trying.to.evaluate
22300 20 74 68 65 0a 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 .the.......function.at.compile-t
22320 69 6d 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 ime........</p>.......<p>.......
22340 4c 75 63 6b 69 6c 79 2c 20 77 65 20 75 73 65 64 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 Luckily,.we.used.an.unsigned.int
22360 65 67 65 72 2c 20 61 6e 64 20 73 6f 20 77 68 65 6e 20 77 65 20 74 72 69 65 64 20 74 6f 20 73 75 eger,.and.so.when.we.tried.to.su
22380 62 74 72 61 63 74 20 31 20 66 72 6f 6d 20 30 2c 20 69 74 20 74 72 69 67 67 65 72 65 64 0a 20 20 btract.1.from.0,.it.triggered...
223a0 20 20 20 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 2c 20 77 68 69 63 68 20 69 73 ....undefined.behavior,.which.is
223c0 20 61 6c 77 61 79 73 20 61 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 20 69 66 20 74 68 65 20 63 .always.a.compile.error.if.the.c
223e0 6f 6d 70 69 6c 65 72 20 6b 6e 6f 77 73 20 69 74 20 68 61 70 70 65 6e 65 64 2e 0a 20 20 20 20 20 ompiler.knows.it.happened.......
22400 20 42 75 74 20 77 68 61 74 20 77 6f 75 6c 64 20 68 61 76 65 20 68 61 70 70 65 6e 65 64 20 69 66 .But.what.would.have.happened.if
22420 20 77 65 20 75 73 65 64 20 61 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 3f 0a 20 20 20 20 20 .we.used.a.signed.integer?......
22440 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 .</p>.......<p.class="file">test
22460 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 .zig</p><pre><code.class="zig">c
22480 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 onst.assert.=.@import(&quot;std&
224a0 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 66 6e 20 66 69 62 6f 6e 61 63 quot;).debug.assert;..fn.fibonac
224c0 63 69 28 69 6e 64 65 78 3a 20 69 33 32 29 20 69 33 32 20 7b 0a 20 20 20 20 2f 2f 69 66 20 28 69 ci(index:.i32).i32.{.....//if.(i
224e0 6e 64 65 78 20 26 6c 74 3b 20 32 29 20 72 65 74 75 72 6e 20 69 6e 64 65 78 3b 0a 20 20 20 20 72 ndex.&lt;.2).return.index;.....r
22500 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 eturn.fibonacci(index.-.1).+.fib
22520 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 onacci(index.-.2);.}..test.&quot
22540 3b 66 69 62 6f 6e 61 63 63 69 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 63 6f 6d 70 74 69 6d 65 20 ;fibonacci&quot;.{.....comptime.
22560 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 66 69 62 6f 6e 61 63 63 69 28 37 29 20 3d 3d {.........assert(fibonacci(7).==
22580 20 31 33 29 3b 0a 20 20 20 20 7d 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c .13);.....}.}</code></pre><pre><
225a0 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 code.class="shell">$.zig.test.te
225c0 73 74 2e 7a 69 67 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f st.zig.<span.class="t0_1">/home/
225e0 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 andy/dev/zig/docgen_tmp/test.zig
22600 3a 35 3a 32 31 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 :5:21:.</span><span.class="t31_1
22620 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 ">error:</span><span.class="t0_1
22640 22 3e 20 65 76 61 6c 75 61 74 69 6f 6e 20 65 78 63 65 65 64 65 64 20 31 30 30 30 20 62 61 63 6b ">.evaluation.exceeded.1000.back
22660 77 61 72 64 73 20 62 72 61 6e 63 68 65 73 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 72 65 74 75 72 6e wards.branches</span>.....return
22680 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 .fibonacci(index.-.1).+.fibonacc
226a0 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 i(index.-.2);...................
226c0 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c ..<span.class="t32_1">^</span>.<
226e0 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 span.class="t0_1">/home/andy/dev
22700 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 32 31 3a 20 3c /zig/docgen_tmp/test.zig:5:21:.<
22720 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c /span><span.class="t36_1">note:<
22740 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 6c 6c 65 64 /span><span.class="t0_1">.called
22760 20 66 72 6f 6d 20 68 65 72 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 .from.here</span>.....return.fib
22780 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e onacci(index.-.1).+.fibonacci(in
227a0 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 dex.-.2);.....................<s
227c0 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e pan.class="t32_1">^</span>.<span
227e0 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 .class="t0_1">/home/andy/dev/zig
22800 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 32 31 3a 20 3c 2f 73 70 61 /docgen_tmp/test.zig:5:21:.</spa
22820 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 n><span.class="t36_1">note:</spa
22840 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 6c 6c 65 64 20 66 72 6f n><span.class="t0_1">.called.fro
22860 6d 20 68 65 72 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 m.here</span>.....return.fibonac
22880 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 ci(index.-.1).+.fibonacci(index.
228a0 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 -.2);.....................<span.
228c0 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 class="t32_1">^</span>.<span.cla
228e0 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 ss="t0_1">/home/andy/dev/zig/doc
22900 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 32 31 3a 20 3c 2f 73 70 61 6e 3e 3c 73 gen_tmp/test.zig:5:21:.</span><s
22920 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 6e 3e 3c 73 pan.class="t36_1">note:</span><s
22940 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 pan.class="t0_1">.called.from.he
22960 72 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 re</span>.....return.fibonacci(i
22980 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 ndex.-.1).+.fibonacci(index.-.2)
229a0 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 ;.....................<span.clas
229c0 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 s="t32_1">^</span>.<span.class="
229e0 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f t0_1">/home/andy/dev/zig/docgen_
22a00 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 32 31 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 tmp/test.zig:5:21:.</span><span.
22a20 63 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 class="t36_1">note:</span><span.
22a40 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 3c 2f class="t0_1">.called.from.here</
22a60 73 70 61 6e 3e 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 span>.....return.fibonacci(index
22a80 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 .-.1).+.fibonacci(index.-.2);...
22aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 ..................<span.class="t
22ac0 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 32_1">^</span>.<span.class="t0_1
22ae0 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f ">/home/andy/dev/zig/docgen_tmp/
22b00 74 65 73 74 2e 7a 69 67 3a 35 3a 32 31 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 test.zig:5:21:.</span><span.clas
22b20 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 s="t36_1">note:</span><span.clas
22b40 73 3d 22 74 30 5f 31 22 3e 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 3c 2f 73 70 61 6e s="t0_1">.called.from.here</span
22b60 3e 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 >.....return.fibonacci(index.-.1
22b80 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 ).+.fibonacci(index.-.2);.......
22ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 ..............<span.class="t32_1
22bc0 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 ">^</span>.<span.class="t0_1">/h
22be0 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 ome/andy/dev/zig/docgen_tmp/test
22c00 2e 7a 69 67 3a 35 3a 32 31 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 .zig:5:21:.</span><span.class="t
22c20 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 36_1">note:</span><span.class="t
22c40 30 5f 31 22 3e 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 3c 2f 73 70 61 6e 3e 0a 20 20 0_1">.called.from.here</span>...
22c60 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 ..return.fibonacci(index.-.1).+.
22c80 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 fibonacci(index.-.2);...........
22ca0 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c ..........<span.class="t32_1">^<
22cc0 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f /span>.<span.class="t0_1">/home/
22ce0 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 andy/dev/zig/docgen_tmp/test.zig
22d00 3a 35 3a 32 31 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 36 5f 31 :5:21:.</span><span.class="t36_1
22d20 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 ">note:</span><span.class="t0_1"
22d40 3e 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 72 65 >.called.from.here</span>.....re
22d60 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f turn.fibonacci(index.-.1).+.fibo
22d80 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nacci(index.-.2);...............
22da0 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 ......<span.class="t32_1">^</spa
22dc0 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 n>.<span.class="t0_1">/home/andy
22de0 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 32 /dev/zig/docgen_tmp/test.zig:5:2
22e00 31 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 1:.</span><span.class="t36_1">no
22e20 74 65 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 te:</span><span.class="t0_1">.ca
22e40 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 72 65 74 75 72 6e lled.from.here</span>.....return
22e60 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 .fibonacci(index.-.1).+.fibonacc
22e80 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 i(index.-.2);...................
22ea0 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c ..<span.class="t32_1">^</span>.<
22ec0 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 span.class="t0_1">/home/andy/dev
22ee0 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 32 31 3a 20 3c /zig/docgen_tmp/test.zig:5:21:.<
22f00 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c /span><span.class="t36_1">note:<
22f20 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 6c 6c 65 64 /span><span.class="t0_1">.called
22f40 20 66 72 6f 6d 20 68 65 72 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 .from.here</span>.....return.fib
22f60 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e onacci(index.-.1).+.fibonacci(in
22f80 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 dex.-.2);.....................<s
22fa0 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e pan.class="t32_1">^</span>.<span
22fc0 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 .class="t0_1">/home/andy/dev/zig
22fe0 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 32 31 3a 20 3c 2f 73 70 61 /docgen_tmp/test.zig:5:21:.</spa
23000 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 n><span.class="t36_1">note:</spa
23020 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 6c 6c 65 64 20 66 72 6f n><span.class="t0_1">.called.fro
23040 6d 20 68 65 72 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 m.here</span>.....return.fibonac
23060 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 ci(index.-.1).+.fibonacci(index.
23080 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 -.2);.....................<span.
230a0 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 class="t32_1">^</span>.<span.cla
230c0 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 ss="t0_1">/home/andy/dev/zig/doc
230e0 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 32 31 3a 20 3c 2f 73 70 61 6e 3e 3c 73 gen_tmp/test.zig:5:21:.</span><s
23100 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 6e 3e 3c 73 pan.class="t36_1">note:</span><s
23120 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 pan.class="t0_1">.called.from.he
23140 72 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 re</span>.....return.fibonacci(i
23160 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 ndex.-.1).+.fibonacci(index.-.2)
23180 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 ;.....................<span.clas
231a0 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e s="t32_1">^</span>.</code></pre>
231c0 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 63 6f 6d 70 69 6c 65 72 20 6e ........<p>.......The.compiler.n
231e0 6f 74 69 63 65 64 20 74 68 61 74 20 65 76 61 6c 75 61 74 69 6e 67 20 74 68 69 73 20 66 75 6e 63 oticed.that.evaluating.this.func
23200 74 69 6f 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 74 6f 6f 6b 20 61 20 6c 6f 6e 67 tion.at.compile-time.took.a.long
23220 20 74 69 6d 65 2c 0a 20 20 20 20 20 20 61 6e 64 20 74 68 75 73 20 65 6d 69 74 74 65 64 20 61 20 .time,.......and.thus.emitted.a.
23240 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 20 61 6e 64 20 67 61 76 65 20 75 70 2e 20 49 66 20 74 68 compile.error.and.gave.up..If.th
23260 65 20 70 72 6f 67 72 61 6d 6d 65 72 20 77 61 6e 74 73 20 74 6f 20 69 6e 63 72 65 61 73 65 0a 20 e.programmer.wants.to.increase..
23280 20 20 20 20 20 74 68 65 20 62 75 64 67 65 74 20 66 6f 72 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 .....the.budget.for.compile-time
232a0 20 63 6f 6d 70 75 74 61 74 69 6f 6e 2c 20 74 68 65 79 20 63 61 6e 20 75 73 65 20 61 20 62 75 69 .computation,.they.can.use.a.bui
232c0 6c 74 2d 69 6e 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 65 64 0a 20 20 20 20 20 20 3c 61 20 68 lt-in.function.called.......<a.h
232e0 72 65 66 3d 22 23 73 65 74 45 76 61 6c 42 72 61 6e 63 68 51 75 6f 74 61 22 3e 40 73 65 74 45 76 ref="#setEvalBranchQuota">@setEv
23300 61 6c 42 72 61 6e 63 68 51 75 6f 74 61 3c 2f 61 3e 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 alBranchQuota</a>.to.change.the.
23320 64 65 66 61 75 6c 74 20 6e 75 6d 62 65 72 20 31 30 30 30 20 74 6f 20 73 6f 6d 65 74 68 69 6e 67 default.number.1000.to.something
23340 20 65 6c 73 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 .else........</p>.......<p>.....
23360 20 20 57 68 61 74 20 69 66 20 77 65 20 66 69 78 20 74 68 65 20 62 61 73 65 20 63 61 73 65 2c 20 ..What.if.we.fix.the.base.case,.
23380 62 75 74 20 70 75 74 20 74 68 65 20 77 72 6f 6e 67 20 76 61 6c 75 65 20 69 6e 20 74 68 65 20 3c but.put.the.wrong.value.in.the.<
233a0 63 6f 64 65 3e 61 73 73 65 72 74 3c 2f 63 6f 64 65 3e 20 6c 69 6e 65 3f 0a 20 20 20 20 20 20 3c code>assert</code>.line?.......<
233c0 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a /p>.......<p.class="file">test.z
233e0 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e ig</p><pre><code.class="zig">con
23400 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 st.assert.=.@import(&quot;std&qu
23420 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 66 6e 20 66 69 62 6f 6e 61 63 63 69 ot;).debug.assert;..fn.fibonacci
23440 28 69 6e 64 65 78 3a 20 69 33 32 29 20 69 33 32 20 7b 0a 20 20 20 20 69 66 20 28 69 6e 64 65 78 (index:.i32).i32.{.....if.(index
23460 20 26 6c 74 3b 20 32 29 20 72 65 74 75 72 6e 20 69 6e 64 65 78 3b 0a 20 20 20 20 72 65 74 75 72 .&lt;.2).return.index;.....retur
23480 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 n.fibonacci(index.-.1).+.fibonac
234a0 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 66 69 62 ci(index.-.2);.}..test.&quot;fib
234c0 6f 6e 61 63 63 69 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 onacci&quot;.{.....comptime.{...
234e0 20 20 20 20 20 20 61 73 73 65 72 74 28 66 69 62 6f 6e 61 63 63 69 28 37 29 20 3d 3d 20 39 39 39 ......assert(fibonacci(7).==.999
23500 39 39 29 3b 0a 20 20 20 20 7d 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 99);.....}.}</code></pre><pre><c
23520 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 ode.class="shell">$.zig.test.tes
23540 74 2e 7a 69 67 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 t.zig.<span.class="t0_1">/home/a
23560 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 64 65 ndy/dev/zig/build/lib/zig/std/de
23580 62 75 67 2f 69 6e 64 65 78 2e 7a 69 67 3a 38 34 3a 31 33 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 bug/index.zig:84:13:.</span><spa
235a0 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 6e 3e 3c 73 70 n.class="t31_1">error:</span><sp
235c0 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 65 6e 63 6f 75 6e 74 65 72 65 64 20 40 70 61 an.class="t0_1">.encountered.@pa
235e0 6e 69 63 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 20 nic.at.compile-time</span>......
23600 20 20 20 20 20 20 20 40 70 61 6e 69 63 28 26 71 75 6f 74 3b 61 73 73 65 72 74 69 6f 6e 20 66 61 .......@panic(&quot;assertion.fa
23620 69 6c 75 72 65 26 71 75 6f 74 3b 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 ilure&quot;);.............<span.
23640 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 class="t32_1">^</span>.<span.cla
23660 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 ss="t0_1">/home/andy/dev/zig/doc
23680 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 31 30 3a 31 35 3a 20 3c 2f 73 70 61 6e 3e 3c gen_tmp/test.zig:10:15:.</span><
236a0 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 6e 3e 3c span.class="t36_1">note:</span><
236c0 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 span.class="t0_1">.called.from.h
236e0 65 72 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 66 69 62 6f 6e 61 ere</span>.........assert(fibona
23700 63 63 69 28 37 29 20 3d 3d 20 39 39 39 39 39 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 cci(7).==.99999);...............
23720 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 <span.class="t32_1">^</span>.</c
23740 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 57 68 61 74 ode></pre>........<p>.......What
23760 20 68 61 70 70 65 6e 65 64 20 69 73 20 5a 69 67 20 73 74 61 72 74 65 64 20 69 6e 74 65 72 70 72 .happened.is.Zig.started.interpr
23780 65 74 69 6e 67 20 74 68 65 20 3c 63 6f 64 65 3e 61 73 73 65 72 74 3c 2f 63 6f 64 65 3e 20 66 75 eting.the.<code>assert</code>.fu
237a0 6e 63 74 69 6f 6e 20 77 69 74 68 20 74 68 65 0a 20 20 20 20 20 20 70 61 72 61 6d 65 74 65 72 20 nction.with.the.......parameter.
237c0 3c 63 6f 64 65 3e 6f 6b 3c 2f 63 6f 64 65 3e 20 73 65 74 20 74 6f 20 3c 63 6f 64 65 3e 66 61 6c <code>ok</code>.set.to.<code>fal
237e0 73 65 3c 2f 63 6f 64 65 3e 2e 20 57 68 65 6e 20 74 68 65 20 69 6e 74 65 72 70 72 65 74 65 72 20 se</code>..When.the.interpreter.
23800 68 69 74 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 75 6e 72 65 61 63 68 61 62 6c 65 3c 2f 63 6f 64 hit.......<code>unreachable</cod
23820 65 3e 20 69 74 20 65 6d 69 74 74 65 64 20 61 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 2c 20 62 e>.it.emitted.a.compile.error,.b
23840 65 63 61 75 73 65 20 72 65 61 63 68 69 6e 67 20 75 6e 72 65 61 63 68 61 62 6c 65 0a 20 20 20 20 ecause.reaching.unreachable.....
23860 20 20 63 6f 64 65 20 69 73 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 2c 20 61 6e ..code.is.undefined.behavior,.an
23880 64 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 20 63 61 75 73 65 73 20 61 20 63 6f d.undefined.behavior.causes.a.co
238a0 6d 70 69 6c 65 20 65 72 72 6f 72 20 69 66 20 69 74 20 69 73 20 64 65 74 65 63 74 65 64 0a 20 20 mpile.error.if.it.is.detected...
238c0 20 20 20 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a ....at.compile-time........</p>.
238e0 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 20 74 68 65 20 67 6c 6f 62 61 6c 20 73 .......<p>.......In.the.global.s
23900 63 6f 70 65 20 28 6f 75 74 73 69 64 65 20 6f 66 20 61 6e 79 20 66 75 6e 63 74 69 6f 6e 29 2c 20 cope.(outside.of.any.function),.
23920 61 6c 6c 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61 72 65 20 69 6d 70 6c 69 63 69 74 6c 79 0a 20 all.expressions.are.implicitly..
23940 20 20 20 20 20 3c 63 6f 64 65 3e 63 6f 6d 70 74 69 6d 65 3c 2f 63 6f 64 65 3e 20 65 78 70 72 65 .....<code>comptime</code>.expre
23960 73 73 69 6f 6e 73 2e 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20 77 65 20 63 61 6e 20 75 ssions..This.means.that.we.can.u
23980 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 74 6f 0a 20 20 20 20 20 20 69 6e 69 74 69 61 6c 69 7a 65 se.functions.to.......initialize
239a0 20 63 6f 6d 70 6c 65 78 20 73 74 61 74 69 63 20 64 61 74 61 2e 20 46 6f 72 20 65 78 61 6d 70 6c .complex.static.data..For.exampl
239c0 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 e:.......</p>.......<p.class="fi
239e0 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 le">test.zig</p><pre><code.class
23a00 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 66 69 72 73 74 5f 32 35 5f 70 72 69 6d 65 73 20 3d 20 66 ="zig">const.first_25_primes.=.f
23a20 69 72 73 74 4e 50 72 69 6d 65 73 28 32 35 29 3b 0a 63 6f 6e 73 74 20 73 75 6d 5f 6f 66 5f 66 69 irstNPrimes(25);.const.sum_of_fi
23a40 72 73 74 5f 32 35 5f 70 72 69 6d 65 73 20 3d 20 73 75 6d 28 66 69 72 73 74 5f 32 35 5f 70 72 69 rst_25_primes.=.sum(first_25_pri
23a60 6d 65 73 29 3b 0a 0a 66 6e 20 66 69 72 73 74 4e 50 72 69 6d 65 73 28 63 6f 6d 70 74 69 6d 65 20 mes);..fn.firstNPrimes(comptime.
23a80 6e 3a 20 75 73 69 7a 65 29 20 5b 6e 5d 69 33 32 20 7b 0a 20 20 20 20 76 61 72 20 70 72 69 6d 65 n:.usize).[n]i32.{.....var.prime
23aa0 5f 6c 69 73 74 3a 20 5b 6e 5d 69 33 32 20 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 76 _list:.[n]i32.=.undefined;.....v
23ac0 61 72 20 6e 65 78 74 5f 69 6e 64 65 78 3a 20 75 73 69 7a 65 20 3d 20 30 3b 0a 20 20 20 20 76 61 ar.next_index:.usize.=.0;.....va
23ae0 72 20 74 65 73 74 5f 6e 75 6d 62 65 72 3a 20 69 33 32 20 3d 20 32 3b 0a 20 20 20 20 77 68 69 6c r.test_number:.i32.=.2;.....whil
23b00 65 20 28 6e 65 78 74 5f 69 6e 64 65 78 20 26 6c 74 3b 20 70 72 69 6d 65 5f 6c 69 73 74 2e 6c 65 e.(next_index.&lt;.prime_list.le
23b20 6e 29 20 3a 20 28 74 65 73 74 5f 6e 75 6d 62 65 72 20 2b 3d 20 31 29 20 7b 0a 20 20 20 20 20 20 n).:.(test_number.+=.1).{.......
23b40 20 20 76 61 72 20 74 65 73 74 5f 70 72 69 6d 65 5f 69 6e 64 65 78 3a 20 75 73 69 7a 65 20 3d 20 ..var.test_prime_index:.usize.=.
23b60 30 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 73 5f 70 72 69 6d 65 20 3d 20 74 72 75 65 3b 0a 0;.........var.is_prime.=.true;.
23b80 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 74 65 73 74 5f 70 72 69 6d 65 5f 69 6e 64 65 78 20 ........while.(test_prime_index.
23ba0 26 6c 74 3b 20 6e 65 78 74 5f 69 6e 64 65 78 29 20 3a 20 28 74 65 73 74 5f 70 72 69 6d 65 5f 69 &lt;.next_index).:.(test_prime_i
23bc0 6e 64 65 78 20 2b 3d 20 31 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 65 73 ndex.+=.1).{.............if.(tes
23be0 74 5f 6e 75 6d 62 65 72 20 25 20 70 72 69 6d 65 5f 6c 69 73 74 5b 74 65 73 74 5f 70 72 69 6d 65 t_number.%.prime_list[test_prime
23c00 5f 69 6e 64 65 78 5d 20 3d 3d 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 _index].==.0).{.................
23c20 69 73 5f 70 72 69 6d 65 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 is_prime.=.false;...............
23c40 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d ..break;.............}.........}
23c60 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 5f 70 72 69 6d 65 29 20 7b 0a 20 20 20 20 20 20 20 .........if.(is_prime).{........
23c80 20 20 20 20 20 70 72 69 6d 65 5f 6c 69 73 74 5b 6e 65 78 74 5f 69 6e 64 65 78 5d 20 3d 20 74 65 .....prime_list[next_index].=.te
23ca0 73 74 5f 6e 75 6d 62 65 72 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 78 74 5f 69 6e 64 65 st_number;.............next_inde
23cc0 78 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 x.+=.1;.........}.....}.....retu
23ce0 72 6e 20 70 72 69 6d 65 5f 6c 69 73 74 3b 0a 7d 0a 0a 66 6e 20 73 75 6d 28 6e 75 6d 62 65 72 73 rn.prime_list;.}..fn.sum(numbers
23d00 3a 20 5b 5d 63 6f 6e 73 74 20 69 33 32 29 20 69 33 32 20 7b 0a 20 20 20 20 76 61 72 20 72 65 73 :.[]const.i32).i32.{.....var.res
23d20 75 6c 74 3a 20 69 33 32 20 3d 20 30 3b 0a 20 20 20 20 66 6f 72 20 28 6e 75 6d 62 65 72 73 29 20 ult:.i32.=.0;.....for.(numbers).
23d40 7c 78 7c 20 7b 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 2b 3d 20 78 3b 0a 20 20 20 20 7d |x|.{.........result.+=.x;.....}
23d60 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f .....return.result;.}..test.&quo
23d80 74 3b 76 61 72 69 61 62 6c 65 20 76 61 6c 75 65 73 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 40 69 t;variable.values&quot;.{.....@i
23da0 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 mport(&quot;std&quot;).debug.ass
23dc0 65 72 74 28 73 75 6d 5f 6f 66 5f 66 69 72 73 74 5f 32 35 5f 70 72 69 6d 65 73 20 3d 3d 20 31 30 ert(sum_of_first_25_primes.==.10
23de0 36 30 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 60);.}</code></pre><pre><code.cl
23e00 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a ass="shell">$.zig.test.test.zig.
23e20 54 65 73 74 20 31 2f 31 20 76 61 72 69 61 62 6c 65 20 76 61 6c 75 65 73 2e 2e 2e 4f 4b 0a 3c 2f Test.1/1.variable.values...OK.</
23e40 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 57 68 65 code></pre>........<p>.......Whe
23e60 6e 20 77 65 20 63 6f 6d 70 69 6c 65 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2c 20 5a 69 67 20 67 n.we.compile.this.program,.Zig.g
23e80 65 6e 65 72 61 74 65 73 20 74 68 65 20 63 6f 6e 73 74 61 6e 74 73 0a 20 20 20 20 20 20 77 69 74 enerates.the.constants.......wit
23ea0 68 20 74 68 65 20 61 6e 73 77 65 72 20 70 72 65 2d 63 6f 6d 70 75 74 65 64 2e 20 48 65 72 65 20 h.the.answer.pre-computed..Here.
23ec0 61 72 65 20 74 68 65 20 6c 69 6e 65 73 20 66 72 6f 6d 20 74 68 65 20 67 65 6e 65 72 61 74 65 64 are.the.lines.from.the.generated
23ee0 20 4c 4c 56 4d 20 49 52 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e .LLVM.IR:.......</p>.......<pre>
23f00 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 6c 6c 76 6d 22 3e 40 30 20 3d 20 69 6e 74 65 72 6e 61 6c <code.class="llvm">@0.=.internal
23f20 20 75 6e 6e 61 6d 65 64 5f 61 64 64 72 20 63 6f 6e 73 74 61 6e 74 20 5b 32 35 20 78 20 69 33 32 .unnamed_addr.constant.[25.x.i32
23f40 5d 20 5b 69 33 32 20 32 2c 20 69 33 32 20 33 2c 20 69 33 32 20 35 2c 20 69 33 32 20 37 2c 20 69 ].[i32.2,.i32.3,.i32.5,.i32.7,.i
23f60 33 32 20 31 31 2c 20 69 33 32 20 31 33 2c 20 69 33 32 20 31 37 2c 20 69 33 32 20 31 39 2c 20 69 32.11,.i32.13,.i32.17,.i32.19,.i
23f80 33 32 20 32 33 2c 20 69 33 32 20 32 39 2c 20 69 33 32 20 33 31 2c 20 69 33 32 20 33 37 2c 20 69 32.23,.i32.29,.i32.31,.i32.37,.i
23fa0 33 32 20 34 31 2c 20 69 33 32 20 34 33 2c 20 69 33 32 20 34 37 2c 20 69 33 32 20 35 33 2c 20 69 32.41,.i32.43,.i32.47,.i32.53,.i
23fc0 33 32 20 35 39 2c 20 69 33 32 20 36 31 2c 20 69 33 32 20 36 37 2c 20 69 33 32 20 37 31 2c 20 69 32.59,.i32.61,.i32.67,.i32.71,.i
23fe0 33 32 20 37 33 2c 20 69 33 32 20 37 39 2c 20 69 33 32 20 38 33 2c 20 69 33 32 20 38 39 2c 20 69 32.73,.i32.79,.i32.83,.i32.89,.i
24000 33 32 20 39 37 5d 0a 40 31 20 3d 20 69 6e 74 65 72 6e 61 6c 20 75 6e 6e 61 6d 65 64 5f 61 64 64 32.97].@1.=.internal.unnamed_add
24020 72 20 63 6f 6e 73 74 61 6e 74 20 69 33 32 20 31 30 36 30 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e r.constant.i32.1060</code></pre>
24040 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4e 6f 74 65 20 74 68 61 74 20 77 65 20 64 69 .......<p>.......Note.that.we.di
24060 64 20 6e 6f 74 20 68 61 76 65 20 74 6f 20 64 6f 20 61 6e 79 74 68 69 6e 67 20 73 70 65 63 69 61 d.not.have.to.do.anything.specia
24080 6c 20 77 69 74 68 20 74 68 65 20 73 79 6e 74 61 78 20 6f 66 20 74 68 65 73 65 20 66 75 6e 63 74 l.with.the.syntax.of.these.funct
240a0 69 6f 6e 73 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 0a 20 20 20 20 20 20 77 65 20 63 6f 75 6c ions..For.example,.......we.coul
240c0 64 20 63 61 6c 6c 20 74 68 65 20 3c 63 6f 64 65 3e 73 75 6d 3c 2f 63 6f 64 65 3e 20 66 75 6e 63 d.call.the.<code>sum</code>.func
240e0 74 69 6f 6e 20 61 73 20 69 73 20 77 69 74 68 20 61 20 73 6c 69 63 65 20 6f 66 20 6e 75 6d 62 65 tion.as.is.with.a.slice.of.numbe
24100 72 73 20 77 68 6f 73 65 20 6c 65 6e 67 74 68 20 61 6e 64 20 76 61 6c 75 65 73 20 77 65 72 65 0a rs.whose.length.and.values.were.
24120 20 20 20 20 20 20 6f 6e 6c 79 20 6b 6e 6f 77 6e 20 61 74 20 72 75 6e 2d 74 69 6d 65 2e 0a 20 20 ......only.known.at.run-time....
24140 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 ....</p>.....................<h2
24160 20 69 64 3d 22 47 65 6e 65 72 69 63 2d 44 61 74 61 2d 53 74 72 75 63 74 75 72 65 73 22 3e 47 65 .id="Generic-Data-Structures">Ge
24180 6e 65 72 69 63 20 44 61 74 61 20 53 74 72 75 63 74 75 72 65 73 3c 2f 68 32 3e 0a 0a 20 20 20 20 neric.Data.Structures</h2>......
241a0 20 20 3c 70 3e 0a 20 20 20 20 20 20 5a 69 67 20 75 73 65 73 20 74 68 65 73 65 20 63 61 70 61 62 ..<p>.......Zig.uses.these.capab
241c0 69 6c 69 74 69 65 73 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 67 65 6e 65 72 69 63 20 64 61 74 ilities.to.implement.generic.dat
241e0 61 20 73 74 72 75 63 74 75 72 65 73 20 77 69 74 68 6f 75 74 20 69 6e 74 72 6f 64 75 63 69 6e 67 a.structures.without.introducing
24200 20 61 6e 79 0a 20 20 20 20 20 20 73 70 65 63 69 61 6c 2d 63 61 73 65 20 73 79 6e 74 61 78 2e 20 .any.......special-case.syntax..
24220 49 66 20 79 6f 75 20 66 6f 6c 6c 6f 77 65 64 20 61 6c 6f 6e 67 20 73 6f 20 66 61 72 2c 20 79 6f If.you.followed.along.so.far,.yo
24240 75 20 6d 61 79 20 61 6c 72 65 61 64 79 20 6b 6e 6f 77 20 68 6f 77 20 74 6f 20 63 72 65 61 74 65 u.may.already.know.how.to.create
24260 20 61 0a 20 20 20 20 20 20 67 65 6e 65 72 69 63 20 64 61 74 61 20 73 74 72 75 63 74 75 72 65 2e .a.......generic.data.structure.
24280 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 48 65 72 65 .......</p>.......<p>.......Here
242a0 20 69 73 20 61 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20 61 20 67 65 6e 65 72 69 63 20 3c 63 6f 64 .is.an.example.of.a.generic.<cod
242c0 65 3e 4c 69 73 74 3c 2f 63 6f 64 65 3e 20 64 61 74 61 20 73 74 72 75 63 74 75 72 65 2c 20 74 68 e>List</code>.data.structure,.th
242e0 61 74 20 77 65 20 77 69 6c 6c 20 69 6e 73 74 61 6e 74 69 61 74 65 20 77 69 74 68 0a 20 20 20 20 at.we.will.instantiate.with.....
24300 20 20 74 68 65 20 74 79 70 65 20 3c 63 6f 64 65 3e 69 33 32 3c 2f 63 6f 64 65 3e 2e 20 49 6e 20 ..the.type.<code>i32</code>..In.
24320 5a 69 67 20 77 65 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 74 79 70 65 20 61 73 20 3c 63 6f 64 Zig.we.refer.to.the.type.as.<cod
24340 65 3e 4c 69 73 74 28 69 33 32 29 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 e>List(i32)</code>........</p>..
24360 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 6e 20 4c .....<pre><code.class="zig">fn.L
24380 69 73 74 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 29 20 74 79 70 65 20 7b 0a 20 20 20 ist(comptime.T:.type).type.{....
243a0 20 72 65 74 75 72 6e 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 20 20 20 20 69 74 65 6d 73 3a 20 .return.struct.{.........items:.
243c0 5b 5d 54 2c 0a 20 20 20 20 20 20 20 20 6c 65 6e 3a 20 75 73 69 7a 65 2c 0a 20 20 20 20 7d 3b 0a []T,.........len:.usize,.....};.
243e0 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 }</code></pre>.......<p>.......T
24400 68 61 74 27 73 20 69 74 2e 20 49 74 27 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 hat's.it..It's.a.function.that.r
24420 65 74 75 72 6e 73 20 61 6e 20 61 6e 6f 6e 79 6d 6f 75 73 20 3c 63 6f 64 65 3e 73 74 72 75 63 74 eturns.an.anonymous.<code>struct
24440 3c 2f 63 6f 64 65 3e 2e 20 46 6f 72 20 74 68 65 20 70 75 72 70 6f 73 65 73 20 6f 66 20 65 72 72 </code>..For.the.purposes.of.err
24460 6f 72 20 6d 65 73 73 61 67 65 73 0a 20 20 20 20 20 20 61 6e 64 20 64 65 62 75 67 67 69 6e 67 2c or.messages.......and.debugging,
24480 20 5a 69 67 20 69 6e 66 65 72 73 20 74 68 65 20 6e 61 6d 65 20 3c 63 6f 64 65 3e 22 4c 69 73 74 .Zig.infers.the.name.<code>"List
244a0 28 69 33 32 29 22 3c 2f 63 6f 64 65 3e 20 66 72 6f 6d 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 (i32)"</code>.from.the.function.
244c0 6e 61 6d 65 20 61 6e 64 20 70 61 72 61 6d 65 74 65 72 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e name.and.parameters.invoked.when
244e0 20 63 72 65 61 74 69 6e 67 0a 20 20 20 20 20 20 74 68 65 20 61 6e 6f 6e 79 6d 6f 75 73 20 73 74 .creating.......the.anonymous.st
24500 72 75 63 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 ruct........</p>.......<p>......
24520 20 54 6f 20 6b 65 65 70 20 74 68 65 20 6c 61 6e 67 75 61 67 65 20 73 6d 61 6c 6c 20 61 6e 64 20 .To.keep.the.language.small.and.
24540 75 6e 69 66 6f 72 6d 2c 20 61 6c 6c 20 61 67 67 72 65 67 61 74 65 20 74 79 70 65 73 20 69 6e 20 uniform,.all.aggregate.types.in.
24560 5a 69 67 20 61 72 65 20 61 6e 6f 6e 79 6d 6f 75 73 2e 20 54 6f 20 67 69 76 65 20 61 20 74 79 70 Zig.are.anonymous..To.give.a.typ
24580 65 0a 20 20 20 20 20 20 61 20 6e 61 6d 65 2c 20 77 65 20 61 73 73 69 67 6e 20 69 74 20 74 6f 20 e.......a.name,.we.assign.it.to.
245a0 61 20 63 6f 6e 73 74 61 6e 74 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 a.constant:.......</p>.......<pr
245c0 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 4e 6f 64 65 20 3d e><code.class="zig">const.Node.=
245e0 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 6e 65 78 74 3a 20 26 61 6d 70 3b 4e 6f 64 65 2c 0a 20 .struct.{.....next:.&amp;Node,..
24600 20 20 20 6e 61 6d 65 3a 20 5b 5d 75 38 2c 0a 7d 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 ...name:.[]u8,.};</code></pre>..
24620 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 77 6f 72 6b 73 20 62 65 63 61 75 73 .....<p>.......This.works.becaus
24640 65 20 61 6c 6c 20 74 6f 70 20 6c 65 76 65 6c 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 20 61 72 65 e.all.top.level.declarations.are
24660 20 6f 72 64 65 72 2d 69 6e 64 65 70 65 6e 64 65 6e 74 2c 20 61 6e 64 20 61 73 20 6c 6f 6e 67 20 .order-independent,.and.as.long.
24680 61 73 20 74 68 65 72 65 20 69 73 6e 27 74 0a 20 20 20 20 20 20 61 6e 20 61 63 74 75 61 6c 20 69 as.there.isn't.......an.actual.i
246a0 6e 66 69 6e 69 74 65 20 72 65 67 72 65 73 73 69 6f 6e 2c 20 76 61 6c 75 65 73 20 63 61 6e 20 72 nfinite.regression,.values.can.r
246c0 65 66 65 72 20 74 6f 20 74 68 65 6d 73 65 6c 76 65 73 2c 20 64 69 72 65 63 74 6c 79 20 6f 72 20 efer.to.themselves,.directly.or.
246e0 69 6e 64 69 72 65 63 74 6c 79 2e 20 49 6e 20 74 68 69 73 20 63 61 73 65 2c 0a 20 20 20 20 20 20 indirectly..In.this.case,.......
24700 3c 63 6f 64 65 3e 4e 6f 64 65 3c 2f 63 6f 64 65 3e 20 72 65 66 65 72 73 20 74 6f 20 69 74 73 65 <code>Node</code>.refers.to.itse
24720 6c 66 20 61 73 20 61 20 70 6f 69 6e 74 65 72 2c 20 77 68 69 63 68 20 69 73 20 6e 6f 74 20 61 63 lf.as.a.pointer,.which.is.not.ac
24740 74 75 61 6c 6c 79 20 61 6e 20 69 6e 66 69 6e 69 74 65 20 72 65 67 72 65 73 73 69 6f 6e 2c 20 73 tually.an.infinite.regression,.s
24760 6f 0a 20 20 20 20 20 20 69 74 20 77 6f 72 6b 73 20 66 69 6e 65 2e 0a 20 20 20 20 20 20 3c 2f 70 o.......it.works.fine........</p
24780 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 43 61 73 65 2d 53 74 75 64 >..............<h2.id="Case-Stud
247a0 79 2d 70 72 69 6e 74 66 2d 69 6e 2d 5a 69 67 22 3e 43 61 73 65 20 53 74 75 64 79 3a 20 70 72 69 y-printf-in-Zig">Case.Study:.pri
247c0 6e 74 66 20 69 6e 20 5a 69 67 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 ntf.in.Zig</h2>........<p>......
247e0 20 50 75 74 74 69 6e 67 20 61 6c 6c 20 6f 66 20 74 68 69 73 20 74 6f 67 65 74 68 65 72 2c 20 6c .Putting.all.of.this.together,.l
24800 65 74 27 73 20 73 65 65 20 68 6f 77 20 3c 63 6f 64 65 3e 70 72 69 6e 74 66 3c 2f 63 6f 64 65 3e et's.see.how.<code>printf</code>
24820 20 77 6f 72 6b 73 20 69 6e 20 5a 69 67 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 .works.in.Zig........</p>.......
24840 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 70 72 69 6e 74 66 2e 7a 69 67 3c 2f 70 3e 3c 70 <p.class="file">printf.zig</p><p
24860 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 77 61 72 6e 20 re><code.class="zig">const.warn.
24880 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 =.@import(&quot;std&quot;).debug
248a0 2e 77 61 72 6e 3b 0a 0a 63 6f 6e 73 74 20 61 5f 6e 75 6d 62 65 72 3a 20 69 33 32 20 3d 20 31 32 .warn;..const.a_number:.i32.=.12
248c0 33 34 3b 0a 63 6f 6e 73 74 20 61 5f 73 74 72 69 6e 67 20 3d 20 26 71 75 6f 74 3b 66 6f 6f 62 61 34;.const.a_string.=.&quot;fooba
248e0 72 26 71 75 6f 74 3b 3b 0a 0a 70 75 62 20 66 6e 20 6d 61 69 6e 28 29 20 76 6f 69 64 20 7b 0a 20 r&quot;;..pub.fn.main().void.{..
24900 20 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 68 65 72 65 20 69 73 20 61 20 73 74 72 69 6e 67 3a 20 ...warn(&quot;here.is.a.string:.
24920 27 7b 7d 27 20 68 65 72 65 20 69 73 20 61 20 6e 75 6d 62 65 72 3a 20 7b 7d 5c 6e 26 71 75 6f 74 '{}'.here.is.a.number:.{}\n&quot
24940 3b 2c 20 61 5f 73 74 72 69 6e 67 2c 20 61 5f 6e 75 6d 62 65 72 29 3b 0a 7d 3c 2f 63 6f 64 65 3e ;,.a_string,.a_number);.}</code>
24960 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 </pre><pre><code.class="shell">$
24980 20 7a 69 67 20 62 75 69 6c 64 2d 65 78 65 20 70 72 69 6e 74 66 2e 7a 69 67 0a 24 20 2e 2f 70 72 .zig.build-exe.printf.zig.$../pr
249a0 69 6e 74 66 0a 68 65 72 65 20 69 73 20 61 20 73 74 72 69 6e 67 3a 20 27 66 6f 6f 62 61 72 27 20 intf.here.is.a.string:.'foobar'.
249c0 68 65 72 65 20 69 73 20 61 20 6e 75 6d 62 65 72 3a 20 31 32 33 34 0a 3c 2f 63 6f 64 65 3e 3c 2f here.is.a.number:.1234.</code></
249e0 70 72 65 3e 0a 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4c 65 74 27 73 20 63 72 61 pre>.........<p>.......Let's.cra
24a00 63 6b 20 6f 70 65 6e 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 ck.open.the.implementation.of.th
24a20 69 73 20 61 6e 64 20 73 65 65 20 68 6f 77 20 69 74 20 77 6f 72 6b 73 3a 0a 20 20 20 20 20 20 3c is.and.see.how.it.works:.......<
24a40 2f 70 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 /p>........<pre><code.class="zig
24a60 22 3e 2f 2f 2f 20 43 61 6c 6c 73 20 70 72 69 6e 74 20 61 6e 64 20 74 68 65 6e 20 66 6c 75 73 68 ">///.Calls.print.and.then.flush
24a80 65 73 20 74 68 65 20 62 75 66 66 65 72 2e 0a 70 75 62 20 66 6e 20 70 72 69 6e 74 66 28 73 65 6c es.the.buffer..pub.fn.printf(sel
24aa0 66 3a 20 26 61 6d 70 3b 4f 75 74 53 74 72 65 61 6d 2c 20 63 6f 6d 70 74 69 6d 65 20 66 6f 72 6d f:.&amp;OutStream,.comptime.form
24ac0 61 74 3a 20 5b 5d 63 6f 6e 73 74 20 75 38 2c 20 61 72 67 73 3a 20 2e 2e 2e 29 20 65 72 72 6f 72 at:.[]const.u8,.args:....).error
24ae0 21 76 6f 69 64 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 53 74 61 74 65 20 3d 20 65 6e 75 6d 20 7b !void.{.....const.State.=.enum.{
24b00 0a 20 20 20 20 20 20 20 20 53 74 61 72 74 2c 0a 20 20 20 20 20 20 20 20 4f 70 65 6e 42 72 61 63 .........Start,.........OpenBrac
24b20 65 2c 0a 20 20 20 20 20 20 20 20 43 6c 6f 73 65 42 72 61 63 65 2c 0a 20 20 20 20 7d 3b 0a 0a 20 e,.........CloseBrace,.....};...
24b40 20 20 20 63 6f 6d 70 74 69 6d 65 20 76 61 72 20 73 74 61 72 74 5f 69 6e 64 65 78 3a 20 75 73 69 ...comptime.var.start_index:.usi
24b60 7a 65 20 3d 20 30 3b 0a 20 20 20 20 63 6f 6d 70 74 69 6d 65 20 76 61 72 20 73 74 61 74 65 20 3d ze.=.0;.....comptime.var.state.=
24b80 20 53 74 61 74 65 2e 53 74 61 72 74 3b 0a 20 20 20 20 63 6f 6d 70 74 69 6d 65 20 76 61 72 20 6e .State.Start;.....comptime.var.n
24ba0 65 78 74 5f 61 72 67 3a 20 75 73 69 7a 65 20 3d 20 30 3b 0a 0a 20 20 20 20 69 6e 6c 69 6e 65 20 ext_arg:.usize.=.0;......inline.
24bc0 66 6f 72 20 28 66 6f 72 6d 61 74 29 20 7c 63 2c 20 69 7c 20 7b 0a 20 20 20 20 20 20 20 20 73 77 for.(format).|c,.i|.{.........sw
24be0 69 74 63 68 20 28 73 74 61 74 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 74 61 74 65 itch.(state).{.............State
24c00 2e 53 74 61 72 74 20 3d 26 67 74 3b 20 73 77 69 74 63 68 20 28 63 29 20 7b 0a 20 20 20 20 20 20 .Start.=&gt;.switch.(c).{.......
24c20 20 20 20 20 20 20 20 20 20 20 27 7b 27 20 3d 26 67 74 3b 20 7b 0a 20 20 20 20 20 20 20 20 20 20 ..........'{'.=&gt;.{...........
24c40 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 61 72 74 5f 69 6e 64 65 78 20 26 6c 74 3b 20 69 ..........if.(start_index.&lt;.i
24c60 29 20 74 72 79 20 73 65 6c 66 2e 77 72 69 74 65 28 66 6f 72 6d 61 74 5b 73 74 61 72 74 5f 69 6e ).try.self.write(format[start_in
24c80 64 65 78 2e 2e 69 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 dex..i]);.....................st
24ca0 61 74 65 20 3d 20 53 74 61 74 65 2e 4f 70 65 6e 42 72 61 63 65 3b 0a 20 20 20 20 20 20 20 20 20 ate.=.State.OpenBrace;..........
24cc0 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 7d 27 20 3d 26 .......},.................'}'.=&
24ce0 67 74 3b 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 gt;.{.....................if.(st
24d00 61 72 74 5f 69 6e 64 65 78 20 26 6c 74 3b 20 69 29 20 74 72 79 20 73 65 6c 66 2e 77 72 69 74 65 art_index.&lt;.i).try.self.write
24d20 28 66 6f 72 6d 61 74 5b 73 74 61 72 74 5f 69 6e 64 65 78 2e 2e 69 5d 29 3b 0a 20 20 20 20 20 20 (format[start_index..i]);.......
24d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 74 65 20 3d 20 53 74 61 74 65 2e 43 6c 6f 73 ..............state.=.State.Clos
24d60 65 42 72 61 63 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 eBrace;.................},......
24d80 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 3d 26 67 74 3b 20 7b 7d 2c 0a 20 20 20 20 20 20 ...........else.=&gt;.{},.......
24da0 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 74 61 74 65 2e 4f 70 65 6e 42 ......},.............State.OpenB
24dc0 72 61 63 65 20 3d 26 67 74 3b 20 73 77 69 74 63 68 20 28 63 29 20 7b 0a 20 20 20 20 20 20 20 20 race.=&gt;.switch.(c).{.........
24de0 20 20 20 20 20 20 20 20 27 7b 27 20 3d 26 67 74 3b 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ........'{'.=&gt;.{.............
24e00 20 20 20 20 20 20 20 20 73 74 61 74 65 20 3d 20 53 74 61 74 65 2e 53 74 61 72 74 3b 0a 20 20 20 ........state.=.State.Start;....
24e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 72 74 5f 69 6e 64 65 78 20 3d 20 69 .................start_index.=.i
24e40 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 ;.................},............
24e60 20 20 20 20 20 27 7d 27 20 3d 26 67 74 3b 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....'}'.=&gt;.{................
24e80 20 20 20 20 20 74 72 79 20 73 65 6c 66 2e 70 72 69 6e 74 56 61 6c 75 65 28 61 72 67 73 5b 6e 65 .....try.self.printValue(args[ne
24ea0 78 74 5f 61 72 67 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 xt_arg]);.....................ne
24ec0 78 74 5f 61 72 67 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 xt_arg.+=.1;....................
24ee0 20 73 74 61 74 65 20 3d 20 53 74 61 74 65 2e 53 74 61 72 74 3b 0a 20 20 20 20 20 20 20 20 20 20 .state.=.State.Start;...........
24f00 20 20 20 20 20 20 20 20 20 20 73 74 61 72 74 5f 69 6e 64 65 78 20 3d 20 69 20 2b 20 31 3b 0a 20 ..........start_index.=.i.+.1;..
24f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...............},...............
24f40 20 20 65 6c 73 65 20 3d 26 67 74 3b 20 40 63 6f 6d 70 69 6c 65 45 72 72 6f 72 28 26 71 75 6f 74 ..else.=&gt;.@compileError(&quot
24f60 3b 55 6e 6b 6e 6f 77 6e 20 66 6f 72 6d 61 74 20 63 68 61 72 61 63 74 65 72 3a 20 26 71 75 6f 74 ;Unknown.format.character:.&quot
24f80 3b 20 2b 2b 20 63 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 ;.++.c),.............},.........
24fa0 20 20 20 20 53 74 61 74 65 2e 43 6c 6f 73 65 42 72 61 63 65 20 3d 26 67 74 3b 20 73 77 69 74 63 ....State.CloseBrace.=&gt;.switc
24fc0 68 20 28 63 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 7d 27 20 3d 26 67 74 h.(c).{.................'}'.=&gt
24fe0 3b 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 74 65 20 3d 20 ;.{.....................state.=.
25000 53 74 61 74 65 2e 53 74 61 72 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 State.Start;....................
25020 20 73 74 61 72 74 5f 69 6e 64 65 78 20 3d 20 69 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .start_index.=.i;...............
25040 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 3d 26 67 74 3b 20 ..},.................else.=&gt;.
25060 40 63 6f 6d 70 69 6c 65 45 72 72 6f 72 28 26 71 75 6f 74 3b 53 69 6e 67 6c 65 20 27 7d 27 20 65 @compileError(&quot;Single.'}'.e
25080 6e 63 6f 75 6e 74 65 72 65 64 20 69 6e 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 26 71 75 6f 74 ncountered.in.format.string&quot
250a0 3b 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 ;),.............},.........}....
250c0 20 7d 0a 20 20 20 20 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 61 72 .}.....comptime.{.........if.(ar
250e0 67 73 2e 6c 65 6e 20 21 3d 20 6e 65 78 74 5f 61 72 67 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 gs.len.!=.next_arg).{...........
25100 20 20 40 63 6f 6d 70 69 6c 65 45 72 72 6f 72 28 26 71 75 6f 74 3b 55 6e 75 73 65 64 20 61 72 67 ..@compileError(&quot;Unused.arg
25120 75 6d 65 6e 74 73 26 71 75 6f 74 3b 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 uments&quot;);.........}........
25140 20 69 66 20 28 73 74 61 74 65 20 21 3d 20 53 74 61 74 65 2e 53 74 61 72 74 29 20 7b 0a 20 20 20 .if.(state.!=.State.Start).{....
25160 20 20 20 20 20 20 20 20 20 40 63 6f 6d 70 69 6c 65 45 72 72 6f 72 28 26 71 75 6f 74 3b 49 6e 63 .........@compileError(&quot;Inc
25180 6f 6d 70 6c 65 74 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 3a 20 26 71 75 6f 74 3b 20 2b 2b omplete.format.string:.&quot;.++
251a0 20 66 6f 72 6d 61 74 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 .format);.........}.....}.....if
251c0 20 28 73 74 61 72 74 5f 69 6e 64 65 78 20 26 6c 74 3b 20 66 6f 72 6d 61 74 2e 6c 65 6e 29 20 7b .(start_index.&lt;.format.len).{
251e0 0a 20 20 20 20 20 20 20 20 74 72 79 20 73 65 6c 66 2e 77 72 69 74 65 28 66 6f 72 6d 61 74 5b 73 .........try.self.write(format[s
25200 74 61 72 74 5f 69 6e 64 65 78 2e 2e 66 6f 72 6d 61 74 2e 6c 65 6e 5d 29 3b 0a 20 20 20 20 7d 0a tart_index..format.len]);.....}.
25220 20 20 20 20 74 72 79 20 73 65 6c 66 2e 66 6c 75 73 68 28 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f ....try.self.flush();.}</code></
25240 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 69 73 20 61 20 70 pre>.......<p>.......This.is.a.p
25260 72 6f 6f 66 20 6f 66 20 63 6f 6e 63 65 70 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 3b 20 roof.of.concept.implementation;.
25280 74 68 65 20 61 63 74 75 61 6c 20 66 75 6e 63 74 69 6f 6e 20 69 6e 20 74 68 65 20 73 74 61 6e 64 the.actual.function.in.the.stand
252a0 61 72 64 20 6c 69 62 72 61 72 79 20 68 61 73 20 6d 6f 72 65 0a 20 20 20 20 20 20 66 6f 72 6d 61 ard.library.has.more.......forma
252c0 74 74 69 6e 67 20 63 61 70 61 62 69 6c 69 74 69 65 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 tting.capabilities........</p>..
252e0 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4e 6f 74 65 20 74 68 61 74 20 74 68 69 73 20 69 73 .....<p>.......Note.that.this.is
25300 20 6e 6f 74 20 68 61 72 64 2d 63 6f 64 65 64 20 69 6e 74 6f 20 74 68 65 20 5a 69 67 20 63 6f 6d .not.hard-coded.into.the.Zig.com
25320 70 69 6c 65 72 3b 20 74 68 69 73 20 69 73 20 75 73 65 72 6c 61 6e 64 20 63 6f 64 65 20 69 6e 20 piler;.this.is.userland.code.in.
25340 74 68 65 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 2e 0a 20 20 20 20 20 20 3c 2f 70 3e the.standard.library........</p>
25360 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 57 68 65 6e 20 74 68 69 73 20 66 75 6e 63 74 .......<p>.......When.this.funct
25380 69 6f 6e 20 69 73 20 61 6e 61 6c 79 7a 65 64 20 66 72 6f 6d 20 6f 75 72 20 65 78 61 6d 70 6c 65 ion.is.analyzed.from.our.example
253a0 20 63 6f 64 65 20 61 62 6f 76 65 2c 20 5a 69 67 20 70 61 72 74 69 61 6c 6c 79 20 65 76 61 6c 75 .code.above,.Zig.partially.evalu
253c0 61 74 65 73 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 61 6e 64 20 65 6d 69 74 ates.the.function.......and.emit
253e0 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 61 63 74 75 61 6c 6c 79 20 6c 6f 6f 6b 73 s.a.function.that.actually.looks
25400 20 6c 69 6b 65 20 74 68 69 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 .like.this:.......</p>.......<pr
25420 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 70 75 62 20 66 6e 20 70 72 69 6e 74 e><code.class="zig">pub.fn.print
25440 66 28 73 65 6c 66 3a 20 26 61 6d 70 3b 4f 75 74 53 74 72 65 61 6d 2c 20 61 72 67 30 3a 20 69 33 f(self:.&amp;OutStream,.arg0:.i3
25460 32 2c 20 61 72 67 31 3a 20 5b 5d 63 6f 6e 73 74 20 75 38 29 20 21 76 6f 69 64 20 7b 0a 20 20 20 2,.arg1:.[]const.u8).!void.{....
25480 20 74 72 79 20 73 65 6c 66 2e 77 72 69 74 65 28 26 71 75 6f 74 3b 68 65 72 65 20 69 73 20 61 20 .try.self.write(&quot;here.is.a.
254a0 73 74 72 69 6e 67 3a 20 27 26 71 75 6f 74 3b 29 3b 0a 20 20 20 20 74 72 79 20 73 65 6c 66 2e 70 string:.'&quot;);.....try.self.p
254c0 72 69 6e 74 56 61 6c 75 65 28 61 72 67 30 29 3b 0a 20 20 20 20 74 72 79 20 73 65 6c 66 2e 77 72 rintValue(arg0);.....try.self.wr
254e0 69 74 65 28 26 71 75 6f 74 3b 27 20 68 65 72 65 20 69 73 20 61 20 6e 75 6d 62 65 72 3a 20 26 71 ite(&quot;'.here.is.a.number:.&q
25500 75 6f 74 3b 29 3b 0a 20 20 20 20 74 72 79 20 73 65 6c 66 2e 70 72 69 6e 74 56 61 6c 75 65 28 61 uot;);.....try.self.printValue(a
25520 72 67 31 29 3b 0a 20 20 20 20 74 72 79 20 73 65 6c 66 2e 77 72 69 74 65 28 26 71 75 6f 74 3b 5c rg1);.....try.self.write(&quot;\
25540 6e 26 71 75 6f 74 3b 29 3b 0a 20 20 20 20 74 72 79 20 73 65 6c 66 2e 66 6c 75 73 68 28 29 3b 0a n&quot;);.....try.self.flush();.
25560 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 3c }</code></pre>.......<p>.......<
25580 63 6f 64 65 3e 70 72 69 6e 74 56 61 6c 75 65 3c 2f 63 6f 64 65 3e 20 69 73 20 61 20 66 75 6e 63 code>printValue</code>.is.a.func
255a0 74 69 6f 6e 20 74 68 61 74 20 74 61 6b 65 73 20 61 20 70 61 72 61 6d 65 74 65 72 20 6f 66 20 61 tion.that.takes.a.parameter.of.a
255c0 6e 79 20 74 79 70 65 2c 20 61 6e 64 20 64 6f 65 73 20 64 69 66 66 65 72 65 6e 74 20 74 68 69 6e ny.type,.and.does.different.thin
255e0 67 73 20 64 65 70 65 6e 64 69 6e 67 0a 20 20 20 20 20 20 6f 6e 20 74 68 65 20 74 79 70 65 3a 0a gs.depending.......on.the.type:.
25600 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 ......</p>.......<pre><code.clas
25620 73 3d 22 7a 69 67 22 3e 70 75 62 20 66 6e 20 70 72 69 6e 74 56 61 6c 75 65 28 73 65 6c 66 3a 20 s="zig">pub.fn.printValue(self:.
25640 26 61 6d 70 3b 4f 75 74 53 74 72 65 61 6d 2c 20 76 61 6c 75 65 3a 20 76 61 72 29 20 21 76 6f 69 &amp;OutStream,.value:.var).!voi
25660 64 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 54 20 3d 20 40 74 79 70 65 4f 66 28 76 61 6c 75 65 29 d.{.....const.T.=.@typeOf(value)
25680 3b 0a 20 20 20 20 69 66 20 28 40 69 73 49 6e 74 65 67 65 72 28 54 29 29 20 7b 0a 20 20 20 20 20 ;.....if.(@isInteger(T)).{......
256a0 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 70 72 69 6e 74 49 6e 74 28 54 2c 20 76 61 6c 75 65 ...return.self.printInt(T,.value
256c0 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 40 69 73 46 6c 6f 61 74 28 54 29 29 20 7b );.....}.else.if.(@isFloat(T)).{
256e0 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 70 72 69 6e 74 46 6c 6f 61 74 28 .........return.self.printFloat(
25700 54 2c 20 76 61 6c 75 65 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 40 63 61 6e 49 6d T,.value);.....}.else.if.(@canIm
25720 70 6c 69 63 69 74 43 61 73 74 28 5b 5d 63 6f 6e 73 74 20 75 38 2c 20 76 61 6c 75 65 29 29 20 7b plicitCast([]const.u8,.value)).{
25740 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 63 61 73 74 65 64 5f 76 61 6c 75 65 20 3d 20 28 5b .........const.casted_value.=.([
25760 5d 63 6f 6e 73 74 20 75 38 29 28 76 61 6c 75 65 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 ]const.u8)(value);.........retur
25780 6e 20 73 65 6c 66 2e 77 72 69 74 65 28 63 61 73 74 65 64 5f 76 61 6c 75 65 29 3b 0a 20 20 20 20 n.self.write(casted_value);.....
257a0 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 40 63 6f 6d 70 69 6c 65 45 72 72 6f 72 28 26 }.else.{.........@compileError(&
257c0 71 75 6f 74 3b 55 6e 61 62 6c 65 20 74 6f 20 70 72 69 6e 74 20 74 79 70 65 20 27 26 71 75 6f 74 quot;Unable.to.print.type.'&quot
257e0 3b 20 2b 2b 20 40 74 79 70 65 4e 61 6d 65 28 54 29 20 2b 2b 20 26 71 75 6f 74 3b 27 26 71 75 6f ;.++.@typeName(T).++.&quot;'&quo
25800 74 3b 29 3b 0a 20 20 20 20 7d 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 t;);.....}.}</code></pre>.......
25820 3c 70 3e 0a 20 20 20 20 20 20 41 6e 64 20 6e 6f 77 2c 20 77 68 61 74 20 68 61 70 70 65 6e 73 20 <p>.......And.now,.what.happens.
25840 69 66 20 77 65 20 67 69 76 65 20 74 6f 6f 20 6d 61 6e 79 20 61 72 67 75 6d 65 6e 74 73 20 74 6f if.we.give.too.many.arguments.to
25860 20 3c 63 6f 64 65 3e 70 72 69 6e 74 66 3c 2f 63 6f 64 65 3e 3f 0a 20 20 20 20 20 20 3c 2f 70 3e .<code>printf</code>?.......</p>
25880 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c .......<p.class="file">test.zig<
258a0 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 /p><pre><code.class="zig">const.
258c0 77 61 72 6e 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e warn.=.@import(&quot;std&quot;).
258e0 64 65 62 75 67 2e 77 61 72 6e 3b 0a 0a 63 6f 6e 73 74 20 61 5f 6e 75 6d 62 65 72 3a 20 69 33 32 debug.warn;..const.a_number:.i32
25900 20 3d 20 31 32 33 34 3b 0a 63 6f 6e 73 74 20 61 5f 73 74 72 69 6e 67 20 3d 20 26 71 75 6f 74 3b .=.1234;.const.a_string.=.&quot;
25920 66 6f 6f 62 61 72 26 71 75 6f 74 3b 3b 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 70 72 69 6e 74 66 foobar&quot;;..test.&quot;printf
25940 20 74 6f 6f 20 6d 61 6e 79 20 61 72 67 75 6d 65 6e 74 73 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 .too.many.arguments&quot;.{.....
25960 77 61 72 6e 28 26 71 75 6f 74 3b 68 65 72 65 20 69 73 20 61 20 73 74 72 69 6e 67 3a 20 27 7b 7d warn(&quot;here.is.a.string:.'{}
25980 27 20 68 65 72 65 20 69 73 20 61 20 6e 75 6d 62 65 72 3a 20 7b 7d 5c 6e 26 71 75 6f 74 3b 2c 0a '.here.is.a.number:.{}\n&quot;,.
259a0 20 20 20 20 20 20 20 20 61 5f 73 74 72 69 6e 67 2c 20 61 5f 6e 75 6d 62 65 72 2c 20 61 5f 6e 75 ........a_string,.a_number,.a_nu
259c0 6d 62 65 72 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 mber);.}</code></pre><pre><code.
259e0 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 class="shell">$.zig.test.test.zi
25a00 67 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f g.<span.class="t0_1">/home/andy/
25a20 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 66 6d 74 2f 69 6e dev/zig/build/lib/zig/std/fmt/in
25a40 64 65 78 2e 7a 69 67 3a 31 38 33 3a 31 33 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 dex.zig:183:13:.</span><span.cla
25a60 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c ss="t31_1">error:</span><span.cl
25a80 61 73 73 3d 22 74 30 5f 31 22 3e 20 55 6e 75 73 65 64 20 61 72 67 75 6d 65 6e 74 73 3c 2f 73 70 ass="t0_1">.Unused.arguments</sp
25aa0 61 6e 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 40 63 6f 6d 70 69 6c 65 45 72 72 6f 72 28 26 71 an>.............@compileError(&q
25ac0 75 6f 74 3b 55 6e 75 73 65 64 20 61 72 67 75 6d 65 6e 74 73 26 71 75 6f 74 3b 29 3b 0a 20 20 20 uot;Unused.arguments&quot;);....
25ae0 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f .........<span.class="t32_1">^</
25b00 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 span>.<span.class="t0_1">/home/a
25b20 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 69 6f ndy/dev/zig/build/lib/zig/std/io
25b40 2e 7a 69 67 3a 32 33 36 3a 33 34 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d .zig:236:34:.</span><span.class=
25b60 22 74 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d "t36_1">note:</span><span.class=
25b80 22 74 30 5f 31 22 3e 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 3c 2f 73 70 61 6e 3e 0a "t0_1">.called.from.here</span>.
25ba0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 74 64 2e 66 6d 74 2e 66 6f 72 6d 61 ............return.std.fmt.forma
25bc0 74 28 73 65 6c 66 2c 20 45 72 72 6f 72 2c 20 73 65 6c 66 2e 77 72 69 74 65 46 6e 2c 20 66 6f 72 t(self,.Error,.self.writeFn,.for
25be0 6d 61 74 2c 20 61 72 67 73 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mat,.args);.....................
25c00 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 .............<span.class="t32_1"
25c20 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f >^</span>.<span.class="t0_1">/ho
25c40 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 me/andy/dev/zig/build/lib/zig/st
25c60 64 2f 64 65 62 75 67 2f 69 6e 64 65 78 2e 7a 69 67 3a 32 32 3a 31 37 3a 20 3c 2f 73 70 61 6e 3e d/debug/index.zig:22:17:.</span>
25c80 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 6e 3e <span.class="t36_1">note:</span>
25ca0 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 <span.class="t0_1">.called.from.
25cc0 68 65 72 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 73 74 64 65 72 72 2e 70 72 69 6e 74 28 66 6d 74 here</span>.....stderr.print(fmt
25ce0 2c 20 61 72 67 73 29 20 63 61 74 63 68 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 20 20 20 20 20 20 ,.args).catch.return;...........
25d00 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 ......<span.class="t32_1">^</spa
25d20 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 n>.<span.class="t0_1">/home/andy
25d40 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 37 3a 39 /dev/zig/docgen_tmp/test.zig:7:9
25d60 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 :.</span><span.class="t36_1">not
25d80 65 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 6c e:</span><span.class="t0_1">.cal
25da0 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 77 61 72 6e 28 26 71 led.from.here</span>.....warn(&q
25dc0 75 6f 74 3b 68 65 72 65 20 69 73 20 61 20 73 74 72 69 6e 67 3a 20 27 7b 7d 27 20 68 65 72 65 20 uot;here.is.a.string:.'{}'.here.
25de0 69 73 20 61 20 6e 75 6d 62 65 72 3a 20 7b 7d 5c 6e 26 71 75 6f 74 3b 2c 0a 20 20 20 20 20 20 20 is.a.number:.{}\n&quot;,........
25e00 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f .<span.class="t32_1">^</span>.</
25e20 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 5a 69 67 code></pre>........<p>.......Zig
25e40 20 67 69 76 65 73 20 70 72 6f 67 72 61 6d 6d 65 72 73 20 74 68 65 20 74 6f 6f 6c 73 20 6e 65 65 .gives.programmers.the.tools.nee
25e60 64 65 64 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65 6d 73 65 6c 76 65 73 20 61 67 61 69 6e 73 ded.to.protect.themselves.agains
25e80 74 20 74 68 65 69 72 20 6f 77 6e 20 6d 69 73 74 61 6b 65 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e t.their.own.mistakes........</p>
25ea0 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 5a 69 67 20 64 6f 65 73 6e 27 74 20 63 61 72 .......<p>.......Zig.doesn't.car
25ec0 65 20 77 68 65 74 68 65 72 20 74 68 65 20 66 6f 72 6d 61 74 20 61 72 67 75 6d 65 6e 74 20 69 73 e.whether.the.format.argument.is
25ee0 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 2c 0a 20 20 20 20 20 20 6f 6e 6c 79 20 74 68 .a.string.literal,.......only.th
25f00 61 74 20 69 74 20 69 73 20 61 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6b 6e 6f 77 6e 20 76 61 at.it.is.a.compile-time.known.va
25f20 6c 75 65 20 74 68 61 74 20 69 73 20 69 6d 70 6c 69 63 69 74 6c 79 20 63 61 73 74 61 62 6c 65 20 lue.that.is.implicitly.castable.
25f40 74 6f 20 61 20 3c 63 6f 64 65 3e 5b 5d 63 6f 6e 73 74 20 75 38 3c 2f 63 6f 64 65 3e 3a 0a 20 20 to.a.<code>[]const.u8</code>:...
25f60 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 70 ....</p>.......<p.class="file">p
25f80 72 69 6e 74 66 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a rintf.zig</p><pre><code.class="z
25fa0 69 67 22 3e 63 6f 6e 73 74 20 77 61 72 6e 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 ig">const.warn.=.@import(&quot;s
25fc0 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 77 61 72 6e 3b 0a 0a 63 6f 6e 73 74 20 61 5f 6e td&quot;).debug.warn;..const.a_n
25fe0 75 6d 62 65 72 3a 20 69 33 32 20 3d 20 31 32 33 34 3b 0a 63 6f 6e 73 74 20 61 5f 73 74 72 69 6e umber:.i32.=.1234;.const.a_strin
26000 67 20 3d 20 26 71 75 6f 74 3b 66 6f 6f 62 61 72 26 71 75 6f 74 3b 3b 0a 63 6f 6e 73 74 20 66 6d g.=.&quot;foobar&quot;;.const.fm
26020 74 20 3d 20 26 71 75 6f 74 3b 68 65 72 65 20 69 73 20 61 20 73 74 72 69 6e 67 3a 20 27 7b 7d 27 t.=.&quot;here.is.a.string:.'{}'
26040 20 68 65 72 65 20 69 73 20 61 20 6e 75 6d 62 65 72 3a 20 7b 7d 5c 6e 26 71 75 6f 74 3b 3b 0a 0a .here.is.a.number:.{}\n&quot;;..
26060 70 75 62 20 66 6e 20 6d 61 69 6e 28 29 20 76 6f 69 64 20 7b 0a 20 20 20 20 77 61 72 6e 28 66 6d pub.fn.main().void.{.....warn(fm
26080 74 2c 20 61 5f 73 74 72 69 6e 67 2c 20 61 5f 6e 75 6d 62 65 72 29 3b 0a 7d 3c 2f 63 6f 64 65 3e t,.a_string,.a_number);.}</code>
260a0 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 </pre><pre><code.class="shell">$
260c0 20 7a 69 67 20 62 75 69 6c 64 2d 65 78 65 20 70 72 69 6e 74 66 2e 7a 69 67 0a 24 20 2e 2f 70 72 .zig.build-exe.printf.zig.$../pr
260e0 69 6e 74 66 0a 68 65 72 65 20 69 73 20 61 20 73 74 72 69 6e 67 3a 20 27 66 6f 6f 62 61 72 27 20 intf.here.is.a.string:.'foobar'.
26100 68 65 72 65 20 69 73 20 61 20 6e 75 6d 62 65 72 3a 20 31 32 33 34 0a 3c 2f 63 6f 64 65 3e 3c 2f here.is.a.number:.1234.</code></
26120 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 77 6f 72 6b 73 pre>........<p>.......This.works
26140 20 66 69 6e 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 .fine........</p>.......<p>.....
26160 20 20 5a 69 67 20 64 6f 65 73 20 6e 6f 74 20 73 70 65 63 69 61 6c 20 63 61 73 65 20 73 74 72 69 ..Zig.does.not.special.case.stri
26180 6e 67 20 66 6f 72 6d 61 74 74 69 6e 67 20 69 6e 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 20 61 6e ng.formatting.in.the.compiler.an
261a0 64 20 69 6e 73 74 65 61 64 20 65 78 70 6f 73 65 73 20 65 6e 6f 75 67 68 20 70 6f 77 65 72 20 74 d.instead.exposes.enough.power.t
261c0 6f 20 61 63 63 6f 6d 70 6c 69 73 68 20 74 68 69 73 0a 20 20 20 20 20 20 74 61 73 6b 20 69 6e 20 o.accomplish.this.......task.in.
261e0 75 73 65 72 6c 61 6e 64 2e 20 49 74 20 64 6f 65 73 20 73 6f 20 77 69 74 68 6f 75 74 20 69 6e 74 userland..It.does.so.without.int
26200 72 6f 64 75 63 69 6e 67 20 61 6e 6f 74 68 65 72 20 6c 61 6e 67 75 61 67 65 20 6f 6e 20 74 6f 70 roducing.another.language.on.top
26220 20 6f 66 20 5a 69 67 2c 20 73 75 63 68 20 61 73 0a 20 20 20 20 20 20 61 20 6d 61 63 72 6f 20 6c .of.Zig,.such.as.......a.macro.l
26240 61 6e 67 75 61 67 65 20 6f 72 20 61 20 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6c 61 6e 67 75 61 anguage.or.a.preprocessor.langua
26260 67 65 2e 20 49 74 27 73 20 5a 69 67 20 61 6c 6c 20 74 68 65 20 77 61 79 20 64 6f 77 6e 2e 0a 20 ge..It's.Zig.all.the.way.down...
26280 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 73 75 67 67 65 73 74 .....</p>.......<p>TODO:.suggest
262a0 69 6f 6e 20 74 6f 20 6e 6f 74 20 75 73 65 20 69 6e 6c 69 6e 65 20 75 6e 6c 65 73 73 20 6e 65 63 ion.to.not.use.inline.unless.nec
262c0 65 73 73 61 72 79 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c essary</p>.....................<
262e0 68 31 20 69 64 3d 22 69 6e 6c 69 6e 65 22 3e 69 6e 6c 69 6e 65 3c 2f 68 31 3e 0a 0a 20 20 20 20 h1.id="inline">inline</h1>......
26300 20 20 3c 70 3e 54 4f 44 4f 3a 20 69 6e 6c 69 6e 65 20 77 68 69 6c 65 3c 2f 70 3e 0a 20 20 20 20 ..<p>TODO:.inline.while</p>.....
26320 20 20 3c 70 3e 54 4f 44 4f 3a 20 69 6e 6c 69 6e 65 20 66 6f 72 3c 2f 70 3e 0a 20 20 20 20 20 20 ..<p>TODO:.inline.for</p>.......
26340 3c 70 3e 54 4f 44 4f 3a 20 73 75 67 67 65 73 74 69 6f 6e 20 74 6f 20 6e 6f 74 20 75 73 65 20 69 <p>TODO:.suggestion.to.not.use.i
26360 6e 6c 69 6e 65 20 75 6e 6c 65 73 73 20 6e 65 63 65 73 73 61 72 79 3c 2f 70 3e 0a 20 20 20 20 20 nline.unless.necessary</p>......
26380 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 41 73 73 65 6d 62 6c 79 22 3e 41 73 73 65 6d 62 ........<h1.id="Assembly">Assemb
263a0 6c 79 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 61 6d 70 6c 65 20 ly</h1>........<p>TODO:.example.
263c0 6f 66 20 69 6e 6c 69 6e 65 20 61 73 73 65 6d 62 6c 79 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e of.inline.assembly</p>.......<p>
263e0 54 4f 44 4f 3a 20 65 78 61 6d 70 6c 65 20 6f 66 20 6d 6f 64 75 6c 65 20 6c 65 76 65 6c 20 61 73 TODO:.example.of.module.level.as
26400 73 65 6d 62 6c 79 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 61 6d 70 6c sembly</p>.......<p>TODO:.exampl
26420 65 20 6f 66 20 75 73 69 6e 67 20 69 6e 6c 69 6e 65 20 61 73 73 65 6d 62 6c 79 20 72 65 74 75 72 e.of.using.inline.assembly.retur
26440 6e 20 76 61 6c 75 65 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 61 6d 70 n.value</p>.......<p>TODO:.examp
26460 6c 65 20 6f 66 20 75 73 69 6e 67 20 69 6e 6c 69 6e 65 20 61 73 73 65 6d 62 6c 79 20 61 73 73 69 le.of.using.inline.assembly.assi
26480 67 6e 69 6e 67 20 76 61 6c 75 65 73 20 74 6f 20 76 61 72 69 61 62 6c 65 73 3c 2f 70 3e 0a 20 20 gning.values.to.variables</p>...
264a0 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 41 74 6f 6d 69 63 73 22 3e 41 74 6f 6d ...........<h1.id="Atomics">Atom
264c0 69 63 73 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 40 66 65 6e 63 65 28 ics</h1>........<p>TODO:.@fence(
264e0 29 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 40 61 74 6f 6d 69 63 20 72 6d 77 )</p>.......<p>TODO:.@atomic.rmw
26500 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 62 75 69 6c 74 69 6e 20 61 74 6f 6d </p>.......<p>TODO:.builtin.atom
26520 69 63 20 6d 65 6d 6f 72 79 20 6f 72 64 65 72 69 6e 67 20 65 6e 75 6d 3c 2f 70 3e 0a 20 20 20 20 ic.memory.ordering.enum</p>.....
26540 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 42 75 69 6c 74 69 6e 2d 46 75 6e 63 74 69 6f .........<h1.id="Builtin-Functio
26560 6e 73 22 3e 42 75 69 6c 74 69 6e 20 46 75 6e 63 74 69 6f 6e 73 3c 2f 68 31 3e 0a 0a 20 20 20 20 ns">Builtin.Functions</h1>......
26580 20 20 3c 70 3e 0a 20 20 20 20 20 20 42 75 69 6c 74 69 6e 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 ..<p>.......Builtin.functions.ar
265a0 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 20 61 6e 64 20 61 e.provided.by.the.compiler.and.a
265c0 72 65 20 70 72 65 66 69 78 65 64 20 77 69 74 68 20 3c 63 6f 64 65 3e 40 3c 2f 63 6f 64 65 3e 2e re.prefixed.with.<code>@</code>.
265e0 0a 20 20 20 20 20 20 54 68 65 20 3c 63 6f 64 65 3e 63 6f 6d 70 74 69 6d 65 3c 2f 63 6f 64 65 3e .......The.<code>comptime</code>
26600 20 6b 65 79 77 6f 72 64 20 6f 6e 20 61 20 70 61 72 61 6d 65 74 65 72 20 6d 65 61 6e 73 20 74 68 .keyword.on.a.parameter.means.th
26620 61 74 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6b 6e 6f 77 6e 0a 20 at.the.parameter.must.be.known..
26640 20 20 20 20 20 61 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e .....at.compile.time........</p>
26660 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 61 64 64 57 69 74 68 4f 76 65 72 66 6c 6f 77 22 3e .......<h2.id="addWithOverflow">
26680 40 61 64 64 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 @addWithOverflow</h2>........<pr
266a0 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 61 64 64 57 69 74 68 4f 76 65 72 e><code.class="zig">@addWithOver
266c0 66 6c 6f 77 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 2c 20 61 3a 20 54 2c 20 62 3a 20 flow(comptime.T:.type,.a:.T,.b:.
266e0 54 2c 20 72 65 73 75 6c 74 3a 20 26 61 6d 70 3b 54 29 20 2d 26 67 74 3b 20 62 6f 6f 6c 3c 2f 63 T,.result:.&amp;T).-&gt;.bool</c
26700 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 50 65 72 66 6f ode></pre>.......<p>.......Perfo
26720 72 6d 73 20 3c 63 6f 64 65 3e 2a 72 65 73 75 6c 74 20 3d 20 61 20 2b 20 62 3c 2f 63 6f 64 65 3e rms.<code>*result.=.a.+.b</code>
26740 2e 20 49 66 20 6f 76 65 72 66 6c 6f 77 20 6f 72 20 75 6e 64 65 72 66 6c 6f 77 20 6f 63 63 75 72 ..If.overflow.or.underflow.occur
26760 73 2c 0a 20 20 20 20 20 20 73 74 6f 72 65 73 20 74 68 65 20 6f 76 65 72 66 6c 6f 77 65 64 20 62 s,.......stores.the.overflowed.b
26780 69 74 73 20 69 6e 20 3c 63 6f 64 65 3e 72 65 73 75 6c 74 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 72 its.in.<code>result</code>.and.r
267a0 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 eturns.<code>true</code>........
267c0 49 66 20 6e 6f 20 6f 76 65 72 66 6c 6f 77 20 6f 72 20 75 6e 64 65 72 66 6c 6f 77 20 6f 63 63 75 If.no.overflow.or.underflow.occu
267e0 72 73 2c 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 0a rs,.returns.<code>false</code>..
26800 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 ......</p>..............<h2.id="
26820 41 72 67 54 79 70 65 22 3e 40 41 72 67 54 79 70 65 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 ArgType">@ArgType</h2>........<p
26840 3e 54 4f 44 4f 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 61 >TODO</p>..............<h2.id="a
26860 74 6f 6d 69 63 52 6d 77 22 3e 40 61 74 6f 6d 69 63 52 6d 77 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 tomicRmw">@atomicRmw</h2>.......
26880 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 61 74 6f 6d 69 63 52 .<pre><code.class="zig">@atomicR
268a0 6d 77 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 2c 20 70 74 72 3a 20 26 61 6d 70 3b 54 mw(comptime.T:.type,.ptr:.&amp;T
268c0 2c 20 63 6f 6d 70 74 69 6d 65 20 6f 70 3a 20 62 75 69 6c 74 69 6e 2e 41 74 6f 6d 69 63 52 6d 77 ,.comptime.op:.builtin.AtomicRmw
268e0 4f 70 2c 20 6f 70 65 72 61 6e 64 3a 20 54 2c 20 63 6f 6d 70 74 69 6d 65 20 6f 72 64 65 72 69 6e Op,.operand:.T,.comptime.orderin
26900 67 3a 20 62 75 69 6c 74 69 6e 2e 41 74 6f 6d 69 63 4f 72 64 65 72 29 20 2d 26 67 74 3b 20 54 3c g:.builtin.AtomicOrder).-&gt;.T<
26920 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 /code></pre>.......<p>.......Thi
26940 73 20 62 75 69 6c 74 69 6e 20 66 75 6e 63 74 69 6f 6e 20 61 74 6f 6d 69 63 61 6c 6c 79 20 6d 6f s.builtin.function.atomically.mo
26960 64 69 66 69 65 73 20 6d 65 6d 6f 72 79 20 61 6e 64 20 74 68 65 6e 20 72 65 74 75 72 6e 73 20 74 difies.memory.and.then.returns.t
26980 68 65 20 70 72 65 76 69 6f 75 73 20 76 61 6c 75 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 he.previous.value........</p>...
269a0 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 54 3c 2f 63 6f 64 65 3e 20 6d 75 73 ....<p>.......<code>T</code>.mus
269c0 74 20 62 65 20 61 20 70 6f 69 6e 74 65 72 20 74 79 70 65 2c 20 61 20 3c 63 6f 64 65 3e 62 6f 6f t.be.a.pointer.type,.a.<code>boo
269e0 6c 3c 2f 63 6f 64 65 3e 2c 0a 20 20 20 20 20 20 6f 72 20 61 6e 20 69 6e 74 65 67 65 72 20 77 68 l</code>,.......or.an.integer.wh
26a00 6f 73 65 20 62 69 74 20 63 6f 75 6e 74 20 6d 65 65 74 73 20 74 68 65 73 65 20 72 65 71 75 69 72 ose.bit.count.meets.these.requir
26a20 65 6d 65 6e 74 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 ements:.......</p>.......<ul>...
26a40 20 20 20 20 20 20 20 20 3c 6c 69 3e 41 74 20 6c 65 61 73 74 20 38 3c 2f 6c 69 3e 0a 20 20 20 20 ........<li>At.least.8</li>.....
26a60 20 20 20 20 20 20 3c 6c 69 3e 41 74 20 6d 6f 73 74 20 74 68 65 20 73 61 6d 65 20 61 73 20 75 73 ......<li>At.most.the.same.as.us
26a80 69 7a 65 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 50 6f 77 65 72 20 6f 66 20 ize</li>...........<li>Power.of.
26aa0 32 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 2</li>.......</ul>.......<p>....
26ac0 20 20 20 54 4f 44 4f 20 72 69 67 68 74 20 6e 6f 77 20 62 6f 6f 6c 20 69 73 20 6e 6f 74 20 61 63 ...TODO.right.now.bool.is.not.ac
26ae0 63 65 70 74 65 64 2e 20 41 6c 73 6f 20 49 20 74 68 69 6e 6b 20 77 65 20 63 6f 75 6c 64 20 6d 61 cepted..Also.I.think.we.could.ma
26b00 6b 65 20 6e 6f 6e 20 70 6f 77 65 72 73 20 6f 66 20 32 20 77 6f 72 6b 20 66 69 6e 65 2c 20 6d 61 ke.non.powers.of.2.work.fine,.ma
26b20 79 62 65 0a 20 20 20 20 20 20 77 65 20 63 61 6e 20 72 65 6d 6f 76 65 20 74 68 69 73 20 72 65 73 ybe.......we.can.remove.this.res
26b40 74 72 69 63 74 69 6f 6e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 triction.......</p>.............
26b60 20 3c 68 32 20 69 64 3d 22 62 69 74 43 61 73 74 22 3e 40 62 69 74 43 61 73 74 3c 2f 68 32 3e 0a .<h2.id="bitCast">@bitCast</h2>.
26b80 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 62 .......<pre><code.class="zig">@b
26ba0 69 74 43 61 73 74 28 63 6f 6d 70 74 69 6d 65 20 44 65 73 74 54 79 70 65 3a 20 74 79 70 65 2c 20 itCast(comptime.DestType:.type,.
26bc0 76 61 6c 75 65 3a 20 76 61 72 29 20 2d 26 67 74 3b 20 44 65 73 74 54 79 70 65 3c 2f 63 6f 64 65 value:.var).-&gt;.DestType</code
26be0 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 43 6f 6e 76 65 72 74 73 ></pre>.......<p>.......Converts
26c00 20 61 20 76 61 6c 75 65 20 6f 66 20 6f 6e 65 20 74 79 70 65 20 74 6f 20 61 6e 6f 74 68 65 72 20 .a.value.of.one.type.to.another.
26c20 74 79 70 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 type........</p>.......<p>......
26c40 20 41 73 73 65 72 74 73 20 74 68 61 74 20 3c 63 6f 64 65 3e 40 73 69 7a 65 4f 66 28 40 74 79 70 .Asserts.that.<code>@sizeOf(@typ
26c60 65 4f 66 28 76 61 6c 75 65 29 29 20 3d 3d 20 40 73 69 7a 65 4f 66 28 44 65 73 74 54 79 70 65 29 eOf(value)).==.@sizeOf(DestType)
26c80 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 </code>........</p>.......<p>...
26ca0 20 20 20 20 41 73 73 65 72 74 73 20 74 68 61 74 20 3c 63 6f 64 65 3e 40 74 79 70 65 49 64 28 44 ....Asserts.that.<code>@typeId(D
26cc0 65 73 74 54 79 70 65 29 20 21 3d 20 40 69 6d 70 6f 72 74 28 22 62 75 69 6c 74 69 6e 22 29 2e 54 estType).!=.@import("builtin").T
26ce0 79 70 65 49 64 2e 50 6f 69 6e 74 65 72 3c 2f 63 6f 64 65 3e 2e 20 55 73 65 20 3c 63 6f 64 65 3e ypeId.Pointer</code>..Use.<code>
26d00 40 70 74 72 43 61 73 74 3c 2f 63 6f 64 65 3e 20 6f 72 20 3c 63 6f 64 65 3e 40 69 6e 74 54 6f 50 @ptrCast</code>.or.<code>@intToP
26d20 74 72 3c 2f 63 6f 64 65 3e 20 69 66 20 79 6f 75 20 6e 65 65 64 20 74 68 69 73 2e 0a 20 20 20 20 tr</code>.if.you.need.this......
26d40 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 43 61 6e 20 62 65 20 75 73 ..</p>.......<p>.......Can.be.us
26d60 65 64 20 66 6f 72 20 74 68 65 73 65 20 74 68 69 6e 67 73 20 66 6f 72 20 65 78 61 6d 70 6c 65 3a ed.for.these.things.for.example:
26d80 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c .......</p>.......<ul>.........<
26da0 6c 69 3e 43 6f 6e 76 65 72 74 20 3c 63 6f 64 65 3e 66 33 32 3c 2f 63 6f 64 65 3e 20 74 6f 20 3c li>Convert.<code>f32</code>.to.<
26dc0 63 6f 64 65 3e 75 33 32 3c 2f 63 6f 64 65 3e 20 62 69 74 73 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 code>u32</code>.bits</li>.......
26de0 20 20 3c 6c 69 3e 43 6f 6e 76 65 72 74 20 3c 63 6f 64 65 3e 69 33 32 3c 2f 63 6f 64 65 3e 20 74 ..<li>Convert.<code>i32</code>.t
26e00 6f 20 3c 63 6f 64 65 3e 75 33 32 3c 2f 63 6f 64 65 3e 20 70 72 65 73 65 72 76 69 6e 67 20 74 77 o.<code>u32</code>.preserving.tw
26e20 6f 73 20 63 6f 6d 70 6c 65 6d 65 6e 74 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 os.complement</li>.......</ul>..
26e40 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 57 6f 72 6b 73 20 61 74 20 63 6f 6d 70 69 6c 65 2d .....<p>.......Works.at.compile-
26e60 74 69 6d 65 20 69 66 20 3c 63 6f 64 65 3e 76 61 6c 75 65 3c 2f 63 6f 64 65 3e 20 69 73 20 6b 6e time.if.<code>value</code>.is.kn
26e80 6f 77 6e 20 61 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 20 49 74 27 73 20 61 20 63 6f 6d 70 own.at.compile.time..It's.a.comp
26ea0 69 6c 65 20 65 72 72 6f 72 20 74 6f 20 62 69 74 63 61 73 74 20 61 20 73 74 72 75 63 74 20 74 6f ile.error.to.bitcast.a.struct.to
26ec0 20 61 20 73 63 61 6c 61 72 20 74 79 70 65 20 6f 66 20 74 68 65 20 73 61 6d 65 20 73 69 7a 65 20 .a.scalar.type.of.the.same.size.
26ee0 73 69 6e 63 65 20 73 74 72 75 63 74 73 20 68 61 76 65 20 75 6e 64 65 66 69 6e 65 64 20 6c 61 79 since.structs.have.undefined.lay
26f00 6f 75 74 2e 20 48 6f 77 65 76 65 72 20 69 66 20 74 68 65 20 73 74 72 75 63 74 20 69 73 20 70 61 out..However.if.the.struct.is.pa
26f20 63 6b 65 64 20 74 68 65 6e 20 69 74 20 77 6f 72 6b 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 cked.then.it.works........</p>..
26f40 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 62 72 65 61 6b 70 6f 69 6e 74 22 3e ............<h2.id="breakpoint">
26f60 40 62 72 65 61 6b 70 6f 69 6e 74 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f @breakpoint</h2>........<pre><co
26f80 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 62 72 65 61 6b 70 6f 69 6e 74 28 29 3c 2f 63 6f de.class="zig">@breakpoint()</co
26fa0 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 de></pre>.......<p>.......This.f
26fc0 75 6e 63 74 69 6f 6e 20 69 6e 73 65 72 74 73 20 61 20 70 6c 61 74 66 6f 72 6d 2d 73 70 65 63 69 unction.inserts.a.platform-speci
26fe0 66 69 63 20 64 65 62 75 67 20 74 72 61 70 20 69 6e 73 74 72 75 63 74 69 6f 6e 20 77 68 69 63 68 fic.debug.trap.instruction.which
27000 20 63 61 75 73 65 73 0a 20 20 20 20 20 20 64 65 62 75 67 67 65 72 73 20 74 6f 20 62 72 65 61 6b .causes.......debuggers.to.break
27020 20 74 68 65 72 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 .there........</p>.......<p>....
27040 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 20 76 61 6c 69 64 20 77 ...This.function.is.only.valid.w
27060 69 74 68 69 6e 20 66 75 6e 63 74 69 6f 6e 20 73 63 6f 70 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e ithin.function.scope........</p>
27080 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 61 6c 69 67 6e 43 61 73 74 ...............<h2.id="alignCast
270a0 22 3e 40 61 6c 69 67 6e 43 61 73 74 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 ">@alignCast</h2>........<pre><c
270c0 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 61 6c 69 67 6e 43 61 73 74 28 63 6f 6d 70 74 ode.class="zig">@alignCast(compt
270e0 69 6d 65 20 61 6c 69 67 6e 6d 65 6e 74 3a 20 75 32 39 2c 20 70 74 72 3a 20 76 61 72 29 20 2d 26 ime.alignment:.u29,.ptr:.var).-&
27100 67 74 3b 20 76 61 72 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 gt;.var</code></pre>.......<p>..
27120 20 20 20 20 20 3c 63 6f 64 65 3e 70 74 72 3c 2f 63 6f 64 65 3e 20 63 61 6e 20 62 65 20 3c 63 6f .....<code>ptr</code>.can.be.<co
27140 64 65 3e 26 61 6d 70 3b 54 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 3e 66 6e 28 29 3c 2f 63 6f de>&amp;T</code>,.<code>fn()</co
27160 64 65 3e 2c 20 3c 63 6f 64 65 3e 3f 26 61 6d 70 3b 54 3c 2f 63 6f 64 65 3e 2c 0a 20 20 20 20 20 de>,.<code>?&amp;T</code>,......
27180 20 3c 63 6f 64 65 3e 3f 66 6e 28 29 3c 2f 63 6f 64 65 3e 2c 20 6f 72 20 3c 63 6f 64 65 3e 5b 5d .<code>?fn()</code>,.or.<code>[]
271a0 54 3c 2f 63 6f 64 65 3e 2e 20 49 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 73 61 6d 65 20 74 79 T</code>..It.returns.the.same.ty
271c0 70 65 20 61 73 20 3c 63 6f 64 65 3e 70 74 72 3c 2f 63 6f 64 65 3e 0a 20 20 20 20 20 20 65 78 63 pe.as.<code>ptr</code>.......exc
271e0 65 70 74 20 77 69 74 68 20 74 68 65 20 61 6c 69 67 6e 6d 65 6e 74 20 61 64 6a 75 73 74 65 64 20 ept.with.the.alignment.adjusted.
27200 74 6f 20 74 68 65 20 6e 65 77 20 76 61 6c 75 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 to.the.new.value........</p>....
27220 20 20 20 3c 70 3e 41 20 3c 61 20 68 72 65 66 3d 22 23 49 6e 63 6f 72 72 65 63 74 2d 50 6f 69 6e ...<p>A.<a.href="#Incorrect-Poin
27240 74 65 72 2d 41 6c 69 67 6e 6d 65 6e 74 22 3e 70 6f 69 6e 74 65 72 20 61 6c 69 67 6e 6d 65 6e 74 ter-Alignment">pointer.alignment
27260 20 73 61 66 65 74 79 20 63 68 65 63 6b 3c 2f 61 3e 20 69 73 20 61 64 64 65 64 0a 20 20 20 20 20 .safety.check</a>.is.added......
27280 20 74 6f 20 74 68 65 20 67 65 6e 65 72 61 74 65 64 20 63 6f 64 65 20 74 6f 20 6d 61 6b 65 20 73 .to.the.generated.code.to.make.s
272a0 75 72 65 20 74 68 65 20 70 6f 69 6e 74 65 72 20 69 73 20 61 6c 69 67 6e 65 64 20 61 73 20 70 72 ure.the.pointer.is.aligned.as.pr
272c0 6f 6d 69 73 65 64 2e 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 omised.</p>...............<h2.id
272e0 3d 22 61 6c 69 67 6e 4f 66 22 3e 40 61 6c 69 67 6e 4f 66 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 ="alignOf">@alignOf</h2>........
27300 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 61 6c 69 67 6e 4f 66 28 <pre><code.class="zig">@alignOf(
27320 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 29 20 2d 26 67 74 3b 20 28 6e 75 6d 62 65 72 20 comptime.T:.type).-&gt;.(number.
27340 6c 69 74 65 72 61 6c 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a literal)</code></pre>.......<p>.
27360 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 ......This.function.returns.the.
27380 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 74 68 61 74 20 74 68 69 73 20 74 79 70 65 20 73 number.of.bytes.that.this.type.s
273a0 68 6f 75 6c 64 20 62 65 20 61 6c 69 67 6e 65 64 20 74 6f 0a 20 20 20 20 20 20 66 6f 72 20 74 68 hould.be.aligned.to.......for.th
273c0 65 20 63 75 72 72 65 6e 74 20 74 61 72 67 65 74 20 74 6f 20 6d 61 74 63 68 20 74 68 65 20 43 20 e.current.target.to.match.the.C.
273e0 41 42 49 2e 20 57 68 65 6e 20 74 68 65 20 63 68 69 6c 64 20 74 79 70 65 20 6f 66 20 61 20 70 6f ABI..When.the.child.type.of.a.po
27400 69 6e 74 65 72 20 68 61 73 0a 20 20 20 20 20 20 74 68 69 73 20 61 6c 69 67 6e 6d 65 6e 74 2c 20 inter.has.......this.alignment,.
27420 74 68 65 20 61 6c 69 67 6e 6d 65 6e 74 20 63 61 6e 20 62 65 20 6f 6d 69 74 74 65 64 20 66 72 6f the.alignment.can.be.omitted.fro
27440 6d 20 74 68 65 20 74 79 70 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 m.the.type........</p>.......<pr
27460 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 e><code.class="zig">const.assert
27480 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a .=.@import("std").debug.assert;.
274a0 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 26 61 6d 70 3b 75 33 32 20 3d comptime.{.....assert(&amp;u32.=
274c0 3d 20 26 61 6d 70 3b 61 6c 69 67 6e 28 40 61 6c 69 67 6e 4f 66 28 75 33 32 29 29 20 75 33 32 29 =.&amp;align(@alignOf(u32)).u32)
274e0 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 ;.}</code></pre>.......<p>......
27500 20 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 20 74 61 72 67 65 74 2d 73 70 65 63 69 66 69 63 .The.result.is.a.target-specific
27520 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 20 63 6f 6e 73 74 61 6e 74 2e 20 49 74 20 69 73 20 67 75 .compile.time.constant..It.is.gu
27540 61 72 61 6e 74 65 65 64 20 74 6f 20 62 65 0a 20 20 20 20 20 20 6c 65 73 73 20 74 68 61 6e 20 6f aranteed.to.be.......less.than.o
27560 72 20 65 71 75 61 6c 20 74 6f 20 3c 61 20 68 72 65 66 3d 22 23 73 69 7a 65 4f 66 22 3e 40 73 69 r.equal.to.<a.href="#sizeOf">@si
27580 7a 65 4f 66 28 54 29 3c 2f 61 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 zeOf(T)</a>........</p>.......<p
275a0 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 >See.also:</p><ul>.<li><a.href="
275c0 23 41 6c 69 67 6e 6d 65 6e 74 22 3e 41 6c 69 67 6e 6d 65 6e 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c #Alignment">Alignment</a></li>.<
275e0 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 63 44 65 66 69 /ul>...............<h2.id="cDefi
27600 6e 65 22 3e 40 63 44 65 66 69 6e 65 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 ne">@cDefine</h2>........<pre><c
27620 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 63 44 65 66 69 6e 65 28 63 6f 6d 70 74 69 6d ode.class="zig">@cDefine(comptim
27640 65 20 6e 61 6d 65 3a 20 5b 5d 75 38 2c 20 76 61 6c 75 65 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 e.name:.[]u8,.value)</code></pre
27660 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 >.......<p>.......This.function.
27680 63 61 6e 20 6f 6e 6c 79 20 6f 63 63 75 72 20 69 6e 73 69 64 65 20 3c 63 6f 64 65 3e 40 63 49 6d can.only.occur.inside.<code>@cIm
276a0 70 6f 72 74 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 port</code>........</p>.......<p
276c0 3e 0a 20 20 20 20 20 20 54 68 69 73 20 61 70 70 65 6e 64 73 20 3c 63 6f 64 65 3e 23 64 65 66 69 >.......This.appends.<code>#defi
276e0 6e 65 20 24 6e 61 6d 65 20 24 76 61 6c 75 65 3c 2f 63 6f 64 65 3e 20 74 6f 20 74 68 65 20 3c 63 ne.$name.$value</code>.to.the.<c
27700 6f 64 65 3e 40 63 49 6d 70 6f 72 74 3c 2f 63 6f 64 65 3e 0a 20 20 20 20 20 20 74 65 6d 70 6f 72 ode>@cImport</code>.......tempor
27720 61 72 79 20 62 75 66 66 65 72 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e ary.buffer........</p>.......<p>
27740 0a 20 20 20 20 20 20 54 6f 20 64 65 66 69 6e 65 20 77 69 74 68 6f 75 74 20 61 20 76 61 6c 75 65 .......To.define.without.a.value
27760 2c 20 6c 69 6b 65 20 74 68 69 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 ,.like.this:.......</p>.......<p
27780 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 63 22 3e 23 64 65 66 69 6e 65 20 5f 47 4e 55 5f re><code.class="c">#define._GNU_
277a0 53 4f 55 52 43 45 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 SOURCE</code></pre>.......<p>...
277c0 20 20 20 20 55 73 65 20 74 68 65 20 76 6f 69 64 20 76 61 6c 75 65 2c 20 6c 69 6b 65 20 74 68 69 ....Use.the.void.value,.like.thi
277e0 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 s:.......</p>.......<pre><code.c
27800 6c 61 73 73 3d 22 7a 69 67 22 3e 40 63 44 65 66 69 6e 65 28 22 5f 47 4e 55 5f 53 4f 55 52 43 45 lass="zig">@cDefine("_GNU_SOURCE
27820 22 2c 20 7b 7d 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 ",.{})</code></pre>.......<p>See
27840 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6d 70 .also:</p><ul>.<li><a.href="#Imp
27860 6f 72 74 2d 66 72 6f 6d 2d 43 2d 48 65 61 64 65 72 2d 46 69 6c 65 22 3e 49 6d 70 6f 72 74 20 66 ort-from-C-Header-File">Import.f
27880 72 6f 6d 20 43 20 48 65 61 64 65 72 20 46 69 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c rom.C.Header.File</a></li>.<li><
278a0 61 20 68 72 65 66 3d 22 23 63 49 6e 63 6c 75 64 65 22 3e 40 63 49 6e 63 6c 75 64 65 3c 2f 61 3e a.href="#cInclude">@cInclude</a>
278c0 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 49 6d 70 6f 72 74 22 3e 40 63 49 </li>.<li><a.href="#cImport">@cI
278e0 6d 70 6f 72 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 55 6e mport</a></li>.<li><a.href="#cUn
27900 64 65 66 22 3e 40 63 55 6e 64 65 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 def">@cUndef</a></li>.<li><a.hre
27920 66 3d 22 23 76 6f 69 64 22 3e 76 6f 69 64 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 f="#void">void</a></li>.</ul>...
27940 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 63 49 6d 70 6f 72 74 22 3e 40 63 49 ............<h2.id="cImport">@cI
27960 6d 70 6f 72 74 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 mport</h2>........<pre><code.cla
27980 73 73 3d 22 7a 69 67 22 3e 40 63 49 6d 70 6f 72 74 28 65 78 70 72 65 73 73 69 6f 6e 29 20 2d 26 ss="zig">@cImport(expression).-&
279a0 67 74 3b 20 28 6e 61 6d 65 73 70 61 63 65 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 gt;.(namespace)</code></pre>....
279c0 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 70 61 72 73 65 ...<p>.......This.function.parse
279e0 73 20 43 20 63 6f 64 65 20 61 6e 64 20 69 6d 70 6f 72 74 73 20 74 68 65 20 66 75 6e 63 74 69 6f s.C.code.and.imports.the.functio
27a00 6e 73 2c 20 74 79 70 65 73 2c 20 76 61 72 69 61 62 6c 65 73 2c 20 61 6e 64 0a 20 20 20 20 20 20 ns,.types,.variables,.and.......
27a20 63 6f 6d 70 61 74 69 62 6c 65 20 6d 61 63 72 6f 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 69 6e 74 compatible.macro.definitions.int
27a40 6f 20 74 68 65 20 72 65 73 75 6c 74 20 6e 61 6d 65 73 70 61 63 65 2e 0a 20 20 20 20 20 20 3c 2f o.the.result.namespace........</
27a60 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 65 78 70 72 65 73 73 p>.......<p>.......<code>express
27a80 69 6f 6e 3c 2f 63 6f 64 65 3e 20 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 74 20 63 6f 6d ion</code>.is.interpreted.at.com
27aa0 70 69 6c 65 20 74 69 6d 65 2e 20 54 68 65 20 62 75 69 6c 74 69 6e 20 66 75 6e 63 74 69 6f 6e 73 pile.time..The.builtin.functions
27ac0 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 40 63 49 6e 63 6c 75 64 65 3c 2f 63 6f 64 65 3e 2c 20 3c .......<code>@cInclude</code>,.<
27ae0 63 6f 64 65 3e 40 63 44 65 66 69 6e 65 3c 2f 63 6f 64 65 3e 2c 20 61 6e 64 20 3c 63 6f 64 65 3e code>@cDefine</code>,.and.<code>
27b00 40 63 55 6e 64 65 66 3c 2f 63 6f 64 65 3e 20 77 6f 72 6b 0a 20 20 20 20 20 20 77 69 74 68 69 6e @cUndef</code>.work.......within
27b20 20 74 68 69 73 20 65 78 70 72 65 73 73 69 6f 6e 2c 20 61 70 70 65 6e 64 69 6e 67 20 74 6f 20 61 .this.expression,.appending.to.a
27b40 20 74 65 6d 70 6f 72 61 72 79 20 62 75 66 66 65 72 20 77 68 69 63 68 20 69 73 20 74 68 65 6e 20 .temporary.buffer.which.is.then.
27b60 70 61 72 73 65 64 20 61 73 20 43 20 63 6f 64 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 parsed.as.C.code........</p>....
27b80 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 55 73 75 61 6c 6c 79 20 79 6f 75 20 73 68 6f 75 6c 64 20 ...<p>.......Usually.you.should.
27ba0 6f 6e 6c 79 20 68 61 76 65 20 6f 6e 65 20 3c 63 6f 64 65 3e 40 63 49 6d 70 6f 72 74 3c 2f 63 6f only.have.one.<code>@cImport</co
27bc0 64 65 3e 20 69 6e 20 79 6f 75 72 20 65 6e 74 69 72 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2c 20 de>.in.your.entire.application,.
27be0 62 65 63 61 75 73 65 20 69 74 20 73 61 76 65 73 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 0a 20 20 because.it.saves.the.compiler...
27c00 20 20 20 20 66 72 6f 6d 20 69 6e 76 6f 6b 69 6e 67 20 63 6c 61 6e 67 20 6d 75 6c 74 69 70 6c 65 ....from.invoking.clang.multiple
27c20 20 74 69 6d 65 73 2c 20 61 6e 64 20 70 72 65 76 65 6e 74 73 20 69 6e 6c 69 6e 65 20 66 75 6e 63 .times,.and.prevents.inline.func
27c40 74 69 6f 6e 73 20 66 72 6f 6d 20 62 65 69 6e 67 20 64 75 70 6c 69 63 61 74 65 64 2e 0a 20 20 20 tions.from.being.duplicated.....
27c60 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 52 65 61 73 6f 6e 73 20 ...</p>.......<p>.......Reasons.
27c80 66 6f 72 20 68 61 76 69 6e 67 20 6d 75 6c 74 69 70 6c 65 20 3c 63 6f 64 65 3e 40 63 49 6d 70 6f for.having.multiple.<code>@cImpo
27ca0 72 74 3c 2f 63 6f 64 65 3e 20 65 78 70 72 65 73 73 69 6f 6e 73 20 77 6f 75 6c 64 20 62 65 3a 0a rt</code>.expressions.would.be:.
27cc0 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c ......</p>.......<ul>.........<l
27ce0 69 3e 54 6f 20 61 76 6f 69 64 20 61 20 73 79 6d 62 6f 6c 20 63 6f 6c 6c 69 73 69 6f 6e 2c 20 66 i>To.avoid.a.symbol.collision,.f
27d00 6f 72 20 65 78 61 6d 70 6c 65 20 69 66 20 66 6f 6f 2e 68 20 61 6e 64 20 62 61 72 2e 68 20 62 6f or.example.if.foo.h.and.bar.h.bo
27d20 74 68 20 3c 63 6f 64 65 3e 23 64 65 66 69 6e 65 20 43 4f 4e 4e 45 43 54 49 4f 4e 5f 43 4f 55 4e th.<code>#define.CONNECTION_COUN
27d40 54 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 54 6f 20 61 6e 61 T</code></li>.........<li>To.ana
27d60 6c 79 7a 65 20 74 68 65 20 43 20 63 6f 64 65 20 77 69 74 68 20 64 69 66 66 65 72 65 6e 74 20 70 lyze.the.C.code.with.different.p
27d80 72 65 70 72 6f 63 65 73 73 6f 72 20 64 65 66 69 6e 65 73 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c reprocessor.defines</li>.......<
27da0 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a /ul>.......<p>See.also:</p><ul>.
27dc0 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 49 6d 70 6f 72 74 2d 66 72 6f 6d 2d 43 2d 48 65 61 64 <li><a.href="#Import-from-C-Head
27de0 65 72 2d 46 69 6c 65 22 3e 49 6d 70 6f 72 74 20 66 72 6f 6d 20 43 20 48 65 61 64 65 72 20 46 69 er-File">Import.from.C.Header.Fi
27e00 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 49 6e 63 6c 75 le</a></li>.<li><a.href="#cInclu
27e20 64 65 22 3e 40 63 49 6e 63 6c 75 64 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 de">@cInclude</a></li>.<li><a.hr
27e40 65 66 3d 22 23 63 44 65 66 69 6e 65 22 3e 40 63 44 65 66 69 6e 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a ef="#cDefine">@cDefine</a></li>.
27e60 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 55 6e 64 65 66 22 3e 40 63 55 6e 64 65 66 3c 2f 61 <li><a.href="#cUndef">@cUndef</a
27e80 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 ></li>.</ul>...............<h2.i
27ea0 64 3d 22 63 49 6e 63 6c 75 64 65 22 3e 40 63 49 6e 63 6c 75 64 65 3c 2f 68 32 3e 0a 0a 20 20 20 d="cInclude">@cInclude</h2>.....
27ec0 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 63 49 6e 63 6c ...<pre><code.class="zig">@cIncl
27ee0 75 64 65 28 63 6f 6d 70 74 69 6d 65 20 70 61 74 68 3a 20 5b 5d 75 38 29 3c 2f 63 6f 64 65 3e 3c ude(comptime.path:.[]u8)</code><
27f00 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 /pre>.......<p>.......This.funct
27f20 69 6f 6e 20 63 61 6e 20 6f 6e 6c 79 20 6f 63 63 75 72 20 69 6e 73 69 64 65 20 3c 63 6f 64 65 3e ion.can.only.occur.inside.<code>
27f40 40 63 49 6d 70 6f 72 74 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 @cImport</code>........</p>.....
27f60 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 61 70 70 65 6e 64 73 20 3c 63 6f 64 65 3e 23 ..<p>.......This.appends.<code>#
27f80 69 6e 63 6c 75 64 65 20 3c 24 70 61 74 68 3e 5c 6e 3c 2f 63 6f 64 65 3e 20 74 6f 20 74 68 65 20 include.<$path>\n</code>.to.the.
27fa0 3c 63 6f 64 65 3e 63 5f 69 6d 70 6f 72 74 3c 2f 63 6f 64 65 3e 0a 20 20 20 20 20 20 74 65 6d 70 <code>c_import</code>.......temp
27fc0 6f 72 61 72 79 20 62 75 66 66 65 72 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c orary.buffer........</p>.......<
27fe0 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d p>See.also:</p><ul>.<li><a.href=
28000 22 23 49 6d 70 6f 72 74 2d 66 72 6f 6d 2d 43 2d 48 65 61 64 65 72 2d 46 69 6c 65 22 3e 49 6d 70 "#Import-from-C-Header-File">Imp
28020 6f 72 74 20 66 72 6f 6d 20 43 20 48 65 61 64 65 72 20 46 69 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a ort.from.C.Header.File</a></li>.
28040 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 49 6d 70 6f 72 74 22 3e 40 63 49 6d 70 6f 72 74 3c <li><a.href="#cImport">@cImport<
28060 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 44 65 66 69 6e 65 22 3e /a></li>.<li><a.href="#cDefine">
28080 40 63 44 65 66 69 6e 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 @cDefine</a></li>.<li><a.href="#
280a0 63 55 6e 64 65 66 22 3e 40 63 55 6e 64 65 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a cUndef">@cUndef</a></li>.</ul>..
280c0 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 63 55 6e 64 65 66 22 3e 40 63 55 .............<h2.id="cUndef">@cU
280e0 6e 64 65 66 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 ndef</h2>........<pre><code.clas
28100 73 3d 22 7a 69 67 22 3e 40 63 55 6e 64 65 66 28 63 6f 6d 70 74 69 6d 65 20 6e 61 6d 65 3a 20 5b s="zig">@cUndef(comptime.name:.[
28120 5d 75 38 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 ]u8)</code></pre>.......<p>.....
28140 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 6f 6e 6c 79 20 6f 63 63 75 72 20 69 ..This.function.can.only.occur.i
28160 6e 73 69 64 65 20 3c 63 6f 64 65 3e 40 63 49 6d 70 6f 72 74 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 nside.<code>@cImport</code>.....
28180 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 61 70 70 ...</p>.......<p>.......This.app
281a0 65 6e 64 73 20 3c 63 6f 64 65 3e 23 75 6e 64 65 66 20 24 6e 61 6d 65 3c 2f 63 6f 64 65 3e 20 74 ends.<code>#undef.$name</code>.t
281c0 6f 20 74 68 65 20 3c 63 6f 64 65 3e 40 63 49 6d 70 6f 72 74 3c 2f 63 6f 64 65 3e 0a 20 20 20 20 o.the.<code>@cImport</code>.....
281e0 20 20 74 65 6d 70 6f 72 61 72 79 20 62 75 66 66 65 72 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 ..temporary.buffer........</p>..
28200 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 .....<p>See.also:</p><ul>.<li><a
28220 20 68 72 65 66 3d 22 23 49 6d 70 6f 72 74 2d 66 72 6f 6d 2d 43 2d 48 65 61 64 65 72 2d 46 69 6c .href="#Import-from-C-Header-Fil
28240 65 22 3e 49 6d 70 6f 72 74 20 66 72 6f 6d 20 43 20 48 65 61 64 65 72 20 46 69 6c 65 3c 2f 61 3e e">Import.from.C.Header.File</a>
28260 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 49 6d 70 6f 72 74 22 3e 40 63 49 </li>.<li><a.href="#cImport">@cI
28280 6d 70 6f 72 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 44 65 mport</a></li>.<li><a.href="#cDe
282a0 66 69 6e 65 22 3e 40 63 44 65 66 69 6e 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 fine">@cDefine</a></li>.<li><a.h
282c0 72 65 66 3d 22 23 63 49 6e 63 6c 75 64 65 22 3e 40 63 49 6e 63 6c 75 64 65 3c 2f 61 3e 3c 2f 6c ref="#cInclude">@cInclude</a></l
282e0 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 63 i>.</ul>...............<h2.id="c
28300 61 6e 49 6d 70 6c 69 63 69 74 43 61 73 74 22 3e 40 63 61 6e 49 6d 70 6c 69 63 69 74 43 61 73 74 anImplicitCast">@canImplicitCast
28320 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a </h2>........<pre><code.class="z
28340 69 67 22 3e 40 63 61 6e 49 6d 70 6c 69 63 69 74 43 61 73 74 28 63 6f 6d 70 74 69 6d 65 20 54 3a ig">@canImplicitCast(comptime.T:
28360 20 74 79 70 65 2c 20 76 61 6c 75 65 29 20 2d 26 67 74 3b 20 62 6f 6f 6c 3c 2f 63 6f 64 65 3e 3c .type,.value).-&gt;.bool</code><
28380 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 52 65 74 75 72 6e 73 20 77 68 /pre>.......<p>.......Returns.wh
283a0 65 74 68 65 72 20 61 20 76 61 6c 75 65 20 63 61 6e 20 62 65 20 69 6d 70 6c 69 63 69 74 6c 79 20 ether.a.value.can.be.implicitly.
283c0 63 61 73 74 65 64 20 74 6f 20 61 20 67 69 76 65 6e 20 74 79 70 65 2e 0a 20 20 20 20 20 20 3c 2f casted.to.a.given.type........</
283e0 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 63 6c 7a 22 3e 40 63 6c p>..............<h2.id="clz">@cl
28400 7a 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 z</h2>........<pre><code.class="
28420 7a 69 67 22 3e 40 63 6c 7a 28 78 3a 20 54 29 20 2d 26 67 74 3b 20 55 3c 2f 63 6f 64 65 3e 3c 2f zig">@clz(x:.T).-&gt;.U</code></
28440 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 pre>.......<p>.......This.functi
28460 6f 6e 20 63 6f 75 6e 74 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6c 65 61 64 69 6e 67 20 on.counts.the.number.of.leading.
28480 7a 65 72 6f 65 73 20 69 6e 20 3c 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 77 68 69 63 68 20 69 zeroes.in.<code>x</code>.which.i
284a0 73 20 61 6e 20 69 6e 74 65 67 65 72 0a 20 20 20 20 20 20 74 79 70 65 20 3c 63 6f 64 65 3e 54 3c s.an.integer.......type.<code>T<
284c0 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 /code>........</p>.......<p>....
284e0 20 20 20 54 68 65 20 72 65 74 75 72 6e 20 74 79 70 65 20 3c 63 6f 64 65 3e 55 3c 2f 63 6f 64 65 ...The.return.type.<code>U</code
28500 3e 20 69 73 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 20 77 69 74 68 20 74 68 >.is.an.unsigned.integer.with.th
28520 65 20 6d 69 6e 69 6d 75 6d 20 6e 75 6d 62 65 72 0a 20 20 20 20 20 20 6f 66 20 62 69 74 73 20 74 e.minimum.number.......of.bits.t
28540 68 61 74 20 63 61 6e 20 72 65 70 72 65 73 65 6e 74 20 74 68 65 20 76 61 6c 75 65 20 3c 63 6f 64 hat.can.represent.the.value.<cod
28560 65 3e 54 2e 62 69 74 5f 63 6f 75 6e 74 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e e>T.bit_count</code>........</p>
28580 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 66 20 3c 63 6f 64 65 3e 78 3c 2f 63 6f 64 .......<p>.......If.<code>x</cod
285a0 65 3e 20 69 73 20 7a 65 72 6f 2c 20 3c 63 6f 64 65 3e 40 63 6c 7a 3c 2f 63 6f 64 65 3e 20 72 65 e>.is.zero,.<code>@clz</code>.re
285c0 74 75 72 6e 73 20 3c 63 6f 64 65 3e 54 2e 62 69 74 5f 63 6f 75 6e 74 3c 2f 63 6f 64 65 3e 2e 0a turns.<code>T.bit_count</code>..
285e0 20 20 20 20 20 20 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d ......</p>...............<h2.id=
28600 22 63 6d 70 78 63 68 67 22 3e 40 63 6d 70 78 63 68 67 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c "cmpxchg">@cmpxchg</h2>........<
28620 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 63 6d 70 78 63 68 67 28 70 pre><code.class="zig">@cmpxchg(p
28640 74 72 3a 20 26 61 6d 70 3b 54 2c 20 63 6d 70 3a 20 54 2c 20 6e 65 77 3a 20 54 2c 20 73 75 63 63 tr:.&amp;T,.cmp:.T,.new:.T,.succ
28660 65 73 73 5f 6f 72 64 65 72 3a 20 41 74 6f 6d 69 63 4f 72 64 65 72 2c 20 66 61 69 6c 5f 6f 72 64 ess_order:.AtomicOrder,.fail_ord
28680 65 72 3a 20 41 74 6f 6d 69 63 4f 72 64 65 72 29 20 2d 26 67 74 3b 20 62 6f 6f 6c 3c 2f 63 6f 64 er:.AtomicOrder).-&gt;.bool</cod
286a0 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 e></pre>.......<p>.......This.fu
286c0 6e 63 74 69 6f 6e 20 70 65 72 66 6f 72 6d 73 20 61 6e 20 61 74 6f 6d 69 63 20 63 6f 6d 70 61 72 nction.performs.an.atomic.compar
286e0 65 20 65 78 63 68 61 6e 67 65 20 6f 70 65 72 61 74 69 6f 6e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e e.exchange.operation........</p>
28700 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 41 74 6f 6d 69 63 4f 72 64 .......<p>.......<code>AtomicOrd
28720 65 72 3c 2f 63 6f 64 65 3e 20 63 61 6e 20 62 65 20 66 6f 75 6e 64 20 77 69 74 68 20 3c 63 6f 64 er</code>.can.be.found.with.<cod
28740 65 3e 40 69 6d 70 6f 72 74 28 22 62 75 69 6c 74 69 6e 22 29 2e 41 74 6f 6d 69 63 4f 72 64 65 72 e>@import("builtin").AtomicOrder
28760 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 3c 63 6f </code>........</p>.......<p><co
28780 64 65 3e 40 74 79 70 65 4f 66 28 70 74 72 29 2e 61 6c 69 67 6e 6d 65 6e 74 3c 2f 63 6f 64 65 3e de>@typeOf(ptr).alignment</code>
287a0 20 6d 75 73 74 20 62 65 20 3c 63 6f 64 65 3e 26 67 74 3b 3d 20 40 73 69 7a 65 4f 66 28 54 29 2e .must.be.<code>&gt;=.@sizeOf(T).
287c0 3c 2f 63 6f 64 65 3e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f </code></p>.......<p>See.also:</
287e0 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 43 6f 6d 70 69 6c 65 2d 56 61 72 p><ul>.<li><a.href="#Compile-Var
28800 69 61 62 6c 65 73 22 3e 43 6f 6d 70 69 6c 65 20 56 61 72 69 61 62 6c 65 73 3c 2f 61 3e 3c 2f 6c iables">Compile.Variables</a></l
28820 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 63 i>.</ul>...............<h2.id="c
28840 6f 6d 70 69 6c 65 45 72 72 6f 72 22 3e 40 63 6f 6d 70 69 6c 65 45 72 72 6f 72 3c 2f 68 32 3e 0a ompileError">@compileError</h2>.
28860 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 63 .......<pre><code.class="zig">@c
28880 6f 6d 70 69 6c 65 45 72 72 6f 72 28 63 6f 6d 70 74 69 6d 65 20 6d 73 67 3a 20 5b 5d 75 38 29 3c ompileError(comptime.msg:.[]u8)<
288a0 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 /code></pre>.......<p>.......Thi
288c0 73 20 66 75 6e 63 74 69 6f 6e 2c 20 77 68 65 6e 20 73 65 6d 61 6e 74 69 63 61 6c 6c 79 20 61 6e s.function,.when.semantically.an
288e0 61 6c 79 7a 65 64 2c 20 63 61 75 73 65 73 20 61 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 20 77 alyzed,.causes.a.compile.error.w
28900 69 74 68 20 74 68 65 0a 20 20 20 20 20 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 65 3e 6d 73 67 3c ith.the.......message.<code>msg<
28920 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 /code>........</p>.......<p>....
28940 20 20 20 54 68 65 72 65 20 61 72 65 20 73 65 76 65 72 61 6c 20 77 61 79 73 20 74 68 61 74 20 63 ...There.are.several.ways.that.c
28960 6f 64 65 20 61 76 6f 69 64 73 20 62 65 69 6e 67 20 73 65 6d 61 6e 74 69 63 61 6c 6c 79 20 63 68 ode.avoids.being.semantically.ch
28980 65 63 6b 65 64 2c 20 73 75 63 68 20 61 73 0a 20 20 20 20 20 20 75 73 69 6e 67 20 3c 63 6f 64 65 ecked,.such.as.......using.<code
289a0 3e 69 66 3c 2f 63 6f 64 65 3e 20 6f 72 20 3c 63 6f 64 65 3e 73 77 69 74 63 68 3c 2f 63 6f 64 65 >if</code>.or.<code>switch</code
289c0 3e 20 77 69 74 68 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 20 63 6f 6e 73 74 61 6e 74 73 2c 0a 20 >.with.compile.time.constants,..
289e0 20 20 20 20 20 61 6e 64 20 3c 63 6f 64 65 3e 63 6f 6d 70 74 69 6d 65 3c 2f 63 6f 64 65 3e 20 66 .....and.<code>comptime</code>.f
28a00 75 6e 63 74 69 6f 6e 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 unctions........</p>............
28a20 20 20 3c 68 32 20 69 64 3d 22 63 6f 6d 70 69 6c 65 4c 6f 67 22 3e 40 63 6f 6d 70 69 6c 65 4c 6f ..<h2.id="compileLog">@compileLo
28a40 67 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 g</h2>........<pre><code.class="
28a60 7a 69 67 22 3e 40 63 6f 6d 70 69 6c 65 4c 6f 67 28 61 72 67 73 3a 20 2e 2e 2e 29 3c 2f 63 6f 64 zig">@compileLog(args:....)</cod
28a80 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 e></pre>.......<p>.......This.fu
28aa0 6e 63 74 69 6f 6e 20 70 72 69 6e 74 73 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20 70 61 73 73 nction.prints.the.arguments.pass
28ac0 65 64 20 74 6f 20 69 74 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2e 0a 20 20 20 20 20 20 ed.to.it.at.compile-time........
28ae0 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 6f 20 70 72 65 76 65 6e 74 20 </p>.......<p>.......To.prevent.
28b00 61 63 63 69 64 65 6e 74 61 6c 6c 79 20 6c 65 61 76 69 6e 67 20 63 6f 6d 70 69 6c 65 20 6c 6f 67 accidentally.leaving.compile.log
28b20 20 73 74 61 74 65 6d 65 6e 74 73 20 69 6e 20 61 20 63 6f 64 65 62 61 73 65 2c 0a 20 20 20 20 20 .statements.in.a.codebase,......
28b40 20 61 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 65 72 72 6f 72 20 69 73 20 61 64 64 65 64 20 74 6f .a.compilation.error.is.added.to
28b60 20 74 68 65 20 62 75 69 6c 64 2c 20 70 6f 69 6e 74 69 6e 67 20 74 6f 20 74 68 65 20 63 6f 6d 70 .the.build,.pointing.to.the.comp
28b80 69 6c 65 0a 20 20 20 20 20 20 6c 6f 67 20 73 74 61 74 65 6d 65 6e 74 2e 20 54 68 69 73 20 65 72 ile.......log.statement..This.er
28ba0 72 6f 72 20 70 72 65 76 65 6e 74 73 20 63 6f 64 65 20 66 72 6f 6d 20 62 65 69 6e 67 20 67 65 6e ror.prevents.code.from.being.gen
28bc0 65 72 61 74 65 64 2c 20 62 75 74 0a 20 20 20 20 20 20 64 6f 65 73 20 6e 6f 74 20 6f 74 68 65 72 erated,.but.......does.not.other
28be0 77 69 73 65 20 69 6e 74 65 72 66 65 72 65 20 77 69 74 68 20 61 6e 61 6c 79 73 69 73 2e 0a 20 20 wise.interfere.with.analysis....
28c00 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 ....</p>.......<p>.......This.fu
28c20 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 64 6f 20 22 70 72 69 6e 74 66 nction.can.be.used.to.do."printf
28c40 20 64 65 62 75 67 67 69 6e 67 22 20 6f 6e 0a 20 20 20 20 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d .debugging".on.......compile-tim
28c60 65 20 65 78 65 63 75 74 69 6e 67 20 63 6f 64 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 e.executing.code........</p>....
28c80 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c ...<p.class="file">test.zig</p><
28ca0 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 77 61 72 6e pre><code.class="zig">const.warn
28cc0 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 .=.@import(&quot;std&quot;).debu
28ce0 67 2e 77 61 72 6e 3b 0a 0a 63 6f 6e 73 74 20 6e 75 6d 31 20 3d 20 62 6c 6b 3a 20 7b 0a 20 20 20 g.warn;..const.num1.=.blk:.{....
28d00 20 76 61 72 20 76 61 6c 31 3a 20 69 33 32 20 3d 20 39 39 3b 0a 20 20 20 20 40 63 6f 6d 70 69 6c .var.val1:.i32.=.99;.....@compil
28d20 65 4c 6f 67 28 26 71 75 6f 74 3b 63 6f 6d 70 74 69 6d 65 20 76 61 6c 31 20 3d 20 26 71 75 6f 74 eLog(&quot;comptime.val1.=.&quot
28d40 3b 2c 20 76 61 6c 31 29 3b 20 0a 20 20 20 20 76 61 6c 31 20 3d 20 76 61 6c 31 20 2b 20 31 3b 0a ;,.val1);......val1.=.val1.+.1;.
28d60 20 20 20 20 62 72 65 61 6b 20 3a 62 6c 6b 20 76 61 6c 31 3b 0a 7d 3b 0a 0a 74 65 73 74 20 26 71 ....break.:blk.val1;.};..test.&q
28d80 75 6f 74 3b 6d 61 69 6e 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 40 63 6f 6d 70 69 6c 65 4c 6f 67 uot;main&quot;.{.....@compileLog
28da0 28 26 71 75 6f 74 3b 63 6f 6d 70 74 69 6d 65 20 69 6e 20 6d 61 69 6e 26 71 75 6f 74 3b 29 3b 20 (&quot;comptime.in.main&quot;);.
28dc0 0a 0a 20 20 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 52 75 6e 74 69 6d 65 20 69 6e 20 6d 61 69 6e ......warn(&quot;Runtime.in.main
28de0 2c 20 6e 75 6d 31 20 3d 20 7b 7d 2e 5c 6e 26 71 75 6f 74 3b 2c 20 6e 75 6d 31 29 3b 0a 7d 3c 2f ,.num1.=.{}.\n&quot;,.num1);.}</
28e00 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 code></pre><pre><code.class="she
28e20 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 7c 20 26 71 75 6f 74 3b ll">$.zig.test.test.zig.|.&quot;
28e40 63 6f 6d 70 74 69 6d 65 20 69 6e 20 6d 61 69 6e 26 71 75 6f 74 3b 0a 7c 20 26 71 75 6f 74 3b 63 comptime.in.main&quot;.|.&quot;c
28e60 6f 6d 70 74 69 6d 65 20 76 61 6c 31 20 3d 20 26 71 75 6f 74 3b 2c 20 39 39 0a 3c 73 70 61 6e 20 omptime.val1.=.&quot;,.99.<span.
28e80 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f class="t0_1">/home/andy/dev/zig/
28ea0 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 31 31 3a 35 3a 20 3c 2f 73 70 61 6e docgen_tmp/test.zig:11:5:.</span
28ec0 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 ><span.class="t31_1">error:</spa
28ee0 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 66 6f 75 6e 64 20 63 6f 6d 70 n><span.class="t0_1">.found.comp
28f00 69 6c 65 20 6c 6f 67 20 73 74 61 74 65 6d 65 6e 74 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 40 63 6f ile.log.statement</span>.....@co
28f20 6d 70 69 6c 65 4c 6f 67 28 26 71 75 6f 74 3b 63 6f 6d 70 74 69 6d 65 20 69 6e 20 6d 61 69 6e 26 mpileLog(&quot;comptime.in.main&
28f40 71 75 6f 74 3b 29 3b 20 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 quot;);......<span.class="t32_1"
28f60 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f >^</span>.<span.class="t0_1">/ho
28f80 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e me/andy/dev/zig/docgen_tmp/test.
28fa0 7a 69 67 3a 35 3a 35 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 zig:5:5:.</span><span.class="t31
28fc0 5f 31 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 _1">error:</span><span.class="t0
28fe0 5f 31 22 3e 20 66 6f 75 6e 64 20 63 6f 6d 70 69 6c 65 20 6c 6f 67 20 73 74 61 74 65 6d 65 6e 74 _1">.found.compile.log.statement
29000 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 40 63 6f 6d 70 69 6c 65 4c 6f 67 28 26 71 75 6f 74 3b 63 6f </span>.....@compileLog(&quot;co
29020 6d 70 74 69 6d 65 20 76 61 6c 31 20 3d 20 26 71 75 6f 74 3b 2c 20 76 61 6c 31 29 3b 20 0a 20 20 mptime.val1.=.&quot;,.val1);....
29040 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c ..<span.class="t32_1">^</span>.<
29060 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c /code></pre>........</p>.......<
29080 70 3e 0a 20 20 20 20 20 20 77 69 6c 6c 20 6f 75 70 75 74 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a p>.......will.ouput:.......</p>.
290a0 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 66 20 61 6c 6c 20 3c 63 6f 64 65 3e 40 63 6f ......<p>.......If.all.<code>@co
290c0 6d 70 69 6c 65 4c 6f 67 3c 2f 63 6f 64 65 3e 20 63 61 6c 6c 73 20 61 72 65 20 72 65 6d 6f 76 65 mpileLog</code>.calls.are.remove
290e0 64 20 6f 72 20 0a 20 20 20 20 20 20 6e 6f 74 20 65 6e 63 6f 75 6e 74 65 72 65 64 20 62 79 20 61 d.or........not.encountered.by.a
29100 6e 61 6c 79 73 69 73 2c 20 74 68 65 0a 20 20 20 20 20 20 70 72 6f 67 72 61 6d 20 63 6f 6d 70 69 nalysis,.the.......program.compi
29120 6c 65 73 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 61 6e 64 20 74 68 65 20 67 65 6e 65 72 61 74 les.successfully.and.the.generat
29140 65 64 20 65 78 65 63 75 74 61 62 6c 65 20 70 72 69 6e 74 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e ed.executable.prints:.......</p>
29160 20 20 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 .........<p.class="file">test.zi
29180 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 g</p><pre><code.class="zig">cons
291a0 74 20 77 61 72 6e 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b t.warn.=.@import(&quot;std&quot;
291c0 29 2e 64 65 62 75 67 2e 77 61 72 6e 3b 0a 0a 63 6f 6e 73 74 20 6e 75 6d 31 20 3d 20 62 6c 6b 3a ).debug.warn;..const.num1.=.blk:
291e0 20 7b 0a 20 20 20 20 76 61 72 20 76 61 6c 31 3a 20 69 33 32 20 3d 20 39 39 3b 0a 20 20 20 20 76 .{.....var.val1:.i32.=.99;.....v
29200 61 6c 31 20 3d 20 76 61 6c 31 20 2b 20 31 3b 0a 20 20 20 20 62 72 65 61 6b 20 3a 62 6c 6b 20 76 al1.=.val1.+.1;.....break.:blk.v
29220 61 6c 31 3b 0a 7d 3b 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 6d 61 69 6e 26 71 75 6f 74 3b 20 7b al1;.};..test.&quot;main&quot;.{
29240 0a 20 20 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 52 75 6e 74 69 6d 65 20 69 6e 20 6d 61 69 6e 2c .....warn(&quot;Runtime.in.main,
29260 20 6e 75 6d 31 20 3d 20 7b 7d 2e 5c 6e 26 71 75 6f 74 3b 2c 20 6e 75 6d 31 29 3b 0a 7d 3c 2f 63 .num1.=.{}.\n&quot;,.num1);.}</c
29280 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c ode></pre><pre><code.class="shel
292a0 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 l">$.zig.test.test.zig.Test.1/1.
292c0 6d 61 69 6e 2e 2e 2e 52 75 6e 74 69 6d 65 20 69 6e 20 6d 61 69 6e 2c 20 6e 75 6d 31 20 3d 20 31 main...Runtime.in.main,.num1.=.1
292e0 30 30 2e 0a 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 00..OK.</code></pre>............
29300 20 20 20 3c 68 32 20 69 64 3d 22 63 74 7a 22 3e 40 63 74 7a 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 ...<h2.id="ctz">@ctz</h2>.......
29320 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 63 74 7a 28 78 3a 20 .<pre><code.class="zig">@ctz(x:.
29340 54 29 20 2d 26 67 74 3b 20 55 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 T).-&gt;.U</code></pre>.......<p
29360 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 63 6f 75 6e 74 73 20 74 68 65 >.......This.function.counts.the
29380 20 6e 75 6d 62 65 72 20 6f 66 20 74 72 61 69 6c 69 6e 67 20 7a 65 72 6f 65 73 20 69 6e 20 3c 63 .number.of.trailing.zeroes.in.<c
293a0 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 77 68 69 63 68 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 ode>x</code>.which.is.an.integer
293c0 0a 20 20 20 20 20 20 74 79 70 65 20 3c 63 6f 64 65 3e 54 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 .......type.<code>T</code>......
293e0 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 72 65 74 75 72 ..</p>.......<p>.......The.retur
29400 6e 20 74 79 70 65 20 3c 63 6f 64 65 3e 55 3c 2f 63 6f 64 65 3e 20 69 73 20 61 6e 20 75 6e 73 69 n.type.<code>U</code>.is.an.unsi
29420 67 6e 65 64 20 69 6e 74 65 67 65 72 20 77 69 74 68 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 6e 75 gned.integer.with.the.minimum.nu
29440 6d 62 65 72 0a 20 20 20 20 20 20 6f 66 20 62 69 74 73 20 74 68 61 74 20 63 61 6e 20 72 65 70 72 mber.......of.bits.that.can.repr
29460 65 73 65 6e 74 20 74 68 65 20 76 61 6c 75 65 20 3c 63 6f 64 65 3e 54 2e 62 69 74 5f 63 6f 75 6e esent.the.value.<code>T.bit_coun
29480 74 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 t</code>........</p>.......<p>..
294a0 20 20 20 20 20 49 66 20 3c 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 69 73 20 7a 65 72 6f 2c 20 .....If.<code>x</code>.is.zero,.
294c0 3c 63 6f 64 65 3e 40 63 74 7a 3c 2f 63 6f 64 65 3e 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e <code>@ctz</code>.returns.<code>
294e0 54 2e 62 69 74 5f 63 6f 75 6e 74 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 T.bit_count</code>........</p>..
29500 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 64 69 76 45 78 61 63 74 22 3e 40 64 ............<h2.id="divExact">@d
29520 69 76 45 78 61 63 74 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 ivExact</h2>........<pre><code.c
29540 6c 61 73 73 3d 22 7a 69 67 22 3e 40 64 69 76 45 78 61 63 74 28 6e 75 6d 65 72 61 74 6f 72 3a 20 lass="zig">@divExact(numerator:.
29560 54 2c 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 3a 20 54 29 20 2d 26 67 74 3b 20 54 3c 2f 63 6f 64 65 T,.denominator:.T).-&gt;.T</code
29580 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 45 78 61 63 74 20 64 69 ></pre>.......<p>.......Exact.di
295a0 76 69 73 69 6f 6e 2e 20 43 61 6c 6c 65 72 20 67 75 61 72 61 6e 74 65 65 73 20 3c 63 6f 64 65 3e vision..Caller.guarantees.<code>
295c0 64 65 6e 6f 6d 69 6e 61 74 6f 72 20 21 3d 20 30 3c 2f 63 6f 64 65 3e 20 61 6e 64 0a 20 20 20 20 denominator.!=.0</code>.and.....
295e0 20 20 3c 63 6f 64 65 3e 40 64 69 76 54 72 75 6e 63 28 6e 75 6d 65 72 61 74 6f 72 2c 20 64 65 6e ..<code>@divTrunc(numerator,.den
29600 6f 6d 69 6e 61 74 6f 72 29 20 2a 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 20 3d 3d 20 6e 75 6d 65 72 ominator).*.denominator.==.numer
29620 61 74 6f 72 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 ator</code>........</p>.......<u
29640 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 64 69 76 45 78 61 63 74 28 36 l>.........<li><code>@divExact(6
29660 2c 20 33 29 20 3d 3d 20 32 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c ,.3).==.2</code></li>.........<l
29680 69 3e 3c 63 6f 64 65 3e 40 64 69 76 45 78 61 63 74 28 61 2c 20 62 29 20 2a 20 62 20 3d 3d 20 61 i><code>@divExact(a,.b).*.b.==.a
296a0 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c </code></li>.......</ul>.......<
296c0 70 3e 46 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 61 20 p>For.a.function.that.returns.a.
296e0 70 6f 73 73 69 62 6c 65 20 65 72 72 6f 72 20 63 6f 64 65 2c 20 75 73 65 20 3c 63 6f 64 65 3e 40 possible.error.code,.use.<code>@
29700 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 61 74 68 2e 64 69 76 45 78 61 63 74 3c 2f 63 6f 64 import("std").math.divExact</cod
29720 65 3e 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 e>.</p>.......<p>See.also:</p><u
29740 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 64 69 76 54 72 75 6e 63 22 3e 40 64 69 76 54 l>.<li><a.href="#divTrunc">@divT
29760 72 75 6e 63 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 64 69 76 46 runc</a></li>.<li><a.href="#divF
29780 6c 6f 6f 72 22 3e 40 64 69 76 46 6c 6f 6f 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a loor">@divFloor</a></li>.</ul>..
297a0 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 64 69 76 46 6c 6f 6f 72 22 3e 40 .............<h2.id="divFloor">@
297c0 64 69 76 46 6c 6f 6f 72 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 divFloor</h2>........<pre><code.
297e0 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 64 69 76 46 6c 6f 6f 72 28 6e 75 6d 65 72 61 74 6f 72 3a class="zig">@divFloor(numerator:
29800 20 54 2c 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 3a 20 54 29 20 2d 26 67 74 3b 20 54 3c 2f 63 6f 64 .T,.denominator:.T).-&gt;.T</cod
29820 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 46 6c 6f 6f 72 65 64 e></pre>.......<p>.......Floored
29840 20 64 69 76 69 73 69 6f 6e 2e 20 52 6f 75 6e 64 73 20 74 6f 77 61 72 64 20 6e 65 67 61 74 69 76 .division..Rounds.toward.negativ
29860 65 20 69 6e 66 69 6e 69 74 79 2e 20 46 6f 72 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 e.infinity..For.unsigned.integer
29880 73 20 69 74 20 69 73 0a 20 20 20 20 20 20 74 68 65 20 73 61 6d 65 20 61 73 20 3c 63 6f 64 65 3e s.it.is.......the.same.as.<code>
298a0 6e 75 6d 65 72 61 74 6f 72 20 2f 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 3c 2f 63 6f 64 65 3e 2e 20 numerator./.denominator</code>..
298c0 43 61 6c 6c 65 72 20 67 75 61 72 61 6e 74 65 65 73 20 3c 63 6f 64 65 3e 64 65 6e 6f 6d 69 6e 61 Caller.guarantees.<code>denomina
298e0 74 6f 72 20 21 3d 20 30 3c 2f 63 6f 64 65 3e 20 61 6e 64 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e tor.!=.0</code>.and.......<code>
29900 21 28 40 74 79 70 65 49 64 28 54 29 20 3d 3d 20 62 75 69 6c 74 69 6e 2e 54 79 70 65 49 64 2e 49 !(@typeId(T).==.builtin.TypeId.I
29920 6e 74 20 61 6e 64 20 54 2e 69 73 5f 73 69 67 6e 65 64 20 61 6e 64 20 6e 75 6d 65 72 61 74 6f 72 nt.and.T.is_signed.and.numerator
29940 20 3d 3d 20 40 6d 69 6e 56 61 6c 75 65 28 54 29 20 61 6e 64 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 .==.@minValue(T).and.denominator
29960 20 3d 3d 20 2d 31 29 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 .==.-1)</code>........</p>......
29980 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 64 69 76 46 6c 6f 6f .<ul>.........<li><code>@divFloo
299a0 72 28 2d 35 2c 20 33 29 20 3d 3d 20 2d 32 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 r(-5,.3).==.-2</code></li>......
299c0 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 64 69 76 46 6c 6f 6f 72 28 61 2c 20 62 29 20 2b 20 40 ...<li><code>@divFloor(a,.b).+.@
299e0 6d 6f 64 28 61 2c 20 62 29 20 3d 3d 20 61 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 mod(a,.b).==.a</code></li>......
29a00 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 46 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 .</ul>.......<p>For.a.function.t
29a20 68 61 74 20 72 65 74 75 72 6e 73 20 61 20 70 6f 73 73 69 62 6c 65 20 65 72 72 6f 72 20 63 6f 64 hat.returns.a.possible.error.cod
29a40 65 2c 20 75 73 65 20 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 61 74 68 e,.use.<code>@import("std").math
29a60 2e 64 69 76 46 6c 6f 6f 72 3c 2f 63 6f 64 65 3e 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 .divFloor</code>.</p>.......<p>S
29a80 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 64 ee.also:</p><ul>.<li><a.href="#d
29aa0 69 76 54 72 75 6e 63 22 3e 40 64 69 76 54 72 75 6e 63 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e ivTrunc">@divTrunc</a></li>.<li>
29ac0 3c 61 20 68 72 65 66 3d 22 23 64 69 76 45 78 61 63 74 22 3e 40 64 69 76 45 78 61 63 74 3c 2f 61 <a.href="#divExact">@divExact</a
29ae0 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 ></li>.</ul>...............<h2.i
29b00 64 3d 22 64 69 76 54 72 75 6e 63 22 3e 40 64 69 76 54 72 75 6e 63 3c 2f 68 32 3e 0a 0a 20 20 20 d="divTrunc">@divTrunc</h2>.....
29b20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 64 69 76 54 72 ...<pre><code.class="zig">@divTr
29b40 75 6e 63 28 6e 75 6d 65 72 61 74 6f 72 3a 20 54 2c 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 3a 20 54 unc(numerator:.T,.denominator:.T
29b60 29 20 2d 26 67 74 3b 20 54 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e ).-&gt;.T</code></pre>.......<p>
29b80 0a 20 20 20 20 20 20 54 72 75 6e 63 61 74 65 64 20 64 69 76 69 73 69 6f 6e 2e 20 52 6f 75 6e 64 .......Truncated.division..Round
29ba0 73 20 74 6f 77 61 72 64 20 7a 65 72 6f 2e 20 46 6f 72 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 s.toward.zero..For.unsigned.inte
29bc0 67 65 72 73 20 69 74 20 69 73 0a 20 20 20 20 20 20 74 68 65 20 73 61 6d 65 20 61 73 20 3c 63 6f gers.it.is.......the.same.as.<co
29be0 64 65 3e 6e 75 6d 65 72 61 74 6f 72 20 2f 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 3c 2f 63 6f 64 65 de>numerator./.denominator</code
29c00 3e 2e 20 43 61 6c 6c 65 72 20 67 75 61 72 61 6e 74 65 65 73 20 3c 63 6f 64 65 3e 64 65 6e 6f 6d >..Caller.guarantees.<code>denom
29c20 69 6e 61 74 6f 72 20 21 3d 20 30 3c 2f 63 6f 64 65 3e 20 61 6e 64 0a 20 20 20 20 20 20 3c 63 6f inator.!=.0</code>.and.......<co
29c40 64 65 3e 21 28 40 74 79 70 65 49 64 28 54 29 20 3d 3d 20 62 75 69 6c 74 69 6e 2e 54 79 70 65 49 de>!(@typeId(T).==.builtin.TypeI
29c60 64 2e 49 6e 74 20 61 6e 64 20 54 2e 69 73 5f 73 69 67 6e 65 64 20 61 6e 64 20 6e 75 6d 65 72 61 d.Int.and.T.is_signed.and.numera
29c80 74 6f 72 20 3d 3d 20 40 6d 69 6e 56 61 6c 75 65 28 54 29 20 61 6e 64 20 64 65 6e 6f 6d 69 6e 61 tor.==.@minValue(T).and.denomina
29ca0 74 6f 72 20 3d 3d 20 2d 31 29 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 tor.==.-1)</code>........</p>...
29cc0 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 64 69 76 54 ....<ul>.........<li><code>@divT
29ce0 72 75 6e 63 28 2d 35 2c 20 33 29 20 3d 3d 20 2d 31 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 runc(-5,.3).==.-1</code></li>...
29d00 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 64 69 76 54 72 75 6e 63 28 61 2c 20 62 29 20 ......<li><code>@divTrunc(a,.b).
29d20 2b 20 40 72 65 6d 28 61 2c 20 62 29 20 3d 3d 20 61 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 +.@rem(a,.b).==.a</code></li>...
29d40 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 46 6f 72 20 61 20 66 75 6e 63 74 69 6f ....</ul>.......<p>For.a.functio
29d60 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 61 20 70 6f 73 73 69 62 6c 65 20 65 72 72 6f 72 20 n.that.returns.a.possible.error.
29d80 63 6f 64 65 2c 20 75 73 65 20 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d code,.use.<code>@import("std").m
29da0 61 74 68 2e 64 69 76 54 72 75 6e 63 3c 2f 63 6f 64 65 3e 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c ath.divTrunc</code>.</p>.......<
29dc0 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d p>See.also:</p><ul>.<li><a.href=
29de0 22 23 64 69 76 46 6c 6f 6f 72 22 3e 40 64 69 76 46 6c 6f 6f 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c "#divFloor">@divFloor</a></li>.<
29e00 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 64 69 76 45 78 61 63 74 22 3e 40 64 69 76 45 78 61 63 74 li><a.href="#divExact">@divExact
29e20 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 </a></li>.</ul>...............<h
29e40 32 20 69 64 3d 22 65 6d 62 65 64 46 69 6c 65 22 3e 40 65 6d 62 65 64 46 69 6c 65 3c 2f 68 32 3e 2.id="embedFile">@embedFile</h2>
29e60 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 ........<pre><code.class="zig">@
29e80 65 6d 62 65 64 46 69 6c 65 28 63 6f 6d 70 74 69 6d 65 20 70 61 74 68 3a 20 5b 5d 63 6f 6e 73 74 embedFile(comptime.path:.[]const
29ea0 20 75 38 29 20 2d 26 67 74 3b 20 5b 58 5d 75 38 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 .u8).-&gt;.[X]u8</code></pre>...
29ec0 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 ....<p>.......This.function.retu
29ee0 72 6e 73 20 61 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 20 63 6f 6e 73 74 61 6e 74 20 66 69 78 65 rns.a.compile.time.constant.fixe
29f00 64 2d 73 69 7a 65 20 61 72 72 61 79 20 77 69 74 68 20 6c 65 6e 67 74 68 0a 20 20 20 20 20 20 65 d-size.array.with.length.......e
29f20 71 75 61 6c 20 74 6f 20 74 68 65 20 62 79 74 65 20 63 6f 75 6e 74 20 6f 66 20 74 68 65 20 66 69 qual.to.the.byte.count.of.the.fi
29f40 6c 65 20 67 69 76 65 6e 20 62 79 20 3c 63 6f 64 65 3e 70 61 74 68 3c 2f 63 6f 64 65 3e 2e 20 54 le.given.by.<code>path</code>..T
29f60 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 61 72 72 61 79 0a 20 20 20 20 20 20 61 he.contents.of.the.array.......a
29f80 72 65 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 66 69 6c 65 2e 0a 20 20 20 re.the.contents.of.the.file.....
29fa0 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 70 61 ...</p>.......<p>.......<code>pa
29fc0 74 68 3c 2f 63 6f 64 65 3e 20 69 73 20 61 62 73 6f 6c 75 74 65 20 6f 72 20 72 65 6c 61 74 69 76 th</code>.is.absolute.or.relativ
29fe0 65 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 66 69 6c 65 2c 20 6a 75 73 74 20 6c 69 6b 65 e.to.the.current.file,.just.like
2a000 20 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 .<code>@import</code>........</p
2a020 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 >.......<p>See.also:</p><ul>.<li
2a040 3e 3c 61 20 68 72 65 66 3d 22 23 69 6d 70 6f 72 74 22 3e 40 69 6d 70 6f 72 74 3c 2f 61 3e 3c 2f ><a.href="#import">@import</a></
2a060 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 li>.</ul>...............<h2.id="
2a080 65 78 70 6f 72 74 22 3e 40 65 78 70 6f 72 74 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 export">@export</h2>........<pre
2a0a0 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 65 78 70 6f 72 74 28 63 6f 6d 70 74 ><code.class="zig">@export(compt
2a0c0 69 6d 65 20 6e 61 6d 65 3a 20 5b 5d 63 6f 6e 73 74 20 75 38 2c 20 74 61 72 67 65 74 3a 20 76 61 ime.name:.[]const.u8,.target:.va
2a0e0 72 2c 20 6c 69 6e 6b 61 67 65 3a 20 62 75 69 6c 74 69 6e 2e 47 6c 6f 62 61 6c 4c 69 6e 6b 61 67 r,.linkage:.builtin.GlobalLinkag
2a100 65 29 20 2d 26 67 74 3b 20 5b 5d 63 6f 6e 73 74 20 75 38 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e e).-&gt;.[]const.u8</code></pre>
2a120 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 43 72 65 61 74 65 73 20 61 20 73 79 6d 62 6f .......<p>.......Creates.a.symbo
2a140 6c 20 69 6e 20 74 68 65 20 6f 75 74 70 75 74 20 6f 62 6a 65 63 74 20 66 69 6c 65 2e 0a 20 20 20 l.in.the.output.object.file.....
2a160 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 74 61 67 ...</p>..............<h2.id="tag
2a180 4e 61 6d 65 22 3e 40 74 61 67 4e 61 6d 65 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e Name">@tagName</h2>........<pre>
2a1a0 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 74 61 67 4e 61 6d 65 28 76 61 6c 75 65 <code.class="zig">@tagName(value
2a1c0 3a 20 76 61 72 29 20 2d 26 67 74 3b 20 5b 5d 63 6f 6e 73 74 20 75 38 3c 2f 63 6f 64 65 3e 3c 2f :.var).-&gt;.[]const.u8</code></
2a1e0 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 43 6f 6e 76 65 72 74 73 20 61 6e pre>.......<p>.......Converts.an
2a200 20 65 6e 75 6d 20 76 61 6c 75 65 20 6f 72 20 75 6e 69 6f 6e 20 76 61 6c 75 65 20 74 6f 20 61 20 .enum.value.or.union.value.to.a.
2a220 73 6c 69 63 65 20 6f 66 20 62 79 74 65 73 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 slice.of.bytes.representing.the.
2a240 6e 61 6d 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 name........</p>..............<h
2a260 32 20 69 64 3d 22 54 61 67 54 79 70 65 22 3e 40 54 61 67 54 79 70 65 3c 2f 68 32 3e 0a 0a 20 20 2.id="TagType">@TagType</h2>....
2a280 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 54 61 67 54 ....<pre><code.class="zig">@TagT
2a2a0 79 70 65 28 54 3a 20 74 79 70 65 29 20 2d 26 67 74 3b 20 74 79 70 65 3c 2f 63 6f 64 65 3e 3c 2f ype(T:.type).-&gt;.type</code></
2a2c0 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 46 6f 72 20 61 6e 20 65 6e 75 6d pre>.......<p>.......For.an.enum
2a2e0 2c 20 72 65 74 75 72 6e 73 20 74 68 65 20 69 6e 74 65 67 65 72 20 74 79 70 65 20 74 68 61 74 20 ,.returns.the.integer.type.that.
2a300 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 65 6e 75 6d 65 72 61 74 69 6f 6e is.used.to.store.the.enumeration
2a320 20 76 61 6c 75 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 .value........</p>.......<p>....
2a340 20 20 20 46 6f 72 20 61 20 75 6e 69 6f 6e 2c 20 72 65 74 75 72 6e 73 20 74 68 65 20 65 6e 75 6d ...For.a.union,.returns.the.enum
2a360 20 74 79 70 65 20 74 68 61 74 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 .type.that.is.used.to.store.the.
2a380 74 61 67 20 76 61 6c 75 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 tag.value........</p>...........
2a3a0 20 20 20 3c 68 32 20 69 64 3d 22 65 72 72 6f 72 4e 61 6d 65 22 3e 40 65 72 72 6f 72 4e 61 6d 65 ...<h2.id="errorName">@errorName
2a3c0 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a </h2>........<pre><code.class="z
2a3e0 69 67 22 3e 40 65 72 72 6f 72 4e 61 6d 65 28 65 72 72 3a 20 65 72 72 6f 72 29 20 2d 26 67 74 3b ig">@errorName(err:.error).-&gt;
2a400 20 5b 5d 75 38 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 .[]u8</code></pre>.......<p>....
2a420 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 73 74 72 ...This.function.returns.the.str
2a440 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 6e 20 65 72 72 6f 72 2e 20 ing.representation.of.an.error..
2a460 49 66 20 61 6e 20 65 72 72 6f 72 0a 20 20 20 20 20 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 69 73 If.an.error.......declaration.is
2a480 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c :.......</p>.......<pre><code.cl
2a4a0 61 73 73 3d 22 7a 69 67 22 3e 65 72 72 6f 72 20 4f 75 74 4f 66 4d 65 6d 3c 2f 63 6f 64 65 3e 3c ass="zig">error.OutOfMem</code><
2a4c0 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 6e 20 74 68 65 20 73 /pre>.......<p>.......Then.the.s
2a4e0 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 69 73 20 3c 63 6f 64 65 3e 22 4f tring.representation.is.<code>"O
2a500 75 74 4f 66 4d 65 6d 22 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 utOfMem"</code>........</p>.....
2a520 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 66 20 74 68 65 72 65 20 61 72 65 20 6e 6f 20 63 61 6c 6c ..<p>.......If.there.are.no.call
2a540 73 20 74 6f 20 3c 63 6f 64 65 3e 40 65 72 72 6f 72 4e 61 6d 65 3c 2f 63 6f 64 65 3e 20 69 6e 20 s.to.<code>@errorName</code>.in.
2a560 61 6e 20 65 6e 74 69 72 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2c 0a 20 20 20 20 20 20 6f 72 20 an.entire.application,.......or.
2a580 61 6c 6c 20 63 61 6c 6c 73 20 68 61 76 65 20 61 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6b 6e all.calls.have.a.compile-time.kn
2a5a0 6f 77 6e 20 76 61 6c 75 65 20 66 6f 72 20 3c 63 6f 64 65 3e 65 72 72 3c 2f 63 6f 64 65 3e 2c 20 own.value.for.<code>err</code>,.
2a5c0 74 68 65 6e 20 6e 6f 0a 20 20 20 20 20 20 65 72 72 6f 72 20 6e 61 6d 65 20 74 61 62 6c 65 20 77 then.no.......error.name.table.w
2a5e0 69 6c 6c 20 62 65 20 67 65 6e 65 72 61 74 65 64 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 ill.be.generated........</p>....
2a600 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 65 72 72 6f 72 52 65 74 75 72 6e 54 72 61 ..........<h2.id="errorReturnTra
2a620 63 65 22 3e 40 65 72 72 6f 72 52 65 74 75 72 6e 54 72 61 63 65 3c 2f 68 32 3e 0a 0a 20 20 20 20 ce">@errorReturnTrace</h2>......
2a640 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 65 72 72 6f 72 52 ..<pre><code.class="zig">@errorR
2a660 65 74 75 72 6e 54 72 61 63 65 28 29 20 2d 26 67 74 3b 20 3f 26 61 6d 70 3b 62 75 69 6c 74 69 6e eturnTrace().-&gt;.?&amp;builtin
2a680 2e 53 74 61 63 6b 54 72 61 63 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c .StackTrace</code></pre>.......<
2a6a0 70 3e 0a 20 20 20 20 20 20 49 66 20 74 68 65 20 62 69 6e 61 72 79 20 69 73 20 62 75 69 6c 74 20 p>.......If.the.binary.is.built.
2a6c0 77 69 74 68 20 65 72 72 6f 72 20 72 65 74 75 72 6e 20 74 72 61 63 69 6e 67 2c 20 61 6e 64 20 74 with.error.return.tracing,.and.t
2a6e0 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65 64 20 69 6e 20 61 0a 20 20 20 his.function.is.invoked.in.a....
2a700 20 20 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 63 61 6c 6c 73 20 61 20 66 75 6e 63 74 69 6f ...function.that.calls.a.functio
2a720 6e 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72 20 6f 72 20 65 72 72 6f 72 20 75 6e 69 6f 6e 20 72 n.with.an.error.or.error.union.r
2a740 65 74 75 72 6e 20 74 79 70 65 2c 20 72 65 74 75 72 6e 73 20 61 0a 20 20 20 20 20 20 73 74 61 63 eturn.type,.returns.a.......stac
2a760 6b 20 74 72 61 63 65 20 6f 62 6a 65 63 74 2e 20 4f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e k.trace.object..Otherwise.return
2a780 73 20 60 6e 75 6c 6c 60 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 s.`null`........</p>............
2a7a0 20 20 3c 68 32 20 69 64 3d 22 66 65 6e 63 65 22 3e 40 66 65 6e 63 65 3c 2f 68 32 3e 0a 0a 20 20 ..<h2.id="fence">@fence</h2>....
2a7c0 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 66 65 6e 63 ....<pre><code.class="zig">@fenc
2a7e0 65 28 6f 72 64 65 72 3a 20 41 74 6f 6d 69 63 4f 72 64 65 72 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 e(order:.AtomicOrder)</code></pr
2a800 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 3c 63 6f 64 65 3e 66 65 6e e>.......<p>.......The.<code>fen
2a820 63 65 3c 2f 63 6f 64 65 3e 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 69 6e ce</code>.function.is.used.to.in
2a840 74 72 6f 64 75 63 65 20 68 61 70 70 65 6e 73 2d 62 65 66 6f 72 65 20 65 64 67 65 73 20 62 65 74 troduce.happens-before.edges.bet
2a860 77 65 65 6e 20 6f 70 65 72 61 74 69 6f 6e 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 ween.operations........</p>.....
2a880 20 20 3c 70 3e 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 41 74 6f 6d 69 63 4f 72 64 65 72 3c 2f 63 ..<p>.......<code>AtomicOrder</c
2a8a0 6f 64 65 3e 20 63 61 6e 20 62 65 20 66 6f 75 6e 64 20 77 69 74 68 20 3c 63 6f 64 65 3e 40 69 6d ode>.can.be.found.with.<code>@im
2a8c0 70 6f 72 74 28 22 62 75 69 6c 74 69 6e 22 29 2e 41 74 6f 6d 69 63 4f 72 64 65 72 3c 2f 63 6f 64 port("builtin").AtomicOrder</cod
2a8e0 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f e>........</p>.......<p>See.also
2a900 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 43 6f 6d 70 69 6c 65 2d :</p><ul>.<li><a.href="#Compile-
2a920 56 61 72 69 61 62 6c 65 73 22 3e 43 6f 6d 70 69 6c 65 20 56 61 72 69 61 62 6c 65 73 3c 2f 61 3e Variables">Compile.Variables</a>
2a940 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 </li>.</ul>...............<h2.id
2a960 3d 22 66 69 65 6c 64 50 61 72 65 6e 74 50 74 72 22 3e 40 66 69 65 6c 64 50 61 72 65 6e 74 50 74 ="fieldParentPtr">@fieldParentPt
2a980 72 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 r</h2>........<pre><code.class="
2a9a0 7a 69 67 22 3e 40 66 69 65 6c 64 50 61 72 65 6e 74 50 74 72 28 63 6f 6d 70 74 69 6d 65 20 50 61 zig">@fieldParentPtr(comptime.Pa
2a9c0 72 65 6e 74 54 79 70 65 3a 20 74 79 70 65 2c 20 63 6f 6d 70 74 69 6d 65 20 66 69 65 6c 64 5f 6e rentType:.type,.comptime.field_n
2a9e0 61 6d 65 3a 20 5b 5d 63 6f 6e 73 74 20 75 38 2c 0a 20 20 20 20 66 69 65 6c 64 5f 70 74 72 3a 20 ame:.[]const.u8,.....field_ptr:.
2aa00 26 61 6d 70 3b 54 29 20 2d 26 67 74 3b 20 26 61 6d 70 3b 50 61 72 65 6e 74 54 79 70 65 3c 2f 63 &amp;T).-&gt;.&amp;ParentType</c
2aa20 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 47 69 76 65 6e ode></pre>.......<p>.......Given
2aa40 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 66 69 65 6c 64 2c 20 72 65 74 75 72 6e 73 20 74 .a.pointer.to.a.field,.returns.t
2aa60 68 65 20 62 61 73 65 20 70 6f 69 6e 74 65 72 20 6f 66 20 61 20 73 74 72 75 63 74 2e 0a 20 20 20 he.base.pointer.of.a.struct.....
2aa80 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 66 72 61 ...</p>..............<h2.id="fra
2aaa0 6d 65 41 64 64 72 65 73 73 22 3e 40 66 72 61 6d 65 41 64 64 72 65 73 73 3c 2f 68 32 3e 0a 0a 20 meAddress">@frameAddress</h2>...
2aac0 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 66 72 61 .....<pre><code.class="zig">@fra
2aae0 6d 65 41 64 64 72 65 73 73 28 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c meAddress()</code></pre>.......<
2ab00 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 p>.......This.function.returns.t
2ab20 68 65 20 62 61 73 65 20 70 6f 69 6e 74 65 72 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 he.base.pointer.of.the.current.s
2ab40 74 61 63 6b 20 66 72 61 6d 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e tack.frame........</p>.......<p>
2ab60 0a 20 20 20 20 20 20 54 68 65 20 69 6d 70 6c 69 63 61 74 69 6f 6e 73 20 6f 66 20 74 68 69 73 20 .......The.implications.of.this.
2ab80 61 72 65 20 74 61 72 67 65 74 20 73 70 65 63 69 66 69 63 20 61 6e 64 20 6e 6f 74 20 63 6f 6e 73 are.target.specific.and.not.cons
2aba0 69 73 74 65 6e 74 20 61 63 72 6f 73 73 20 61 6c 6c 0a 20 20 20 20 20 20 70 6c 61 74 66 6f 72 6d istent.across.all.......platform
2abc0 73 2e 20 54 68 65 20 66 72 61 6d 65 20 61 64 64 72 65 73 73 20 6d 61 79 20 6e 6f 74 20 62 65 20 s..The.frame.address.may.not.be.
2abe0 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 72 65 6c 65 61 73 65 20 6d 6f 64 65 20 64 75 65 20 74 6f available.in.release.mode.due.to
2ac00 0a 20 20 20 20 20 20 61 67 67 72 65 73 73 69 76 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 2e .......aggressive.optimizations.
2ac20 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 .......</p>.......<p>.......This
2ac40 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 20 76 61 6c 69 64 20 77 69 74 68 69 6e 20 66 .function.is.only.valid.within.f
2ac60 75 6e 63 74 69 6f 6e 20 73 63 6f 70 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 unction.scope........</p>.......
2ac80 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 69 6d 70 6f 72 74 22 3e 40 69 6d 70 6f 72 74 3c 2f .......<h2.id="import">@import</
2aca0 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 h2>........<pre><code.class="zig
2acc0 22 3e 40 69 6d 70 6f 72 74 28 63 6f 6d 70 74 69 6d 65 20 70 61 74 68 3a 20 5b 5d 75 38 29 20 2d ">@import(comptime.path:.[]u8).-
2ace0 26 67 74 3b 20 28 6e 61 6d 65 73 70 61 63 65 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 &gt;.(namespace)</code></pre>...
2ad00 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 66 69 6e 64 ....<p>.......This.function.find
2ad20 73 20 61 20 7a 69 67 20 66 69 6c 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 3c 63 s.a.zig.file.corresponding.to.<c
2ad40 6f 64 65 3e 70 61 74 68 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 69 6d 70 6f 72 74 73 20 61 6c 6c 20 ode>path</code>.and.imports.all.
2ad60 74 68 65 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 74 6f 70 20 6c 65 76 65 6c 20 64 65 63 6c 61 the.......public.top.level.decla
2ad80 72 61 74 69 6f 6e 73 20 69 6e 74 6f 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 6e 61 6d 65 73 rations.into.the.resulting.names
2ada0 70 61 63 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 pace........</p>.......<p>......
2adc0 20 3c 63 6f 64 65 3e 70 61 74 68 3c 2f 63 6f 64 65 3e 20 63 61 6e 20 62 65 20 61 20 72 65 6c 61 .<code>path</code>.can.be.a.rela
2ade0 74 69 76 65 20 6f 72 20 61 62 73 6f 6c 75 74 65 20 70 61 74 68 2c 20 6f 72 20 69 74 20 63 61 6e tive.or.absolute.path,.or.it.can
2ae00 20 62 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 70 61 63 6b 61 67 65 2e 0a 20 20 20 20 20 .be.the.name.of.a.package.......
2ae20 20 49 66 20 69 74 20 69 73 20 61 20 72 65 6c 61 74 69 76 65 20 70 61 74 68 2c 20 69 74 20 69 73 .If.it.is.a.relative.path,.it.is
2ae40 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65 20 66 69 6c 65 20 74 68 61 74 20 63 6f 6e 74 61 .relative.to.the.file.that.conta
2ae60 69 6e 73 20 74 68 65 20 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 3c 2f 63 6f 64 65 3e 0a 20 20 20 ins.the.<code>@import</code>....
2ae80 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 ...function.call........</p>....
2aea0 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 63 6b 61 ...<p>.......The.following.packa
2aec0 67 65 73 20 61 72 65 20 61 6c 77 61 79 73 20 61 76 61 69 6c 61 62 6c 65 3a 0a 20 20 20 20 20 20 ges.are.always.available:.......
2aee0 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 </p>.......<ul>.........<li><cod
2af00 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 3c 2f 63 6f 64 65 3e 20 2d 20 5a 69 67 20 53 74 e>@import("std")</code>.-.Zig.St
2af20 61 6e 64 61 72 64 20 4c 69 62 72 61 72 79 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e andard.Library</li>.........<li>
2af40 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 62 75 69 6c 74 69 6e 22 29 3c 2f 63 6f 64 65 3e 20 <code>@import("builtin")</code>.
2af60 2d 20 43 6f 6d 70 69 6c 65 72 2d 70 72 6f 76 69 64 65 64 20 74 79 70 65 73 20 61 6e 64 20 76 61 -.Compiler-provided.types.and.va
2af80 72 69 61 62 6c 65 73 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c riables</li>.......</ul>.......<
2afa0 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d p>See.also:</p><ul>.<li><a.href=
2afc0 22 23 43 6f 6d 70 69 6c 65 2d 56 61 72 69 61 62 6c 65 73 22 3e 43 6f 6d 70 69 6c 65 20 56 61 72 "#Compile-Variables">Compile.Var
2afe0 69 61 62 6c 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 65 6d iables</a></li>.<li><a.href="#em
2b000 62 65 64 46 69 6c 65 22 3e 40 65 6d 62 65 64 46 69 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 bedFile">@embedFile</a></li>.</u
2b020 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 69 6e 6c 69 6e 65 43 l>...............<h2.id="inlineC
2b040 61 6c 6c 22 3e 40 69 6e 6c 69 6e 65 43 61 6c 6c 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 all">@inlineCall</h2>........<pr
2b060 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 69 6e 6c 69 6e 65 43 61 6c 6c 28 e><code.class="zig">@inlineCall(
2b080 66 75 6e 63 74 69 6f 6e 3a 20 58 2c 20 61 72 67 73 3a 20 2e 2e 2e 29 20 2d 26 67 74 3b 20 59 3c function:.X,.args:....).-&gt;.Y<
2b0a0 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 /code></pre>.......<p>.......Thi
2b0c0 73 20 63 61 6c 6c 73 20 61 20 66 75 6e 63 74 69 6f 6e 2c 20 69 6e 20 74 68 65 20 73 61 6d 65 20 s.calls.a.function,.in.the.same.
2b0e0 77 61 79 20 74 68 61 74 20 69 6e 76 6f 6b 69 6e 67 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 way.that.invoking.an.expression.
2b100 77 69 74 68 20 70 61 72 65 6e 74 68 65 73 65 73 20 64 6f 65 73 3a 0a 20 20 20 20 20 20 3c 2f 70 with.parentheses.does:.......</p
2b120 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 >.......<p.class="file">test.zig
2b140 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 </p><pre><code.class="zig">const
2b160 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 .assert.=.@import(&quot;std&quot
2b180 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b 69 6e 6c ;).debug.assert;..test.&quot;inl
2b1a0 69 6e 65 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 61 73 ine.function.call&quot;.{.....as
2b1c0 73 65 72 74 28 40 69 6e 6c 69 6e 65 43 61 6c 6c 28 61 64 64 2c 20 33 2c 20 39 29 20 3d 3d 20 31 sert(@inlineCall(add,.3,.9).==.1
2b1e0 32 29 3b 0a 7d 0a 0a 66 6e 20 61 64 64 28 61 3a 20 69 33 32 2c 20 62 3a 20 69 33 32 29 20 69 33 2);.}..fn.add(a:.i32,.b:.i32).i3
2b200 32 20 7b 20 72 65 74 75 72 6e 20 61 20 2b 20 62 3b 20 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 2.{.return.a.+.b;.}</code></pre>
2b220 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 <pre><code.class="shell">$.zig.t
2b240 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 69 6e 6c 69 6e 65 20 66 75 6e est.test.zig.Test.1/1.inline.fun
2b260 63 74 69 6f 6e 20 63 61 6c 6c 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 ction.call...OK.</code></pre>...
2b280 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 55 6e 6c 69 6b 65 20 61 20 6e 6f 72 6d 61 6c 20 66 .....<p>.......Unlike.a.normal.f
2b2a0 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 2c 20 68 6f 77 65 76 65 72 2c 20 3c 63 6f 64 65 3e 40 69 6e unction.call,.however,.<code>@in
2b2c0 6c 69 6e 65 43 61 6c 6c 3c 2f 63 6f 64 65 3e 20 67 75 61 72 61 6e 74 65 65 73 20 74 68 61 74 20 lineCall</code>.guarantees.that.
2b2e0 74 68 65 20 63 61 6c 6c 0a 20 20 20 20 20 20 77 69 6c 6c 20 62 65 20 69 6e 6c 69 6e 65 64 2e 20 the.call.......will.be.inlined..
2b300 49 66 20 74 68 65 20 63 61 6c 6c 20 63 61 6e 6e 6f 74 20 62 65 20 69 6e 6c 69 6e 65 64 2c 20 61 If.the.call.cannot.be.inlined,.a
2b320 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 20 69 73 20 65 6d 69 74 74 65 64 2e 0a 20 20 20 20 20 .compile.error.is.emitted.......
2b340 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e .</p>.......<p>See.also:</p><ul>
2b360 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6e 6f 49 6e 6c 69 6e 65 43 61 6c 6c 22 3e 40 6e 6f .<li><a.href="#noInlineCall">@no
2b380 49 6e 6c 69 6e 65 43 61 6c 6c 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 InlineCall</a></li>.</ul>.......
2b3a0 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 69 6e 74 54 6f 50 74 72 22 3e 40 69 6e 74 54 6f ........<h2.id="intToPtr">@intTo
2b3c0 50 74 72 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 Ptr</h2>........<pre><code.class
2b3e0 3d 22 7a 69 67 22 3e 40 69 6e 74 54 6f 50 74 72 28 63 6f 6d 70 74 69 6d 65 20 44 65 73 74 54 79 ="zig">@intToPtr(comptime.DestTy
2b400 70 65 3a 20 74 79 70 65 2c 20 69 6e 74 3a 20 75 73 69 7a 65 29 20 2d 26 67 74 3b 20 44 65 73 74 pe:.type,.int:.usize).-&gt;.Dest
2b420 54 79 70 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 Type</code></pre>.......<p>.....
2b440 20 20 43 6f 6e 76 65 72 74 73 20 61 6e 20 69 6e 74 65 67 65 72 20 74 6f 20 61 20 70 6f 69 6e 74 ..Converts.an.integer.to.a.point
2b460 65 72 2e 20 54 6f 20 63 6f 6e 76 65 72 74 20 74 68 65 20 6f 74 68 65 72 20 77 61 79 2c 20 75 73 er..To.convert.the.other.way,.us
2b480 65 20 3c 61 20 68 72 65 66 3d 22 23 70 74 72 54 6f 49 6e 74 22 3e 40 70 74 72 54 6f 49 6e 74 3c e.<a.href="#ptrToInt">@ptrToInt<
2b4a0 2f 61 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 /a>........</p>..............<h2
2b4c0 20 69 64 3d 22 49 6e 74 54 79 70 65 22 3e 40 49 6e 74 54 79 70 65 3c 2f 68 32 3e 0a 0a 20 20 20 .id="IntType">@IntType</h2>.....
2b4e0 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 49 6e 74 54 79 ...<pre><code.class="zig">@IntTy
2b500 70 65 28 63 6f 6d 70 74 69 6d 65 20 69 73 5f 73 69 67 6e 65 64 3a 20 62 6f 6f 6c 2c 20 63 6f 6d pe(comptime.is_signed:.bool,.com
2b520 70 74 69 6d 65 20 62 69 74 5f 63 6f 75 6e 74 3a 20 75 38 29 20 2d 26 67 74 3b 20 74 79 70 65 3c ptime.bit_count:.u8).-&gt;.type<
2b540 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 /code></pre>.......<p>.......Thi
2b560 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 6e 20 69 6e 74 65 67 65 72 20 74 79 s.function.returns.an.integer.ty
2b580 70 65 20 77 69 74 68 20 74 68 65 20 67 69 76 65 6e 20 73 69 67 6e 6e 65 73 73 20 61 6e 64 20 62 pe.with.the.given.signness.and.b
2b5a0 69 74 20 63 6f 75 6e 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 it.count........</p>............
2b5c0 20 20 3c 68 32 20 69 64 3d 22 6d 61 78 56 61 6c 75 65 22 3e 40 6d 61 78 56 61 6c 75 65 3c 2f 68 ..<h2.id="maxValue">@maxValue</h
2b5e0 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 2>........<pre><code.class="zig"
2b600 3e 40 6d 61 78 56 61 6c 75 65 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 29 20 2d 26 67 >@maxValue(comptime.T:.type).-&g
2b620 74 3b 20 28 6e 75 6d 62 65 72 20 6c 69 74 65 72 61 6c 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e t;.(number.literal)</code></pre>
2b640 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 .......<p>.......This.function.r
2b660 65 74 75 72 6e 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 eturns.the.maximum.value.of.the.
2b680 69 6e 74 65 67 65 72 20 74 79 70 65 20 3c 63 6f 64 65 3e 54 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 integer.type.<code>T</code>.....
2b6a0 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 72 65 73 75 ...</p>.......<p>.......The.resu
2b6c0 6c 74 20 69 73 20 61 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 20 63 6f 6e 73 74 61 6e 74 2e 0a 20 lt.is.a.compile.time.constant...
2b6e0 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 6d .....</p>..............<h2.id="m
2b700 65 6d 62 65 72 43 6f 75 6e 74 22 3e 40 6d 65 6d 62 65 72 43 6f 75 6e 74 3c 2f 68 32 3e 0a 0a 20 emberCount">@memberCount</h2>...
2b720 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 6d 65 6d .....<pre><code.class="zig">@mem
2b740 62 65 72 43 6f 75 6e 74 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 29 20 2d 26 67 74 3b berCount(comptime.T:.type).-&gt;
2b760 20 28 6e 75 6d 62 65 72 20 6c 69 74 65 72 61 6c 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 .(number.literal)</code></pre>..
2b780 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 .....<p>.......This.function.ret
2b7a0 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6d 65 6d 62 65 72 73 20 69 6e 20 61 20 urns.the.number.of.members.in.a.
2b7c0 73 74 72 75 63 74 2c 20 65 6e 75 6d 2c 20 6f 72 20 75 6e 69 6f 6e 20 74 79 70 65 2e 0a 20 20 20 struct,.enum,.or.union.type.....
2b7e0 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 72 65 73 75 ...</p>.......<p>.......The.resu
2b800 6c 74 20 69 73 20 61 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 20 63 6f 6e 73 74 61 6e 74 2e 0a 20 lt.is.a.compile.time.constant...
2b820 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 74 20 64 6f 65 .....</p>.......<p>.......It.doe
2b840 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 20 66 75 6e 63 74 69 6f 6e 73 2c 20 76 61 72 69 61 62 6c s.not.include.functions,.variabl
2b860 65 73 2c 20 6f 72 20 63 6f 6e 73 74 61 6e 74 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 es,.or.constants........</p>....
2b880 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 6d 65 6d 62 65 72 4e 61 6d 65 22 3e 40 6d ..........<h2.id="memberName">@m
2b8a0 65 6d 62 65 72 4e 61 6d 65 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 emberName</h2>........<pre><code
2b8c0 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 6d 65 6d 62 65 72 4e 61 6d 65 28 63 6f 6d 70 74 69 6d .class="zig">@memberName(comptim
2b8e0 65 20 54 3a 20 74 79 70 65 2c 20 63 6f 6d 70 74 69 6d 65 20 69 6e 64 65 78 3a 20 75 73 69 7a 65 e.T:.type,.comptime.index:.usize
2b900 29 20 2d 26 67 74 3b 20 5b 4e 5d 75 38 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 ).-&gt;.[N]u8</code></pre>......
2b920 20 3c 70 3e 52 65 74 75 72 6e 73 20 74 68 65 20 66 69 65 6c 64 20 6e 61 6d 65 20 6f 66 20 61 20 .<p>Returns.the.field.name.of.a.
2b940 73 74 72 75 63 74 2c 20 75 6e 69 6f 6e 2c 20 6f 72 20 65 6e 75 6d 2e 3c 2f 70 3e 0a 20 20 20 20 struct,.union,.or.enum.</p>.....
2b960 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 20 63 6f 6d 70 ..<p>.......The.result.is.a.comp
2b980 69 6c 65 20 74 69 6d 65 20 63 6f 6e 73 74 61 6e 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 ile.time.constant........</p>...
2b9a0 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 74 20 64 6f 65 73 20 6e 6f 74 20 69 6e 63 6c 75 64 ....<p>.......It.does.not.includ
2b9c0 65 20 66 75 6e 63 74 69 6f 6e 73 2c 20 76 61 72 69 61 62 6c 65 73 2c 20 6f 72 20 63 6f 6e 73 74 e.functions,.variables,.or.const
2b9e0 61 6e 74 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 ants........</p>..............<h
2ba00 32 20 69 64 3d 22 6d 65 6d 62 65 72 54 79 70 65 22 3e 40 6d 65 6d 62 65 72 54 79 70 65 3c 2f 68 2.id="memberType">@memberType</h
2ba20 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 2>........<pre><code.class="zig"
2ba40 3e 40 6d 65 6d 62 65 72 54 79 70 65 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 2c 20 63 >@memberType(comptime.T:.type,.c
2ba60 6f 6d 70 74 69 6d 65 20 69 6e 64 65 78 3a 20 75 73 69 7a 65 29 20 2d 26 67 74 3b 20 74 79 70 65 omptime.index:.usize).-&gt;.type
2ba80 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 52 65 74 75 72 6e 73 20 74 </code></pre>.......<p>Returns.t
2baa0 68 65 20 66 69 65 6c 64 20 74 79 70 65 20 6f 66 20 61 20 73 74 72 75 63 74 20 6f 72 20 75 6e 69 he.field.type.of.a.struct.or.uni
2bac0 6f 6e 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 6d 65 6d on.</p>..............<h2.id="mem
2bae0 63 70 79 22 3e 40 6d 65 6d 63 70 79 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 cpy">@memcpy</h2>........<pre><c
2bb00 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 6d 65 6d 63 70 79 28 6e 6f 61 6c 69 61 73 20 ode.class="zig">@memcpy(noalias.
2bb20 64 65 73 74 3a 20 26 61 6d 70 3b 75 38 2c 20 6e 6f 61 6c 69 61 73 20 73 6f 75 72 63 65 3a 20 26 dest:.&amp;u8,.noalias.source:.&
2bb40 61 6d 70 3b 63 6f 6e 73 74 20 75 38 2c 20 62 79 74 65 5f 63 6f 75 6e 74 3a 20 75 73 69 7a 65 29 amp;const.u8,.byte_count:.usize)
2bb60 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 </code></pre>.......<p>.......Th
2bb80 69 73 20 66 75 6e 63 74 69 6f 6e 20 63 6f 70 69 65 73 20 62 79 74 65 73 20 66 72 6f 6d 20 6f 6e is.function.copies.bytes.from.on
2bba0 65 20 72 65 67 69 6f 6e 20 6f 66 20 6d 65 6d 6f 72 79 20 74 6f 20 61 6e 6f 74 68 65 72 2e 20 3c e.region.of.memory.to.another..<
2bbc0 63 6f 64 65 3e 64 65 73 74 3c 2f 63 6f 64 65 3e 20 61 6e 64 0a 20 20 20 20 20 20 3c 63 6f 64 65 code>dest</code>.and.......<code
2bbe0 3e 73 6f 75 72 63 65 3c 2f 63 6f 64 65 3e 20 61 72 65 20 62 6f 74 68 20 70 6f 69 6e 74 65 72 73 >source</code>.are.both.pointers
2bc00 20 61 6e 64 20 6d 75 73 74 20 6e 6f 74 20 6f 76 65 72 6c 61 70 2e 0a 20 20 20 20 20 20 3c 2f 70 .and.must.not.overlap........</p
2bc20 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 >.......<p>.......This.function.
2bc40 69 73 20 61 20 6c 6f 77 20 6c 65 76 65 6c 20 69 6e 74 72 69 6e 73 69 63 20 77 69 74 68 20 6e 6f is.a.low.level.intrinsic.with.no
2bc60 20 73 61 66 65 74 79 20 6d 65 63 68 61 6e 69 73 6d 73 2e 20 4d 6f 73 74 20 63 6f 64 65 0a 20 20 .safety.mechanisms..Most.code...
2bc80 20 20 20 20 73 68 6f 75 6c 64 20 6e 6f 74 20 75 73 65 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e ....should.not.use.this.function
2bca0 2c 20 69 6e 73 74 65 61 64 20 75 73 69 6e 67 20 73 6f 6d 65 74 68 69 6e 67 20 6c 69 6b 65 20 74 ,.instead.using.something.like.t
2bcc0 68 69 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 his:.......</p>.......<pre><code
2bce0 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 6f 72 20 28 73 6f 75 72 63 65 5b 30 2e 2e 2e 62 79 74 .class="zig">for.(source[0...byt
2bd00 65 5f 63 6f 75 6e 74 5d 29 20 7c 62 2c 20 69 7c 20 64 65 73 74 5b 69 5d 20 3d 20 62 3b 3c 2f 63 e_count]).|b,.i|.dest[i].=.b;</c
2bd20 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 6f ode></pre>.......<p>.......The.o
2bd40 70 74 69 6d 69 7a 65 72 20 69 73 20 69 6e 74 65 6c 6c 69 67 65 6e 74 20 65 6e 6f 75 67 68 20 74 ptimizer.is.intelligent.enough.t
2bd60 6f 20 74 75 72 6e 20 74 68 65 20 61 62 6f 76 65 20 73 6e 69 70 70 65 74 20 69 6e 74 6f 20 61 20 o.turn.the.above.snippet.into.a.
2bd80 6d 65 6d 63 70 79 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 68 65 72 memcpy........</p>.......<p>Ther
2bda0 65 20 69 73 20 61 6c 73 6f 20 61 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20 66 75 6e e.is.also.a.standard.library.fun
2bdc0 63 74 69 6f 6e 20 66 6f 72 20 74 68 69 73 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c ction.for.this:</p>.......<pre><
2bde0 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 6d 65 6d 20 3d 20 40 69 6d code.class="zig">const.mem.=.@im
2be00 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 65 6d 3b 0a 6d 65 6d 2e 63 6f 70 79 28 75 38 2c 20 64 65 port("std").mem;.mem.copy(u8,.de
2be20 73 74 5b 30 2e 2e 2e 62 79 74 65 5f 63 6f 75 6e 74 5d 2c 20 73 6f 75 72 63 65 5b 30 2e 2e 2e 62 st[0...byte_count],.source[0...b
2be40 79 74 65 5f 63 6f 75 6e 74 5d 29 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 yte_count]);</code></pre>.......
2be60 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 6d 65 6d 73 65 74 22 3e 40 6d 65 6d 73 65 74 3c 2f .......<h2.id="memset">@memset</
2be80 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 h2>........<pre><code.class="zig
2bea0 22 3e 40 6d 65 6d 73 65 74 28 64 65 73 74 3a 20 26 61 6d 70 3b 75 38 2c 20 63 3a 20 75 38 2c 20 ">@memset(dest:.&amp;u8,.c:.u8,.
2bec0 62 79 74 65 5f 63 6f 75 6e 74 3a 20 75 73 69 7a 65 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a byte_count:.usize)</code></pre>.
2bee0 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 73 65 ......<p>.......This.function.se
2bf00 74 73 20 61 20 72 65 67 69 6f 6e 20 6f 66 20 6d 65 6d 6f 72 79 20 74 6f 20 3c 63 6f 64 65 3e 63 ts.a.region.of.memory.to.<code>c
2bf20 3c 2f 63 6f 64 65 3e 2e 20 3c 63 6f 64 65 3e 64 65 73 74 3c 2f 63 6f 64 65 3e 20 69 73 20 61 20 </code>..<code>dest</code>.is.a.
2bf40 70 6f 69 6e 74 65 72 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 pointer........</p>.......<p>...
2bf60 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 20 6c 6f 77 20 6c 65 76 65 6c ....This.function.is.a.low.level
2bf80 20 69 6e 74 72 69 6e 73 69 63 20 77 69 74 68 20 6e 6f 20 73 61 66 65 74 79 20 6d 65 63 68 61 6e .intrinsic.with.no.safety.mechan
2bfa0 69 73 6d 73 2e 20 4d 6f 73 74 0a 20 20 20 20 20 20 63 6f 64 65 20 73 68 6f 75 6c 64 20 6e 6f 74 isms..Most.......code.should.not
2bfc0 20 75 73 65 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 2c 20 69 6e 73 74 65 61 64 20 75 73 69 6e .use.this.function,.instead.usin
2bfe0 67 20 73 6f 6d 65 74 68 69 6e 67 20 6c 69 6b 65 20 74 68 69 73 3a 0a 20 20 20 20 20 20 3c 2f 70 g.something.like.this:.......</p
2c000 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 >.......<pre><code.class="zig">f
2c020 6f 72 20 28 64 65 73 74 5b 30 2e 2e 2e 62 79 74 65 5f 63 6f 75 6e 74 5d 29 20 7c 2a 62 7c 20 2a or.(dest[0...byte_count]).|*b|.*
2c040 62 20 3d 20 63 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 b.=.c;</code></pre>.......<p>...
2c060 20 20 20 20 54 68 65 20 6f 70 74 69 6d 69 7a 65 72 20 69 73 20 69 6e 74 65 6c 6c 69 67 65 6e 74 ....The.optimizer.is.intelligent
2c080 20 65 6e 6f 75 67 68 20 74 6f 20 74 75 72 6e 20 74 68 65 20 61 62 6f 76 65 20 73 6e 69 70 70 65 .enough.to.turn.the.above.snippe
2c0a0 74 20 69 6e 74 6f 20 61 20 6d 65 6d 73 65 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 t.into.a.memset........</p>.....
2c0c0 20 20 3c 70 3e 54 68 65 72 65 20 69 73 20 61 6c 73 6f 20 61 20 73 74 61 6e 64 61 72 64 20 6c 69 ..<p>There.is.also.a.standard.li
2c0e0 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 74 68 69 73 3a 3c 2f 70 3e 0a 20 20 20 brary.function.for.this:</p>....
2c100 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 3e 63 6f 6e 73 74 20 6d 65 6d 20 3d 20 40 69 6d 70 6f 72 ...<pre><code>const.mem.=.@impor
2c120 74 28 22 73 74 64 22 29 2e 6d 65 6d 3b 0a 6d 65 6d 2e 73 65 74 28 75 38 2c 20 64 65 73 74 2c 20 t("std").mem;.mem.set(u8,.dest,.
2c140 63 29 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 c);</code></pre>..............<h
2c160 32 20 69 64 3d 22 6d 69 6e 56 61 6c 75 65 22 3e 40 6d 69 6e 56 61 6c 75 65 3c 2f 68 32 3e 0a 0a 2.id="minValue">@minValue</h2>..
2c180 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 6d 69 ......<pre><code.class="zig">@mi
2c1a0 6e 56 61 6c 75 65 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 29 20 2d 26 67 74 3b 20 28 nValue(comptime.T:.type).-&gt;.(
2c1c0 6e 75 6d 62 65 72 20 6c 69 74 65 72 61 6c 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 number.literal)</code></pre>....
2c1e0 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 ...<p>.......This.function.retur
2c200 6e 73 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 69 6e 74 65 ns.the.minimum.value.of.the.inte
2c220 67 65 72 20 74 79 70 65 20 54 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e ger.type.T........</p>.......<p>
2c240 0a 20 20 20 20 20 20 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 20 63 6f 6d 70 69 6c 65 20 74 .......The.result.is.a.compile.t
2c260 69 6d 65 20 63 6f 6e 73 74 61 6e 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a ime.constant........</p>........
2c280 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 6d 6f 64 22 3e 40 6d 6f 64 3c 2f 68 32 3e 0a 0a 20 20 ......<h2.id="mod">@mod</h2>....
2c2a0 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 6d 6f 64 28 ....<pre><code.class="zig">@mod(
2c2c0 6e 75 6d 65 72 61 74 6f 72 3a 20 54 2c 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 3a 20 54 29 20 2d 26 numerator:.T,.denominator:.T).-&
2c2e0 67 74 3b 20 54 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 gt;.T</code></pre>.......<p>....
2c300 20 20 20 4d 6f 64 75 6c 75 73 20 64 69 76 69 73 69 6f 6e 2e 20 46 6f 72 20 75 6e 73 69 67 6e 65 ...Modulus.division..For.unsigne
2c320 64 20 69 6e 74 65 67 65 72 73 20 74 68 69 73 20 69 73 20 74 68 65 20 73 61 6d 65 20 61 73 0a 20 d.integers.this.is.the.same.as..
2c340 20 20 20 20 20 3c 63 6f 64 65 3e 6e 75 6d 65 72 61 74 6f 72 20 25 20 64 65 6e 6f 6d 69 6e 61 74 .....<code>numerator.%.denominat
2c360 6f 72 3c 2f 63 6f 64 65 3e 2e 20 43 61 6c 6c 65 72 20 67 75 61 72 61 6e 74 65 65 73 20 3c 63 6f or</code>..Caller.guarantees.<co
2c380 64 65 3e 64 65 6e 6f 6d 69 6e 61 74 6f 72 20 26 67 74 3b 20 30 3c 2f 63 6f 64 65 3e 2e 0a 20 20 de>denominator.&gt;.0</code>....
2c3a0 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e ....</p>.......<ul>.........<li>
2c3c0 3c 63 6f 64 65 3e 40 6d 6f 64 28 2d 35 2c 20 33 29 20 3d 3d 20 31 3c 2f 63 6f 64 65 3e 3c 2f 6c <code>@mod(-5,.3).==.1</code></l
2c3e0 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 64 69 76 46 6c 6f 6f 72 28 61 i>.........<li><code>@divFloor(a
2c400 2c 20 62 29 20 2b 20 40 6d 6f 64 28 61 2c 20 62 29 20 3d 3d 20 61 3c 2f 63 6f 64 65 3e 3c 2f 6c ,.b).+.@mod(a,.b).==.a</code></l
2c420 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 46 6f 72 20 61 20 66 75 i>.......</ul>.......<p>For.a.fu
2c440 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 61 6e 20 65 72 72 6f 72 20 63 6f 64 nction.that.returns.an.error.cod
2c460 65 2c 20 73 65 65 20 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 61 74 68 e,.see.<code>@import("std").math
2c480 2e 6d 6f 64 3c 2f 63 6f 64 65 3e 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c .mod</code>.</p>.......<p>See.al
2c4a0 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 72 65 6d 22 3e 40 so:</p><ul>.<li><a.href="#rem">@
2c4c0 72 65 6d 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 rem</a></li>.</ul>..............
2c4e0 20 3c 68 32 20 69 64 3d 22 6d 75 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 22 3e 40 6d 75 6c 57 69 .<h2.id="mulWithOverflow">@mulWi
2c500 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 thOverflow</h2>........<pre><cod
2c520 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 6d 75 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 28 63 e.class="zig">@mulWithOverflow(c
2c540 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 2c 20 61 3a 20 54 2c 20 62 3a 20 54 2c 20 72 65 73 omptime.T:.type,.a:.T,.b:.T,.res
2c560 75 6c 74 3a 20 26 61 6d 70 3b 54 29 20 2d 26 67 74 3b 20 62 6f 6f 6c 3c 2f 63 6f 64 65 3e 3c 2f ult:.&amp;T).-&gt;.bool</code></
2c580 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 50 65 72 66 6f 72 6d 73 20 3c 63 pre>.......<p>.......Performs.<c
2c5a0 6f 64 65 3e 2a 72 65 73 75 6c 74 20 3d 20 61 20 2a 20 62 3c 2f 63 6f 64 65 3e 2e 20 49 66 20 6f ode>*result.=.a.*.b</code>..If.o
2c5c0 76 65 72 66 6c 6f 77 20 6f 72 20 75 6e 64 65 72 66 6c 6f 77 20 6f 63 63 75 72 73 2c 0a 20 20 20 verflow.or.underflow.occurs,....
2c5e0 20 20 20 73 74 6f 72 65 73 20 74 68 65 20 6f 76 65 72 66 6c 6f 77 65 64 20 62 69 74 73 20 69 6e ...stores.the.overflowed.bits.in
2c600 20 3c 63 6f 64 65 3e 72 65 73 75 6c 74 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 72 65 74 75 72 6e 73 .<code>result</code>.and.returns
2c620 20 3c 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 49 66 20 6e 6f 20 .<code>true</code>........If.no.
2c640 6f 76 65 72 66 6c 6f 77 20 6f 72 20 75 6e 64 65 72 66 6c 6f 77 20 6f 63 63 75 72 73 2c 20 72 65 overflow.or.underflow.occurs,.re
2c660 74 75 72 6e 73 20 3c 63 6f 64 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 turns.<code>false</code>........
2c680 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 6e 6f 49 6e 6c 69 </p>..............<h2.id="noInli
2c6a0 6e 65 43 61 6c 6c 22 3e 40 6e 6f 49 6e 6c 69 6e 65 43 61 6c 6c 3c 2f 68 32 3e 0a 0a 20 20 20 20 neCall">@noInlineCall</h2>......
2c6c0 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 6e 6f 49 6e 6c 69 ..<pre><code.class="zig">@noInli
2c6e0 6e 65 43 61 6c 6c 28 66 75 6e 63 74 69 6f 6e 3a 20 76 61 72 2c 20 61 72 67 73 3a 20 2e 2e 2e 29 neCall(function:.var,.args:....)
2c700 20 2d 26 67 74 3b 20 76 61 72 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 .-&gt;.var</code></pre>.......<p
2c720 3e 0a 20 20 20 20 20 20 54 68 69 73 20 63 61 6c 6c 73 20 61 20 66 75 6e 63 74 69 6f 6e 2c 20 69 >.......This.calls.a.function,.i
2c740 6e 20 74 68 65 20 73 61 6d 65 20 77 61 79 20 74 68 61 74 20 69 6e 76 6f 6b 69 6e 67 20 61 6e 20 n.the.same.way.that.invoking.an.
2c760 65 78 70 72 65 73 73 69 6f 6e 20 77 69 74 68 20 70 61 72 65 6e 74 68 65 73 65 73 20 64 6f 65 73 expression.with.parentheses.does
2c780 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c :.......</p>.......<pre><code.cl
2c7a0 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 ass="zig">const.assert.=.@import
2c7c0 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 74 65 73 74 20 22 6e 6f 69 6e ("std").debug.assert;.test."noin
2c7e0 6c 69 6e 65 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 22 20 7b 0a 20 20 20 20 61 73 73 65 72 74 line.function.call".{.....assert
2c800 28 40 6e 6f 49 6e 6c 69 6e 65 43 61 6c 6c 28 61 64 64 2c 20 33 2c 20 39 29 20 3d 3d 20 31 32 29 (@noInlineCall(add,.3,.9).==.12)
2c820 3b 0a 7d 0a 0a 66 6e 20 61 64 64 28 61 3a 20 69 33 32 2c 20 62 3a 20 69 33 32 29 20 2d 26 67 74 ;.}..fn.add(a:.i32,.b:.i32).-&gt
2c840 3b 20 69 33 32 20 7b 20 61 20 2b 20 62 20 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 ;.i32.{.a.+.b.}</code></pre>....
2c860 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 55 6e 6c 69 6b 65 20 61 20 6e 6f 72 6d 61 6c 20 66 75 6e ...<p>.......Unlike.a.normal.fun
2c880 63 74 69 6f 6e 20 63 61 6c 6c 2c 20 68 6f 77 65 76 65 72 2c 20 3c 63 6f 64 65 3e 40 6e 6f 49 6e ction.call,.however,.<code>@noIn
2c8a0 6c 69 6e 65 43 61 6c 6c 3c 2f 63 6f 64 65 3e 20 67 75 61 72 61 6e 74 65 65 73 20 74 68 61 74 20 lineCall</code>.guarantees.that.
2c8c0 74 68 65 20 63 61 6c 6c 0a 20 20 20 20 20 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 69 6e 6c 69 6e the.call.......will.not.be.inlin
2c8e0 65 64 2e 20 49 66 20 74 68 65 20 63 61 6c 6c 20 6d 75 73 74 20 62 65 20 69 6e 6c 69 6e 65 64 2c ed..If.the.call.must.be.inlined,
2c900 20 61 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 20 69 73 20 65 6d 69 74 74 65 64 2e 0a 20 20 20 .a.compile.error.is.emitted.....
2c920 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 ...</p>.......<p>See.also:</p><u
2c940 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 6c 69 6e 65 43 61 6c 6c 22 3e 40 69 6e l>.<li><a.href="#inlineCall">@in
2c960 6c 69 6e 65 43 61 6c 6c 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a lineCall</a></li>.</ul>.........
2c980 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 6f 66 66 73 65 74 4f 66 22 3e 40 6f 66 66 73 65 74 4f ......<h2.id="offsetOf">@offsetO
2c9a0 66 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 f</h2>........<pre><code.class="
2c9c0 7a 69 67 22 3e 40 6f 66 66 73 65 74 4f 66 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 2c zig">@offsetOf(comptime.T:.type,
2c9e0 20 63 6f 6d 70 74 69 6d 65 20 66 69 65 6c 64 5f 6e 61 6d 65 3a 20 5b 5d 20 63 6f 6e 73 74 20 75 .comptime.field_name:.[].const.u
2ca00 38 29 20 2d 26 67 74 3b 20 28 6e 75 6d 62 65 72 20 6c 69 74 65 72 61 6c 29 3c 2f 63 6f 64 65 3e 8).-&gt;.(number.literal)</code>
2ca20 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 </pre>.......<p>.......This.func
2ca40 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 62 79 74 65 20 6f 66 66 73 65 74 20 6f 66 20 tion.returns.the.byte.offset.of.
2ca60 61 20 66 69 65 6c 64 20 72 65 6c 61 74 69 76 65 20 74 6f 20 69 74 73 20 63 6f 6e 74 61 69 6e 69 a.field.relative.to.its.containi
2ca80 6e 67 20 73 74 72 75 63 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 ng.struct........</p>...........
2caa0 20 20 20 3c 68 32 20 69 64 3d 22 4f 70 61 71 75 65 54 79 70 65 22 3e 40 4f 70 61 71 75 65 54 79 ...<h2.id="OpaqueType">@OpaqueTy
2cac0 70 65 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d pe</h2>........<pre><code.class=
2cae0 22 7a 69 67 22 3e 40 4f 70 61 71 75 65 54 79 70 65 28 29 20 2d 26 67 74 3b 20 74 79 70 65 3c 2f "zig">@OpaqueType().-&gt;.type</
2cb00 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 43 72 65 61 code></pre>.......<p>.......Crea
2cb20 74 65 73 20 61 20 6e 65 77 20 74 79 70 65 20 77 69 74 68 20 61 6e 20 75 6e 6b 6e 6f 77 6e 20 73 tes.a.new.type.with.an.unknown.s
2cb40 69 7a 65 20 61 6e 64 20 61 6c 69 67 6e 6d 65 6e 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 ize.and.alignment........</p>...
2cb60 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 69 73 20 74 79 70 69 63 61 6c 6c 79 20 ....<p>.......This.is.typically.
2cb80 75 73 65 64 20 66 6f 72 20 74 79 70 65 20 73 61 66 65 74 79 20 77 68 65 6e 20 69 6e 74 65 72 61 used.for.type.safety.when.intera
2cba0 63 74 69 6e 67 20 77 69 74 68 20 43 20 63 6f 64 65 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 cting.with.C.code.that.does.not.
2cbc0 65 78 70 6f 73 65 20 73 74 72 75 63 74 20 64 65 74 61 69 6c 73 2e 0a 20 20 20 20 20 20 45 78 61 expose.struct.details........Exa
2cbe0 6d 70 6c 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d mple:.......</p>.......<p.class=
2cc00 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c "file">test.zig</p><pre><code.cl
2cc20 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 44 65 72 70 20 3d 20 40 4f 70 61 71 75 65 54 79 ass="zig">const.Derp.=.@OpaqueTy
2cc40 70 65 28 29 3b 0a 63 6f 6e 73 74 20 57 61 74 20 3d 20 40 4f 70 61 71 75 65 54 79 70 65 28 29 3b pe();.const.Wat.=.@OpaqueType();
2cc60 0a 0a 65 78 74 65 72 6e 20 66 6e 20 62 61 72 28 64 3a 20 26 61 6d 70 3b 44 65 72 70 29 20 76 6f ..extern.fn.bar(d:.&amp;Derp).vo
2cc80 69 64 3b 0a 65 78 70 6f 72 74 20 66 6e 20 66 6f 6f 28 77 3a 20 26 61 6d 70 3b 57 61 74 29 20 76 id;.export.fn.foo(w:.&amp;Wat).v
2cca0 6f 69 64 20 7b 0a 20 20 20 20 62 61 72 28 77 29 3b 0a 7d 0a 0a 74 65 73 74 20 26 71 75 6f 74 3b oid.{.....bar(w);.}..test.&quot;
2ccc0 63 61 6c 6c 20 66 6f 6f 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 66 6f 6f 28 75 6e 64 65 66 69 6e call.foo&quot;.{.....foo(undefin
2cce0 65 64 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c ed);.}</code></pre><pre><code.cl
2cd00 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a ass="shell">$.zig.test.test.zig.
2cd20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 <span.class="t0_1">/home/andy/de
2cd40 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 36 3a 39 3a 20 3c v/zig/docgen_tmp/test.zig:6:9:.<
2cd60 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 6f 72 3a /span><span.class="t31_1">error:
2cd80 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 65 78 70 65 63 </span><span.class="t0_1">.expec
2cda0 74 65 64 20 74 79 70 65 20 27 26 61 6d 70 3b 44 65 72 70 27 2c 20 66 6f 75 6e 64 20 27 26 61 6d ted.type.'&amp;Derp',.found.'&am
2cdc0 70 3b 57 61 74 27 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 62 61 72 28 77 29 3b 0a 20 20 20 20 20 20 p;Wat'</span>.....bar(w);.......
2cde0 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c ..<span.class="t32_1">^</span>.<
2ce00 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 /code></pre>...............<h2.i
2ce20 64 3d 22 70 61 6e 69 63 22 3e 40 70 61 6e 69 63 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 d="panic">@panic</h2>........<pr
2ce40 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 70 61 6e 69 63 28 6d 65 73 73 61 e><code.class="zig">@panic(messa
2ce60 67 65 3a 20 5b 5d 63 6f 6e 73 74 20 75 38 29 20 2d 26 67 74 3b 20 6e 6f 72 65 74 75 72 6e 3c 2f ge:.[]const.u8).-&gt;.noreturn</
2ce80 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 76 6f code></pre>.......<p>.......Invo
2cea0 6b 65 73 20 74 68 65 20 70 61 6e 69 63 20 68 61 6e 64 6c 65 72 20 66 75 6e 63 74 69 6f 6e 2e 20 kes.the.panic.handler.function..
2cec0 42 79 20 64 65 66 61 75 6c 74 20 74 68 65 20 70 61 6e 69 63 20 68 61 6e 64 6c 65 72 20 66 75 6e By.default.the.panic.handler.fun
2cee0 63 74 69 6f 6e 0a 20 20 20 20 20 20 63 61 6c 6c 73 20 74 68 65 20 70 75 62 6c 69 63 20 3c 63 6f ction.......calls.the.public.<co
2cf00 64 65 3e 70 61 6e 69 63 3c 2f 63 6f 64 65 3e 20 66 75 6e 63 74 69 6f 6e 20 65 78 70 6f 73 65 64 de>panic</code>.function.exposed
2cf20 20 69 6e 20 74 68 65 20 72 6f 6f 74 20 73 6f 75 72 63 65 20 66 69 6c 65 2c 20 6f 72 0a 20 20 20 .in.the.root.source.file,.or....
2cf40 20 20 20 69 66 20 74 68 65 72 65 20 69 73 20 6e 6f 74 20 6f 6e 65 20 73 70 65 63 69 66 69 65 64 ...if.there.is.not.one.specified
2cf60 2c 20 69 6e 76 6f 6b 65 73 20 74 68 65 20 6f 6e 65 20 70 72 6f 76 69 64 65 64 20 69 6e 20 3c 63 ,.invokes.the.one.provided.in.<c
2cf80 6f 64 65 3e 73 74 64 2f 73 70 65 63 69 61 6c 2f 70 61 6e 69 63 2e 7a 69 67 3c 2f 63 6f 64 65 3e ode>std/special/panic.zig</code>
2cfa0 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 47 65 6e 65 72 61 6c 6c 79 20 ........</p>.......<p>Generally.
2cfc0 69 74 20 69 73 20 62 65 74 74 65 72 20 74 6f 20 75 73 65 20 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 it.is.better.to.use.<code>@impor
2cfe0 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 70 61 6e 69 63 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 t("std").debug.panic</code>.....
2d000 20 20 20 48 6f 77 65 76 65 72 2c 20 3c 63 6f 64 65 3e 40 70 61 6e 69 63 3c 2f 63 6f 64 65 3e 20 ...However,.<code>@panic</code>.
2d020 63 61 6e 20 62 65 20 75 73 65 66 75 6c 20 66 6f 72 20 32 20 73 63 65 6e 61 72 69 6f 73 3a 0a 20 can.be.useful.for.2.scenarios:..
2d040 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 .....</p>.......<ul>.........<li
2d060 3e 46 72 6f 6d 20 6c 69 62 72 61 72 79 20 63 6f 64 65 2c 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 >From.library.code,.calling.the.
2d080 70 72 6f 67 72 61 6d 6d 65 72 27 73 20 70 61 6e 69 63 20 66 75 6e 63 74 69 6f 6e 20 69 66 20 74 programmer's.panic.function.if.t
2d0a0 68 65 79 20 65 78 70 6f 73 65 64 20 6f 6e 65 20 69 6e 20 74 68 65 20 72 6f 6f 74 20 73 6f 75 72 hey.exposed.one.in.the.root.sour
2d0c0 63 65 20 66 69 6c 65 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 57 68 65 6e 20 6d ce.file.</li>.........<li>When.m
2d0e0 69 78 69 6e 67 20 43 20 61 6e 64 20 5a 69 67 20 63 6f 64 65 2c 20 63 61 6c 6c 69 6e 67 20 74 68 ixing.C.and.Zig.code,.calling.th
2d100 65 20 63 61 6e 6f 6e 69 63 61 6c 20 70 61 6e 69 63 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e e.canonical.panic.implementation
2d120 20 61 63 72 6f 73 73 20 6d 75 6c 74 69 70 6c 65 20 2e 6f 20 66 69 6c 65 73 2e 3c 2f 6c 69 3e 0a .across.multiple..o.files.</li>.
2d140 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f ......</ul>.......<p>See.also:</
2d160 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 52 6f 6f 74 2d 53 6f 75 72 63 65 p><ul>.<li><a.href="#Root-Source
2d180 2d 46 69 6c 65 22 3e 52 6f 6f 74 20 53 6f 75 72 63 65 20 46 69 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e -File">Root.Source.File</a></li>
2d1a0 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 70 74 72 .</ul>...............<h2.id="ptr
2d1c0 43 61 73 74 22 3e 40 70 74 72 43 61 73 74 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e Cast">@ptrCast</h2>........<pre>
2d1e0 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 70 74 72 43 61 73 74 28 63 6f 6d 70 74 <code.class="zig">@ptrCast(compt
2d200 69 6d 65 20 44 65 73 74 54 79 70 65 3a 20 74 79 70 65 2c 20 76 61 6c 75 65 3a 20 76 61 72 29 20 ime.DestType:.type,.value:.var).
2d220 2d 26 67 74 3b 20 44 65 73 74 54 79 70 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 -&gt;.DestType</code></pre>.....
2d240 20 20 3c 70 3e 0a 20 20 20 20 20 20 43 6f 6e 76 65 72 74 73 20 61 20 70 6f 69 6e 74 65 72 20 6f ..<p>.......Converts.a.pointer.o
2d260 66 20 6f 6e 65 20 74 79 70 65 20 74 6f 20 61 20 70 6f 69 6e 74 65 72 20 6f 66 20 61 6e 6f 74 68 f.one.type.to.a.pointer.of.anoth
2d280 65 72 20 74 79 70 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 er.type........</p>.............
2d2a0 20 3c 68 32 20 69 64 3d 22 70 74 72 54 6f 49 6e 74 22 3e 40 70 74 72 54 6f 49 6e 74 3c 2f 68 32 .<h2.id="ptrToInt">@ptrToInt</h2
2d2c0 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e >........<pre><code.class="zig">
2d2e0 40 70 74 72 54 6f 49 6e 74 28 76 61 6c 75 65 3a 20 76 61 72 29 20 2d 26 67 74 3b 20 75 73 69 7a @ptrToInt(value:.var).-&gt;.usiz
2d300 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 43 e</code></pre>.......<p>.......C
2d320 6f 6e 76 65 72 74 73 20 3c 63 6f 64 65 3e 76 61 6c 75 65 3c 2f 63 6f 64 65 3e 20 74 6f 20 61 20 onverts.<code>value</code>.to.a.
2d340 3c 63 6f 64 65 3e 75 73 69 7a 65 3c 2f 63 6f 64 65 3e 20 77 68 69 63 68 20 69 73 20 74 68 65 20 <code>usize</code>.which.is.the.
2d360 61 64 64 72 65 73 73 20 6f 66 20 74 68 65 20 70 6f 69 6e 74 65 72 2e 20 3c 63 6f 64 65 3e 76 61 address.of.the.pointer..<code>va
2d380 6c 75 65 3c 2f 63 6f 64 65 3e 20 63 61 6e 20 62 65 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20 74 lue</code>.can.be.one.of.these.t
2d3a0 79 70 65 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 ypes:.......</p>.......<ul>.....
2d3c0 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 26 61 6d 70 3b 54 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e ....<li><code>&amp;T</code></li>
2d3e0 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 3f 26 61 6d 70 3b 54 3c 2f 63 6f 64 65 .........<li><code>?&amp;T</code
2d400 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 66 6e 28 29 3c 2f 63 ></li>.........<li><code>fn()</c
2d420 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 3f 66 6e 28 ode></li>.........<li><code>?fn(
2d440 29 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 )</code></li>.......</ul>.......
2d460 3c 70 3e 54 6f 20 63 6f 6e 76 65 72 74 20 74 68 65 20 6f 74 68 65 72 20 77 61 79 2c 20 75 73 65 <p>To.convert.the.other.way,.use
2d480 20 3c 61 20 68 72 65 66 3d 22 23 69 6e 74 54 6f 50 74 72 22 3e 40 69 6e 74 54 6f 50 74 72 3c 2f .<a.href="#intToPtr">@intToPtr</
2d4a0 61 3e 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 72 65 6d a></p>...............<h2.id="rem
2d4c0 22 3e 40 72 65 6d 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c ">@rem</h2>........<pre><code.cl
2d4e0 61 73 73 3d 22 7a 69 67 22 3e 40 72 65 6d 28 6e 75 6d 65 72 61 74 6f 72 3a 20 54 2c 20 64 65 6e ass="zig">@rem(numerator:.T,.den
2d500 6f 6d 69 6e 61 74 6f 72 3a 20 54 29 20 2d 26 67 74 3b 20 54 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 ominator:.T).-&gt;.T</code></pre
2d520 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 52 65 6d 61 69 6e 64 65 72 20 64 69 76 69 >.......<p>.......Remainder.divi
2d540 73 69 6f 6e 2e 20 46 6f 72 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 73 20 74 68 69 73 sion..For.unsigned.integers.this
2d560 20 69 73 20 74 68 65 20 73 61 6d 65 20 61 73 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 6e 75 6d 65 .is.the.same.as.......<code>nume
2d580 72 61 74 6f 72 20 25 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 3c 2f 63 6f 64 65 3e 2e 20 43 61 6c 6c rator.%.denominator</code>..Call
2d5a0 65 72 20 67 75 61 72 61 6e 74 65 65 73 20 3c 63 6f 64 65 3e 64 65 6e 6f 6d 69 6e 61 74 6f 72 20 er.guarantees.<code>denominator.
2d5c0 26 67 74 3b 20 30 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 &gt;.0</code>........</p>.......
2d5e0 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 72 65 6d 28 2d 35 2c 20 <ul>.........<li><code>@rem(-5,.
2d600 33 29 20 3d 3d 20 2d 32 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3).==.-2</code></li>.........<li
2d620 3e 3c 63 6f 64 65 3e 40 64 69 76 54 72 75 6e 63 28 61 2c 20 62 29 20 2b 20 40 72 65 6d 28 61 2c ><code>@divTrunc(a,.b).+.@rem(a,
2d640 20 62 29 20 3d 3d 20 61 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e .b).==.a</code></li>.......</ul>
2d660 0a 20 20 20 20 20 20 3c 70 3e 46 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 .......<p>For.a.function.that.re
2d680 74 75 72 6e 73 20 61 6e 20 65 72 72 6f 72 20 63 6f 64 65 2c 20 73 65 65 20 3c 63 6f 64 65 3e 40 turns.an.error.code,.see.<code>@
2d6a0 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 61 74 68 2e 72 65 6d 3c 2f 63 6f 64 65 3e 2e 3c 2f import("std").math.rem</code>.</
2d6c0 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c p>.......<p>See.also:</p><ul>.<l
2d6e0 69 3e 3c 61 20 68 72 65 66 3d 22 23 6d 6f 64 22 3e 40 6d 6f 64 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c i><a.href="#mod">@mod</a></li>.<
2d700 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 72 65 74 75 72 /ul>...............<h2.id="retur
2d720 6e 41 64 64 72 65 73 73 22 3e 40 72 65 74 75 72 6e 41 64 64 72 65 73 73 3c 2f 68 32 3e 0a 0a 20 nAddress">@returnAddress</h2>...
2d740 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 72 65 74 .....<pre><code.class="zig">@ret
2d760 75 72 6e 41 64 64 72 65 73 73 28 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 urnAddress()</code></pre>.......
2d780 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 <p>.......This.function.returns.
2d7a0 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 72 65 74 75 72 6e 20 61 64 64 72 65 73 73 20 a.pointer.to.the.return.address.
2d7c0 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 61 63 6b 0a 20 20 20 20 20 20 66 72 61 6d 65 of.the.current.stack.......frame
2d7e0 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 ........</p>.......<p>.......The
2d800 20 69 6d 70 6c 69 63 61 74 69 6f 6e 73 20 6f 66 20 74 68 69 73 20 61 72 65 20 74 61 72 67 65 74 .implications.of.this.are.target
2d820 20 73 70 65 63 69 66 69 63 20 61 6e 64 20 6e 6f 74 20 63 6f 6e 73 69 73 74 65 6e 74 20 61 63 72 .specific.and.not.consistent.acr
2d840 6f 73 73 0a 20 20 20 20 20 20 61 6c 6c 20 70 6c 61 74 66 6f 72 6d 73 2e 0a 20 20 20 20 20 20 3c oss.......all.platforms........<
2d860 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f /p>.......<p>.......This.functio
2d880 6e 20 69 73 20 6f 6e 6c 79 20 76 61 6c 69 64 20 77 69 74 68 69 6e 20 66 75 6e 63 74 69 6f 6e 20 n.is.only.valid.within.function.
2d8a0 73 63 6f 70 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c scope........</p>..............<
2d8c0 68 32 20 69 64 3d 22 73 65 74 41 6c 69 67 6e 53 74 61 63 6b 22 3e 40 73 65 74 41 6c 69 67 6e 53 h2.id="setAlignStack">@setAlignS
2d8e0 74 61 63 6b 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 tack</h2>........<pre><code.clas
2d900 73 3d 22 7a 69 67 22 3e 40 73 65 74 41 6c 69 67 6e 53 74 61 63 6b 28 63 6f 6d 70 74 69 6d 65 20 s="zig">@setAlignStack(comptime.
2d920 61 6c 69 67 6e 6d 65 6e 74 3a 20 75 32 39 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 alignment:.u29)</code></pre>....
2d940 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 45 6e 73 75 72 65 73 20 74 68 61 74 20 61 20 66 75 6e 63 ...<p>.......Ensures.that.a.func
2d960 74 69 6f 6e 20 77 69 6c 6c 20 68 61 76 65 20 61 20 73 74 61 63 6b 20 61 6c 69 67 6e 6d 65 6e 74 tion.will.have.a.stack.alignment
2d980 20 6f 66 20 61 74 20 6c 65 61 73 74 20 3c 63 6f 64 65 3e 61 6c 69 67 6e 6d 65 6e 74 3c 2f 63 6f .of.at.least.<code>alignment</co
2d9a0 64 65 3e 20 62 79 74 65 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 de>.bytes........</p>...........
2d9c0 20 20 20 3c 68 32 20 69 64 3d 22 73 65 74 43 6f 6c 64 22 3e 40 73 65 74 43 6f 6c 64 3c 2f 68 32 ...<h2.id="setCold">@setCold</h2
2d9e0 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e >........<pre><code.class="zig">
2da00 40 73 65 74 43 6f 6c 64 28 69 73 5f 63 6f 6c 64 3a 20 62 6f 6f 6c 29 3c 2f 63 6f 64 65 3e 3c 2f @setCold(is_cold:.bool)</code></
2da20 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 65 6c 6c 73 20 74 68 65 20 6f pre>.......<p>.......Tells.the.o
2da40 70 74 69 6d 69 7a 65 72 20 74 68 61 74 20 61 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 72 61 72 65 ptimizer.that.a.function.is.rare
2da60 6c 79 20 63 61 6c 6c 65 64 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 ly.called........</p>...........
2da80 20 20 20 3c 68 32 20 69 64 3d 22 73 65 74 52 75 6e 74 69 6d 65 53 61 66 65 74 79 22 3e 40 73 65 ...<h2.id="setRuntimeSafety">@se
2daa0 74 52 75 6e 74 69 6d 65 53 61 66 65 74 79 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e tRuntimeSafety</h2>........<pre>
2dac0 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 73 65 74 52 75 6e 74 69 6d 65 53 61 66 <code.class="zig">@setRuntimeSaf
2dae0 65 74 79 28 73 61 66 65 74 79 5f 6f 6e 3a 20 62 6f 6f 6c 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 ety(safety_on:.bool)</code></pre
2db00 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 53 65 74 73 20 77 68 65 74 68 65 72 20 72 >.......<p>.......Sets.whether.r
2db20 75 6e 74 69 6d 65 20 73 61 66 65 74 79 20 63 68 65 63 6b 73 20 61 72 65 20 6f 6e 20 66 6f 72 20 untime.safety.checks.are.on.for.
2db40 74 68 65 20 73 63 6f 70 65 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 66 75 6e 63 the.scope.that.contains.the.func
2db60 74 69 6f 6e 20 63 61 6c 6c 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 0a 20 20 tion.call........</p>...........
2db80 20 20 20 20 3c 68 32 20 69 64 3d 22 73 65 74 45 76 61 6c 42 72 61 6e 63 68 51 75 6f 74 61 22 3e ....<h2.id="setEvalBranchQuota">
2dba0 40 73 65 74 45 76 61 6c 42 72 61 6e 63 68 51 75 6f 74 61 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 @setEvalBranchQuota</h2>........
2dbc0 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 73 65 74 45 76 61 6c 42 <pre><code.class="zig">@setEvalB
2dbe0 72 61 6e 63 68 51 75 6f 74 61 28 6e 65 77 5f 71 75 6f 74 61 3a 20 75 73 69 7a 65 29 3c 2f 63 6f ranchQuota(new_quota:.usize)</co
2dc00 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 43 68 61 6e 67 65 de></pre>.......<p>.......Change
2dc20 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 62 61 63 6b 77 61 72 64 s.the.maximum.number.of.backward
2dc40 73 20 62 72 61 6e 63 68 65 73 20 74 68 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 63 6f 64 s.branches.that.compile-time.cod
2dc60 65 0a 20 20 20 20 20 20 65 78 65 63 75 74 69 6f 6e 20 63 61 6e 20 75 73 65 20 62 65 66 6f 72 65 e.......execution.can.use.before
2dc80 20 67 69 76 69 6e 67 20 75 70 20 61 6e 64 20 6d 61 6b 69 6e 67 20 61 20 63 6f 6d 70 69 6c 65 20 .giving.up.and.making.a.compile.
2dca0 65 72 72 6f 72 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 error........</p>.......<p>.....
2dcc0 20 20 49 66 20 74 68 65 20 3c 63 6f 64 65 3e 6e 65 77 5f 71 75 6f 74 61 3c 2f 63 6f 64 65 3e 20 ..If.the.<code>new_quota</code>.
2dce0 69 73 20 73 6d 61 6c 6c 65 72 20 74 68 61 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 71 75 6f 74 is.smaller.than.the.default.quot
2dd00 61 20 28 3c 63 6f 64 65 3e 31 30 30 30 3c 2f 63 6f 64 65 3e 29 20 6f 72 0a 20 20 20 20 20 20 61 a.(<code>1000</code>).or.......a
2dd20 20 70 72 65 76 69 6f 75 73 6c 79 20 65 78 70 6c 69 63 69 74 6c 79 20 73 65 74 20 71 75 6f 74 61 .previously.explicitly.set.quota
2dd40 2c 20 69 74 20 69 73 20 69 67 6e 6f 72 65 64 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 ,.it.is.ignored........</p>.....
2dd60 20 20 3c 70 3e 0a 20 20 20 20 20 20 45 78 61 6d 70 6c 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a ..<p>.......Example:.......</p>.
2dd80 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f ......<p.class="file">test.zig</
2dda0 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 74 65 73 74 20 26 71 p><pre><code.class="zig">test.&q
2ddc0 75 6f 74 3b 66 6f 6f 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 uot;foo&quot;.{.....comptime.{..
2dde0 20 20 20 20 20 20 20 76 61 72 20 69 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 .......var.i.=.0;.........while.
2de00 28 69 20 26 6c 74 3b 20 31 30 30 31 29 20 3a 20 28 69 20 2b 3d 20 31 29 20 7b 7d 0a 20 20 20 20 (i.&lt;.1001).:.(i.+=.1).{}.....
2de20 7d 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 }.}</code></pre><pre><code.class
2de40 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 3c 73 70 ="shell">$.zig.test.test.zig.<sp
2de60 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a an.class="t0_1">/home/andy/dev/z
2de80 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 34 3a 39 3a 20 3c 2f 73 70 ig/docgen_tmp/test.zig:4:9:.</sp
2dea0 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 6f 72 3a 3c 2f 73 an><span.class="t31_1">error:</s
2dec0 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 65 76 61 6c 75 61 74 69 pan><span.class="t0_1">.evaluati
2dee0 6f 6e 20 65 78 63 65 65 64 65 64 20 31 30 30 30 20 62 61 63 6b 77 61 72 64 73 20 62 72 61 6e 63 on.exceeded.1000.backwards.branc
2df00 68 65 73 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 69 20 26 6c 74 3b hes</span>.........while.(i.&lt;
2df20 20 31 30 30 31 29 20 3a 20 28 69 20 2b 3d 20 31 29 20 7b 7d 0a 20 20 20 20 20 20 20 20 3c 73 70 .1001).:.(i.+=.1).{}.........<sp
2df40 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 an.class="t32_1">^</span>.</code
2df60 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 4e 6f 77 20 77 65 20 75 73 65 20 3c 63 6f ></pre>........<p>Now.we.use.<co
2df80 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 73 65 74 45 76 61 6c 42 72 61 6e 63 68 51 75 6f de.class="zig">@setEvalBranchQuo
2dfa0 74 61 3c 2f 63 6f 64 65 3e 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 ta</code>:</p>.......<p.class="f
2dfc0 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 ile">test.zig</p><pre><code.clas
2dfe0 73 3d 22 7a 69 67 22 3e 74 65 73 74 20 26 71 75 6f 74 3b 66 6f 6f 26 71 75 6f 74 3b 20 7b 0a 20 s="zig">test.&quot;foo&quot;.{..
2e000 20 20 20 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 20 20 20 20 40 73 65 74 45 76 61 6c 42 72 ...comptime.{.........@setEvalBr
2e020 61 6e 63 68 51 75 6f 74 61 28 31 30 30 31 29 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 20 3d anchQuota(1001);.........var.i.=
2e040 20 30 3b 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 69 20 26 6c 74 3b 20 31 30 30 31 29 20 .0;.........while.(i.&lt;.1001).
2e060 3a 20 28 69 20 2b 3d 20 31 29 20 7b 7d 0a 20 20 20 20 7d 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 :.(i.+=.1).{}.....}.}</code></pr
2e080 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 e><pre><code.class="shell">$.zig
2e0a0 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 66 6f 6f 2e 2e 2e 4f 4b .test.test.zig.Test.1/1.foo...OK
2e0c0 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c .</code></pre>.........<p>See.al
2e0e0 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 6f 6d 70 74 69 so:</p><ul>.<li><a.href="#compti
2e100 6d 65 22 3e 63 6f 6d 70 74 69 6d 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 me">comptime</a></li>.</ul>.....
2e120 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 73 65 74 46 6c 6f 61 74 4d 6f 64 65 22 3e ..........<h2.id="setFloatMode">
2e140 40 73 65 74 46 6c 6f 61 74 4d 6f 64 65 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c @setFloatMode</h2>........<pre><
2e160 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 73 65 74 46 6c 6f 61 74 4d 6f 64 65 28 73 code.class="zig">@setFloatMode(s
2e180 63 6f 70 65 2c 20 6d 6f 64 65 3a 20 40 69 6d 70 6f 72 74 28 22 62 75 69 6c 74 69 6e 22 29 2e 46 cope,.mode:.@import("builtin").F
2e1a0 6c 6f 61 74 4d 6f 64 65 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e loatMode)</code></pre>.......<p>
2e1c0 0a 20 20 20 20 20 20 53 65 74 73 20 74 68 65 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6d .......Sets.the.floating.point.m
2e1e0 6f 64 65 20 66 6f 72 20 61 20 67 69 76 65 6e 20 73 63 6f 70 65 2e 20 50 6f 73 73 69 62 6c 65 20 ode.for.a.given.scope..Possible.
2e200 76 61 6c 75 65 73 20 61 72 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 values.are:.......</p>.......<pr
2e220 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 70 75 62 20 63 6f 6e 73 74 20 46 6c e><code.class="zig">pub.const.Fl
2e240 6f 61 74 4d 6f 64 65 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 4f 70 74 69 6d 69 7a 65 64 2c 0a oatMode.=.enum.{.....Optimized,.
2e260 20 20 20 20 53 74 72 69 63 74 2c 0a 7d 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 ....Strict,.};</code></pre>.....
2e280 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 63 ..<ul>.........<li>...........<c
2e2a0 6f 64 65 3e 4f 70 74 69 6d 69 7a 65 64 3c 2f 63 6f 64 65 3e 20 28 64 65 66 61 75 6c 74 29 20 2d ode>Optimized</code>.(default).-
2e2c0 20 46 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6f 70 65 72 61 74 69 6f 6e 73 20 6d 61 79 20 64 .Floating.point.operations.may.d
2e2e0 6f 20 61 6c 6c 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 3a 0a 20 20 20 20 20 20 20 20 o.all.of.the.following:.........
2e300 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 41 73 73 75 6d 65 20 74 68 ..<ul>.............<li>Assume.th
2e320 65 20 61 72 67 75 6d 65 6e 74 73 20 61 6e 64 20 72 65 73 75 6c 74 20 61 72 65 20 6e 6f 74 20 4e e.arguments.and.result.are.not.N
2e340 61 4e 2e 20 4f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 61 72 65 20 72 65 71 75 69 72 65 64 20 74 aN..Optimizations.are.required.t
2e360 6f 20 72 65 74 61 69 6e 20 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 20 6f 76 65 72 20 4e o.retain.defined.behavior.over.N
2e380 61 4e 73 2c 20 62 75 74 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 aNs,.but.the.value.of.the.result
2e3a0 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 .is.undefined.</li>.............
2e3c0 3c 6c 69 3e 41 73 73 75 6d 65 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20 61 6e 64 20 72 65 73 <li>Assume.the.arguments.and.res
2e3e0 75 6c 74 20 61 72 65 20 6e 6f 74 20 2b 2f 2d 49 6e 66 2e 20 4f 70 74 69 6d 69 7a 61 74 69 6f 6e ult.are.not.+/-Inf..Optimization
2e400 73 20 61 72 65 20 72 65 71 75 69 72 65 64 20 74 6f 20 72 65 74 61 69 6e 20 64 65 66 69 6e 65 64 s.are.required.to.retain.defined
2e420 20 62 65 68 61 76 69 6f 72 20 6f 76 65 72 20 2b 2f 2d 49 6e 66 2c 20 62 75 74 20 74 68 65 20 76 .behavior.over.+/-Inf,.but.the.v
2e440 61 6c 75 65 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e alue.of.the.result.is.undefined.
2e460 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 54 72 65 61 74 20 74 68 65 20 </li>.............<li>Treat.the.
2e480 73 69 67 6e 20 6f 66 20 61 20 7a 65 72 6f 20 61 72 67 75 6d 65 6e 74 20 6f 72 20 72 65 73 75 6c sign.of.a.zero.argument.or.resul
2e4a0 74 20 61 73 20 69 6e 73 69 67 6e 69 66 69 63 61 6e 74 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 t.as.insignificant.</li>........
2e4c0 20 20 20 20 20 3c 6c 69 3e 55 73 65 20 74 68 65 20 72 65 63 69 70 72 6f 63 61 6c 20 6f 66 20 61 .....<li>Use.the.reciprocal.of.a
2e4e0 6e 20 61 72 67 75 6d 65 6e 74 20 72 61 74 68 65 72 20 74 68 61 6e 20 70 65 72 66 6f 72 6d 20 64 n.argument.rather.than.perform.d
2e500 69 76 69 73 69 6f 6e 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 50 65 ivision.</li>.............<li>Pe
2e520 72 66 6f 72 6d 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 63 6f 6e 74 72 61 63 74 69 6f 6e rform.floating-point.contraction
2e540 20 28 65 2e 67 2e 20 66 75 73 69 6e 67 20 61 20 6d 75 6c 74 69 70 6c 79 20 66 6f 6c 6c 6f 77 65 .(e.g..fusing.a.multiply.followe
2e560 64 20 62 79 20 61 6e 20 61 64 64 69 74 69 6f 6e 20 69 6e 74 6f 20 61 20 66 75 73 65 64 20 6d 75 d.by.an.addition.into.a.fused.mu
2e580 6c 74 69 70 6c 79 2d 61 6e 64 2d 61 64 64 29 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 ltiply-and-add).</li>...........
2e5a0 20 20 3c 6c 69 3e 50 65 72 66 6f 72 6d 20 61 6c 67 65 62 72 61 69 63 61 6c 6c 79 20 65 71 75 69 ..<li>Perform.algebraically.equi
2e5c0 76 61 6c 65 6e 74 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 73 20 74 68 61 74 20 6d 61 79 20 valent.transformations.that.may.
2e5e0 63 68 61 6e 67 65 20 72 65 73 75 6c 74 73 20 69 6e 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 change.results.in.floating.point
2e600 20 28 65 2e 67 2e 20 72 65 61 73 73 6f 63 69 61 74 65 29 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 .(e.g..reassociate).</li>.......
2e620 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 54 68 69 73 20 69 73 20 65 71 75 69 ....</ul>...........This.is.equi
2e640 76 61 6c 65 6e 74 20 74 6f 20 3c 63 6f 64 65 3e 2d 66 66 61 73 74 2d 6d 61 74 68 3c 2f 63 6f 64 valent.to.<code>-ffast-math</cod
2e660 65 3e 20 69 6e 20 47 43 43 2e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 e>.in.GCC..........</li>........
2e680 20 3c 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 63 6f 64 65 3e 53 74 72 69 63 74 3c 2f 63 6f .<li>...........<code>Strict</co
2e6a0 64 65 3e 20 2d 20 46 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6f 70 65 72 61 74 69 6f 6e 73 20 de>.-.Floating.point.operations.
2e6c0 66 6f 6c 6c 6f 77 20 73 74 72 69 63 74 20 49 45 45 45 20 63 6f 6d 70 6c 69 61 6e 63 65 2e 0a 20 follow.strict.IEEE.compliance...
2e6e0 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c .......</li>.......</ul>.......<
2e700 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d p>See.also:</p><ul>.<li><a.href=
2e720 22 23 46 6c 6f 61 74 69 6e 67 2d 50 6f 69 6e 74 2d 4f 70 65 72 61 74 69 6f 6e 73 22 3e 46 6c 6f "#Floating-Point-Operations">Flo
2e740 61 74 69 6e 67 20 50 6f 69 6e 74 20 4f 70 65 72 61 74 69 6f 6e 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a ating.Point.Operations</a></li>.
2e760 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 73 65 74 47 </ul>...............<h2.id="setG
2e780 6c 6f 62 61 6c 4c 69 6e 6b 61 67 65 22 3e 40 73 65 74 47 6c 6f 62 61 6c 4c 69 6e 6b 61 67 65 3c lobalLinkage">@setGlobalLinkage<
2e7a0 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 /h2>........<pre><code.class="zi
2e7c0 67 22 3e 40 73 65 74 47 6c 6f 62 61 6c 4c 69 6e 6b 61 67 65 28 67 6c 6f 62 61 6c 5f 76 61 72 69 g">@setGlobalLinkage(global_vari
2e7e0 61 62 6c 65 5f 6e 61 6d 65 2c 20 63 6f 6d 70 74 69 6d 65 20 6c 69 6e 6b 61 67 65 3a 20 47 6c 6f able_name,.comptime.linkage:.Glo
2e800 62 61 6c 4c 69 6e 6b 61 67 65 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c balLinkage)</code></pre>.......<
2e820 70 3e 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 47 6c 6f 62 61 6c 4c 69 6e 6b 61 67 65 3c 2f 63 6f p>.......<code>GlobalLinkage</co
2e840 64 65 3e 20 63 61 6e 20 62 65 20 66 6f 75 6e 64 20 77 69 74 68 20 3c 63 6f 64 65 3e 40 69 6d 70 de>.can.be.found.with.<code>@imp
2e860 6f 72 74 28 22 62 75 69 6c 74 69 6e 22 29 2e 47 6c 6f 62 61 6c 4c 69 6e 6b 61 67 65 3c 2f 63 6f ort("builtin").GlobalLinkage</co
2e880 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 de>........</p>.......<p>See.als
2e8a0 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 43 6f 6d 70 69 6c 65 o:</p><ul>.<li><a.href="#Compile
2e8c0 2d 56 61 72 69 61 62 6c 65 73 22 3e 43 6f 6d 70 69 6c 65 20 56 61 72 69 61 62 6c 65 73 3c 2f 61 -Variables">Compile.Variables</a
2e8e0 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 ></li>.</ul>...............<h2.i
2e900 64 3d 22 73 65 74 47 6c 6f 62 61 6c 53 65 63 74 69 6f 6e 22 3e 40 73 65 74 47 6c 6f 62 61 6c 53 d="setGlobalSection">@setGlobalS
2e920 65 63 74 69 6f 6e 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c ection</h2>........<pre><code.cl
2e940 61 73 73 3d 22 7a 69 67 22 3e 40 73 65 74 47 6c 6f 62 61 6c 53 65 63 74 69 6f 6e 28 67 6c 6f 62 ass="zig">@setGlobalSection(glob
2e960 61 6c 5f 76 61 72 69 61 62 6c 65 5f 6e 61 6d 65 2c 20 63 6f 6d 70 74 69 6d 65 20 73 65 63 74 69 al_variable_name,.comptime.secti
2e980 6f 6e 5f 6e 61 6d 65 3a 20 5b 5d 63 6f 6e 73 74 20 75 38 29 20 2d 26 67 74 3b 20 62 6f 6f 6c 3c on_name:.[]const.u8).-&gt;.bool<
2e9a0 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 50 75 74 /code></pre>.......<p>.......Put
2e9c0 73 20 74 68 65 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 20 69 6e 20 74 68 65 20 73 70 65 s.the.global.variable.in.the.spe
2e9e0 63 69 66 69 65 64 20 73 65 63 74 69 6f 6e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 cified.section........</p>......
2ea00 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 73 68 6c 45 78 61 63 74 22 3e 40 73 68 6c 45 78 ........<h2.id="shlExact">@shlEx
2ea20 61 63 74 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 act</h2>........<pre><code.class
2ea40 3d 22 7a 69 67 22 3e 40 73 68 6c 45 78 61 63 74 28 76 61 6c 75 65 3a 20 54 2c 20 73 68 69 66 74 ="zig">@shlExact(value:.T,.shift
2ea60 5f 61 6d 74 3a 20 4c 6f 67 32 54 29 20 2d 26 67 74 3b 20 54 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 _amt:.Log2T).-&gt;.T</code></pre
2ea80 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 50 65 72 66 6f 72 6d 73 20 74 68 65 20 6c >.......<p>.......Performs.the.l
2eaa0 65 66 74 20 73 68 69 66 74 20 6f 70 65 72 61 74 69 6f 6e 20 28 3c 63 6f 64 65 3e 26 6c 74 3b 26 eft.shift.operation.(<code>&lt;&
2eac0 6c 74 3b 3c 2f 63 6f 64 65 3e 29 2e 20 43 61 6c 6c 65 72 20 67 75 61 72 61 6e 74 65 65 73 0a 20 lt;</code>)..Caller.guarantees..
2eae0 20 20 20 20 20 74 68 61 74 20 74 68 65 20 73 68 69 66 74 20 77 69 6c 6c 20 6e 6f 74 20 73 68 69 .....that.the.shift.will.not.shi
2eb00 66 74 20 61 6e 79 20 31 20 62 69 74 73 20 6f 75 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 ft.any.1.bits.out........</p>...
2eb20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 74 79 70 65 20 6f 66 20 3c 63 6f 64 65 3e ....<p>.......The.type.of.<code>
2eb40 73 68 69 66 74 5f 61 6d 74 3c 2f 63 6f 64 65 3e 20 69 73 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 shift_amt</code>.is.an.unsigned.
2eb60 69 6e 74 65 67 65 72 20 77 69 74 68 20 3c 63 6f 64 65 3e 6c 6f 67 32 28 54 2e 62 69 74 5f 63 6f integer.with.<code>log2(T.bit_co
2eb80 75 6e 74 29 3c 2f 63 6f 64 65 3e 20 62 69 74 73 2e 0a 20 20 20 20 20 20 54 68 69 73 20 69 73 20 unt)</code>.bits........This.is.
2eba0 62 65 63 61 75 73 65 20 3c 63 6f 64 65 3e 73 68 69 66 74 5f 61 6d 74 20 26 67 74 3b 3d 20 54 2e because.<code>shift_amt.&gt;=.T.
2ebc0 62 69 74 5f 63 6f 75 6e 74 3c 2f 63 6f 64 65 3e 20 69 73 20 75 6e 64 65 66 69 6e 65 64 20 62 65 bit_count</code>.is.undefined.be
2ebe0 68 61 76 69 6f 72 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 havior........</p>.......<p>See.
2ec00 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 68 72 45 also:</p><ul>.<li><a.href="#shrE
2ec20 78 61 63 74 22 3e 40 73 68 72 45 78 61 63 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 xact">@shrExact</a></li>.<li><a.
2ec40 68 72 65 66 3d 22 23 73 68 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 22 3e 40 73 68 6c 57 69 74 68 href="#shlWithOverflow">@shlWith
2ec60 4f 76 65 72 66 6c 6f 77 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a Overflow</a></li>.</ul>.........
2ec80 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 73 68 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 22 3e 40 ......<h2.id="shlWithOverflow">@
2eca0 73 68 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 shlWithOverflow</h2>........<pre
2ecc0 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 73 68 6c 57 69 74 68 4f 76 65 72 66 ><code.class="zig">@shlWithOverf
2ece0 6c 6f 77 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 2c 20 61 3a 20 54 2c 20 73 68 69 66 low(comptime.T:.type,.a:.T,.shif
2ed00 74 5f 61 6d 74 3a 20 4c 6f 67 32 54 2c 20 72 65 73 75 6c 74 3a 20 26 61 6d 70 3b 54 29 20 2d 26 t_amt:.Log2T,.result:.&amp;T).-&
2ed20 67 74 3b 20 62 6f 6f 6c 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a gt;.bool</code></pre>.......<p>.
2ed40 20 20 20 20 20 20 50 65 72 66 6f 72 6d 73 20 3c 63 6f 64 65 3e 2a 72 65 73 75 6c 74 20 3d 20 61 ......Performs.<code>*result.=.a
2ed60 20 26 6c 74 3b 26 6c 74 3b 20 62 3c 2f 63 6f 64 65 3e 2e 20 49 66 20 6f 76 65 72 66 6c 6f 77 20 .&lt;&lt;.b</code>..If.overflow.
2ed80 6f 72 20 75 6e 64 65 72 66 6c 6f 77 20 6f 63 63 75 72 73 2c 0a 20 20 20 20 20 20 73 74 6f 72 65 or.underflow.occurs,.......store
2eda0 73 20 74 68 65 20 6f 76 65 72 66 6c 6f 77 65 64 20 62 69 74 73 20 69 6e 20 3c 63 6f 64 65 3e 72 s.the.overflowed.bits.in.<code>r
2edc0 65 73 75 6c 74 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 74 esult</code>.and.returns.<code>t
2ede0 72 75 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 49 66 20 6e 6f 20 6f 76 65 72 66 6c 6f 77 rue</code>........If.no.overflow
2ee00 20 6f 72 20 75 6e 64 65 72 66 6c 6f 77 20 6f 63 63 75 72 73 2c 20 72 65 74 75 72 6e 73 20 3c 63 .or.underflow.occurs,.returns.<c
2ee20 6f 64 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 ode>false</code>........</p>....
2ee40 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 74 79 70 65 20 6f 66 20 3c 63 6f 64 65 3e 73 ...<p>.......The.type.of.<code>s
2ee60 68 69 66 74 5f 61 6d 74 3c 2f 63 6f 64 65 3e 20 69 73 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 69 hift_amt</code>.is.an.unsigned.i
2ee80 6e 74 65 67 65 72 20 77 69 74 68 20 3c 63 6f 64 65 3e 6c 6f 67 32 28 54 2e 62 69 74 5f 63 6f 75 nteger.with.<code>log2(T.bit_cou
2eea0 6e 74 29 3c 2f 63 6f 64 65 3e 20 62 69 74 73 2e 0a 20 20 20 20 20 20 54 68 69 73 20 69 73 20 62 nt)</code>.bits........This.is.b
2eec0 65 63 61 75 73 65 20 3c 63 6f 64 65 3e 73 68 69 66 74 5f 61 6d 74 20 26 67 74 3b 3d 20 54 2e 62 ecause.<code>shift_amt.&gt;=.T.b
2eee0 69 74 5f 63 6f 75 6e 74 3c 2f 63 6f 64 65 3e 20 69 73 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 it_count</code>.is.undefined.beh
2ef00 61 76 69 6f 72 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 avior........</p>.......<p>See.a
2ef20 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 68 6c 45 78 lso:</p><ul>.<li><a.href="#shlEx
2ef40 61 63 74 22 3e 40 73 68 6c 45 78 61 63 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 act">@shlExact</a></li>.<li><a.h
2ef60 72 65 66 3d 22 23 73 68 72 45 78 61 63 74 22 3e 40 73 68 72 45 78 61 63 74 3c 2f 61 3e 3c 2f 6c ref="#shrExact">@shrExact</a></l
2ef80 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 73 i>.</ul>...............<h2.id="s
2efa0 68 72 45 78 61 63 74 22 3e 40 73 68 72 45 78 61 63 74 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c hrExact">@shrExact</h2>........<
2efc0 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 73 68 72 45 78 61 63 74 28 pre><code.class="zig">@shrExact(
2efe0 76 61 6c 75 65 3a 20 54 2c 20 73 68 69 66 74 5f 61 6d 74 3a 20 4c 6f 67 32 54 29 20 2d 26 67 74 value:.T,.shift_amt:.Log2T).-&gt
2f000 3b 20 54 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 ;.T</code></pre>.......<p>......
2f020 20 50 65 72 66 6f 72 6d 73 20 74 68 65 20 72 69 67 68 74 20 73 68 69 66 74 20 6f 70 65 72 61 74 .Performs.the.right.shift.operat
2f040 69 6f 6e 20 28 3c 63 6f 64 65 3e 26 67 74 3b 26 67 74 3b 3c 2f 63 6f 64 65 3e 29 2e 20 43 61 6c ion.(<code>&gt;&gt;</code>)..Cal
2f060 6c 65 72 20 67 75 61 72 61 6e 74 65 65 73 0a 20 20 20 20 20 20 74 68 61 74 20 74 68 65 20 73 68 ler.guarantees.......that.the.sh
2f080 69 66 74 20 77 69 6c 6c 20 6e 6f 74 20 73 68 69 66 74 20 61 6e 79 20 31 20 62 69 74 73 20 6f 75 ift.will.not.shift.any.1.bits.ou
2f0a0 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 t........</p>.......<p>.......Th
2f0c0 65 20 74 79 70 65 20 6f 66 20 3c 63 6f 64 65 3e 73 68 69 66 74 5f 61 6d 74 3c 2f 63 6f 64 65 3e e.type.of.<code>shift_amt</code>
2f0e0 20 69 73 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 20 77 69 74 68 20 3c 63 6f .is.an.unsigned.integer.with.<co
2f100 64 65 3e 6c 6f 67 32 28 54 2e 62 69 74 5f 63 6f 75 6e 74 29 3c 2f 63 6f 64 65 3e 20 62 69 74 73 de>log2(T.bit_count)</code>.bits
2f120 2e 0a 20 20 20 20 20 20 54 68 69 73 20 69 73 20 62 65 63 61 75 73 65 20 3c 63 6f 64 65 3e 73 68 ........This.is.because.<code>sh
2f140 69 66 74 5f 61 6d 74 20 26 67 74 3b 3d 20 54 2e 62 69 74 5f 63 6f 75 6e 74 3c 2f 63 6f 64 65 3e ift_amt.&gt;=.T.bit_count</code>
2f160 20 69 73 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 2e 0a 20 20 20 20 20 20 3c 2f .is.undefined.behavior........</
2f180 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c p>.......<p>See.also:</p><ul>.<l
2f1a0 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 68 6c 45 78 61 63 74 22 3e 40 73 68 6c 45 78 61 63 74 3c i><a.href="#shlExact">@shlExact<
2f1c0 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 68 6c 57 69 74 68 4f 76 /a></li>.<li><a.href="#shlWithOv
2f1e0 65 72 66 6c 6f 77 22 3e 40 73 68 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 61 3e 3c 2f 6c 69 erflow">@shlWithOverflow</a></li
2f200 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 73 69 >.</ul>...............<h2.id="si
2f220 7a 65 4f 66 22 3e 40 73 69 7a 65 4f 66 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c zeOf">@sizeOf</h2>........<pre><
2f240 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 73 69 7a 65 4f 66 28 63 6f 6d 70 74 69 6d code.class="zig">@sizeOf(comptim
2f260 65 20 54 3a 20 74 79 70 65 29 20 2d 26 67 74 3b 20 28 6e 75 6d 62 65 72 20 6c 69 74 65 72 61 6c e.T:.type).-&gt;.(number.literal
2f280 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 )</code></pre>.......<p>.......T
2f2a0 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20 his.function.returns.the.number.
2f2c0 6f 66 20 62 79 74 65 73 20 69 74 20 74 61 6b 65 73 20 74 6f 20 73 74 6f 72 65 20 3c 63 6f 64 65 of.bytes.it.takes.to.store.<code
2f2e0 3e 54 3c 2f 63 6f 64 65 3e 20 69 6e 20 6d 65 6d 6f 72 79 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a >T</code>.in.memory........</p>.
2f300 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 20 ......<p>.......The.result.is.a.
2f320 74 61 72 67 65 74 2d 73 70 65 63 69 66 69 63 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 20 63 6f 6e target-specific.compile.time.con
2f340 73 74 61 6e 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c stant........</p>..............<
2f360 68 32 20 69 64 3d 22 73 75 62 57 69 74 68 4f 76 65 72 66 6c 6f 77 22 3e 40 73 75 62 57 69 74 68 h2.id="subWithOverflow">@subWith
2f380 4f 76 65 72 66 6c 6f 77 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 Overflow</h2>........<pre><code.
2f3a0 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 73 75 62 57 69 74 68 4f 76 65 72 66 6c 6f 77 28 63 6f 6d class="zig">@subWithOverflow(com
2f3c0 70 74 69 6d 65 20 54 3a 20 74 79 70 65 2c 20 61 3a 20 54 2c 20 62 3a 20 54 2c 20 72 65 73 75 6c ptime.T:.type,.a:.T,.b:.T,.resul
2f3e0 74 3a 20 26 61 6d 70 3b 54 29 20 2d 26 67 74 3b 20 62 6f 6f 6c 3c 2f 63 6f 64 65 3e 3c 2f 70 72 t:.&amp;T).-&gt;.bool</code></pr
2f400 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 50 65 72 66 6f 72 6d 73 20 3c 63 6f 64 e>.......<p>.......Performs.<cod
2f420 65 3e 2a 72 65 73 75 6c 74 20 3d 20 61 20 2d 20 62 3c 2f 63 6f 64 65 3e 2e 20 49 66 20 6f 76 65 e>*result.=.a.-.b</code>..If.ove
2f440 72 66 6c 6f 77 20 6f 72 20 75 6e 64 65 72 66 6c 6f 77 20 6f 63 63 75 72 73 2c 0a 20 20 20 20 20 rflow.or.underflow.occurs,......
2f460 20 73 74 6f 72 65 73 20 74 68 65 20 6f 76 65 72 66 6c 6f 77 65 64 20 62 69 74 73 20 69 6e 20 3c .stores.the.overflowed.bits.in.<
2f480 63 6f 64 65 3e 72 65 73 75 6c 74 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 72 65 74 75 72 6e 73 20 3c code>result</code>.and.returns.<
2f4a0 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 49 66 20 6e 6f 20 6f 76 code>true</code>........If.no.ov
2f4c0 65 72 66 6c 6f 77 20 6f 72 20 75 6e 64 65 72 66 6c 6f 77 20 6f 63 63 75 72 73 2c 20 72 65 74 75 erflow.or.underflow.occurs,.retu
2f4e0 72 6e 73 20 3c 63 6f 64 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f rns.<code>false</code>........</
2f500 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 74 72 75 6e 63 61 74 65 p>..............<h2.id="truncate
2f520 22 3e 40 74 72 75 6e 63 61 74 65 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f ">@truncate</h2>........<pre><co
2f540 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 74 72 75 6e 63 61 74 65 28 63 6f 6d 70 74 69 6d de.class="zig">@truncate(comptim
2f560 65 20 54 3a 20 74 79 70 65 2c 20 69 6e 74 65 67 65 72 29 20 2d 26 67 74 3b 20 54 3c 2f 63 6f 64 e.T:.type,.integer).-&gt;.T</cod
2f580 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 e></pre>.......<p>.......This.fu
2f5a0 6e 63 74 69 6f 6e 20 74 72 75 6e 63 61 74 65 73 20 62 69 74 73 20 66 72 6f 6d 20 61 6e 20 69 6e nction.truncates.bits.from.an.in
2f5c0 74 65 67 65 72 20 74 79 70 65 2c 20 72 65 73 75 6c 74 69 6e 67 20 69 6e 20 61 20 73 6d 61 6c 6c teger.type,.resulting.in.a.small
2f5e0 65 72 0a 20 20 20 20 20 20 69 6e 74 65 67 65 72 20 74 79 70 65 2e 0a 20 20 20 20 20 20 3c 2f 70 er.......integer.type........</p
2f600 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 >.......<p>.......The.following.
2f620 70 72 6f 64 75 63 65 73 20 61 20 63 72 61 73 68 20 69 6e 20 64 65 62 75 67 20 6d 6f 64 65 20 61 produces.a.crash.in.debug.mode.a
2f640 6e 64 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 20 69 6e 0a 20 20 20 20 20 20 72 nd.undefined.behavior.in.......r
2f660 65 6c 65 61 73 65 20 6d 6f 64 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 elease.mode:.......</p>.......<p
2f680 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 3a 20 75 31 re><code.class="zig">const.a:.u1
2f6a0 36 20 3d 20 30 78 61 62 63 64 3b 0a 63 6f 6e 73 74 20 62 3a 20 75 38 20 3d 20 75 38 28 61 29 3b 6.=.0xabcd;.const.b:.u8.=.u8(a);
2f6c0 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 48 6f </code></pre>.......<p>.......Ho
2f6e0 77 65 76 65 72 20 74 68 69 73 20 69 73 20 77 65 6c 6c 20 64 65 66 69 6e 65 64 20 61 6e 64 20 77 wever.this.is.well.defined.and.w
2f700 6f 72 6b 69 6e 67 20 63 6f 64 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 orking.code:.......</p>.......<p
2f720 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 3a 20 75 31 re><code.class="zig">const.a:.u1
2f740 36 20 3d 20 30 78 61 62 63 64 3b 0a 63 6f 6e 73 74 20 62 3a 20 75 38 20 3d 20 40 74 72 75 6e 63 6.=.0xabcd;.const.b:.u8.=.@trunc
2f760 61 74 65 28 75 38 2c 20 61 29 3b 0a 2f 2f 20 62 20 69 73 20 6e 6f 77 20 30 78 63 64 3c 2f 63 6f ate(u8,.a);.//.b.is.now.0xcd</co
2f780 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 de></pre>.......<p>.......This.f
2f7a0 75 6e 63 74 69 6f 6e 20 61 6c 77 61 79 73 20 74 72 75 6e 63 61 74 65 73 20 74 68 65 20 73 69 67 unction.always.truncates.the.sig
2f7c0 6e 69 66 69 63 61 6e 74 20 62 69 74 73 20 6f 66 20 74 68 65 20 69 6e 74 65 67 65 72 2c 20 72 65 nificant.bits.of.the.integer,.re
2f7e0 67 61 72 64 6c 65 73 73 0a 20 20 20 20 20 20 6f 66 20 65 6e 64 69 61 6e 6e 65 73 73 20 6f 6e 20 gardless.......of.endianness.on.
2f800 74 68 65 20 74 61 72 67 65 74 20 70 6c 61 74 66 6f 72 6d 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a the.target.platform........</p>.
2f820 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 74 79 70 65 49 64 22 3e 40 74 ..............<h2.id="typeId">@t
2f840 79 70 65 49 64 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 ypeId</h2>........<pre><code.cla
2f860 73 73 3d 22 7a 69 67 22 3e 40 74 79 70 65 49 64 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 ss="zig">@typeId(comptime.T:.typ
2f880 65 29 20 2d 26 67 74 3b 20 40 69 6d 70 6f 72 74 28 22 62 75 69 6c 74 69 6e 22 29 2e 54 79 70 65 e).-&gt;.@import("builtin").Type
2f8a0 49 64 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 Id</code></pre>.......<p>.......
2f8c0 52 65 74 75 72 6e 73 20 77 68 69 63 68 20 6b 69 6e 64 20 6f 66 20 74 79 70 65 20 73 6f 6d 65 74 Returns.which.kind.of.type.somet
2f8e0 68 69 6e 67 20 69 73 2e 20 50 6f 73 73 69 62 6c 65 20 76 61 6c 75 65 73 3a 0a 20 20 20 20 20 20 hing.is..Possible.values:.......
2f900 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 </p>.......<pre><code.class="zig
2f920 22 3e 70 75 62 20 63 6f 6e 73 74 20 54 79 70 65 49 64 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 ">pub.const.TypeId.=.enum.{.....
2f940 54 79 70 65 2c 0a 20 20 20 20 56 6f 69 64 2c 0a 20 20 20 20 42 6f 6f 6c 2c 0a 20 20 20 20 4e 6f Type,.....Void,.....Bool,.....No
2f960 52 65 74 75 72 6e 2c 0a 20 20 20 20 49 6e 74 2c 0a 20 20 20 20 46 6c 6f 61 74 2c 0a 20 20 20 20 Return,.....Int,.....Float,.....
2f980 50 6f 69 6e 74 65 72 2c 0a 20 20 20 20 41 72 72 61 79 2c 0a 20 20 20 20 53 74 72 75 63 74 2c 0a Pointer,.....Array,.....Struct,.
2f9a0 20 20 20 20 46 6c 6f 61 74 4c 69 74 65 72 61 6c 2c 0a 20 20 20 20 49 6e 74 4c 69 74 65 72 61 6c ....FloatLiteral,.....IntLiteral
2f9c0 2c 0a 20 20 20 20 55 6e 64 65 66 69 6e 65 64 4c 69 74 65 72 61 6c 2c 0a 20 20 20 20 4e 75 6c 6c ,.....UndefinedLiteral,.....Null
2f9e0 4c 69 74 65 72 61 6c 2c 0a 20 20 20 20 4e 75 6c 6c 61 62 6c 65 2c 0a 20 20 20 20 45 72 72 6f 72 Literal,.....Nullable,.....Error
2fa00 55 6e 69 6f 6e 2c 0a 20 20 20 20 45 72 72 6f 72 2c 0a 20 20 20 20 45 6e 75 6d 2c 0a 20 20 20 20 Union,.....Error,.....Enum,.....
2fa20 55 6e 69 6f 6e 2c 0a 20 20 20 20 46 6e 2c 0a 20 20 20 20 4e 61 6d 65 73 70 61 63 65 2c 0a 20 20 Union,.....Fn,.....Namespace,...
2fa40 20 20 42 6c 6f 63 6b 2c 0a 20 20 20 20 42 6f 75 6e 64 46 6e 2c 0a 20 20 20 20 41 72 67 54 75 70 ..Block,.....BoundFn,.....ArgTup
2fa60 6c 65 2c 0a 20 20 20 20 4f 70 61 71 75 65 2c 0a 7d 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a le,.....Opaque,.};</code></pre>.
2fa80 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 74 79 70 65 4e 61 6d 65 22 3e 40 .............<h2.id="typeName">@
2faa0 74 79 70 65 4e 61 6d 65 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 typeName</h2>........<pre><code.
2fac0 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 74 79 70 65 4e 61 6d 65 28 54 3a 20 74 79 70 65 29 20 2d class="zig">@typeName(T:.type).-
2fae0 26 67 74 3b 20 5b 5d 75 38 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e &gt;.[]u8</code></pre>.......<p>
2fb00 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 .......This.function.returns.the
2fb20 20 73 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 20 74 79 70 65 .string.representation.of.a.type
2fb40 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 ........</p>...............<h2.i
2fb60 64 3d 22 74 79 70 65 4f 66 22 3e 40 74 79 70 65 4f 66 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c d="typeOf">@typeOf</h2>........<
2fb80 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 74 79 70 65 4f 66 28 65 78 pre><code.class="zig">@typeOf(ex
2fba0 70 72 65 73 73 69 6f 6e 29 20 2d 26 67 74 3b 20 74 79 70 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 pression).-&gt;.type</code></pre
2fbc0 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 >.......<p>.......This.function.
2fbe0 72 65 74 75 72 6e 73 20 61 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 63 6f 6e 73 74 61 6e 74 2c returns.a.compile-time.constant,
2fc00 20 77 68 69 63 68 20 69 73 20 74 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 0a 20 20 20 20 20 20 .which.is.the.type.of.the.......
2fc20 65 78 70 72 65 73 73 69 6f 6e 20 70 61 73 73 65 64 20 61 73 20 61 6e 20 61 72 67 75 6d 65 6e 74 expression.passed.as.an.argument
2fc40 2e 20 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65 76 61 6c 75 61 74 65 64 2e 0a 20 ..The.expression.is.evaluated...
2fc60 20 20 20 20 20 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c .....</p>......................<
2fc80 68 31 20 69 64 3d 22 42 75 69 6c 64 2d 4d 6f 64 65 22 3e 42 75 69 6c 64 20 4d 6f 64 65 3c 2f 68 h1.id="Build-Mode">Build.Mode</h
2fca0 31 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 5a 69 67 20 68 61 73 20 74 68 72 65 1>........<p>.......Zig.has.thre
2fcc0 65 20 62 75 69 6c 64 20 6d 6f 64 65 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 e.build.modes:.......</p>.......
2fce0 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 44 65 62 75 67 <ul>.........<li><a.href="#Debug
2fd00 22 3e 44 65 62 75 67 3c 2f 61 3e 20 28 64 65 66 61 75 6c 74 29 3c 2f 6c 69 3e 0a 20 20 20 20 20 ">Debug</a>.(default)</li>......
2fd20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 52 65 6c 65 61 73 65 46 61 73 74 22 3e 52 65 ...<li><a.href="#ReleaseFast">Re
2fd40 6c 65 61 73 65 46 61 73 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c leaseFast</a></li>.........<li><
2fd60 61 20 68 72 65 66 3d 22 23 52 65 6c 65 61 73 65 53 61 66 65 22 3e 52 65 6c 65 61 73 65 53 61 66 a.href="#ReleaseSafe">ReleaseSaf
2fd80 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e e</a></li>.......</ul>.......<p>
2fda0 0a 20 20 20 20 20 20 54 6f 20 61 64 64 20 73 74 61 6e 64 61 72 64 20 62 75 69 6c 64 20 6f 70 74 .......To.add.standard.build.opt
2fdc0 69 6f 6e 73 20 74 6f 20 61 20 3c 63 6f 64 65 3e 62 75 69 6c 64 2e 7a 69 67 3c 2f 63 6f 64 65 3e ions.to.a.<code>build.zig</code>
2fde0 20 66 69 6c 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f .file:.......</p>.......<pre><co
2fe00 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 42 75 69 6c 64 65 72 20 3d 20 40 de.class="zig">const.Builder.=.@
2fe20 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 62 75 69 6c 64 2e 42 75 import(&quot;std&quot;).build.Bu
2fe40 69 6c 64 65 72 3b 0a 0a 70 75 62 20 66 6e 20 62 75 69 6c 64 28 62 3a 20 26 61 6d 70 3b 42 75 69 ilder;..pub.fn.build(b:.&amp;Bui
2fe60 6c 64 65 72 29 20 76 6f 69 64 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 65 78 65 20 3d 20 62 2e 61 lder).void.{.....const.exe.=.b.a
2fe80 64 64 45 78 65 63 75 74 61 62 6c 65 28 26 71 75 6f 74 3b 65 78 61 6d 70 6c 65 26 71 75 6f 74 3b ddExecutable(&quot;example&quot;
2fea0 2c 20 26 71 75 6f 74 3b 65 78 61 6d 70 6c 65 2e 7a 69 67 26 71 75 6f 74 3b 29 3b 0a 20 20 20 20 ,.&quot;example.zig&quot;);.....
2fec0 65 78 65 2e 73 65 74 42 75 69 6c 64 4d 6f 64 65 28 62 2e 73 74 61 6e 64 61 72 64 52 65 6c 65 61 exe.setBuildMode(b.standardRelea
2fee0 73 65 4f 70 74 69 6f 6e 73 28 29 29 3b 0a 20 20 20 20 62 2e 64 65 66 61 75 6c 74 5f 73 74 65 70 seOptions());.....b.default_step
2ff00 2e 64 65 70 65 6e 64 4f 6e 28 26 61 6d 70 3b 65 78 65 2e 73 74 65 70 29 3b 0a 7d 3c 2f 63 6f 64 .dependOn(&amp;exe.step);.}</cod
2ff20 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 63 61 e></pre>.......<p>.......This.ca
2ff40 75 73 65 73 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 74 6f 20 62 65 20 61 76 61 69 6c 61 62 uses.these.options.to.be.availab
2ff60 6c 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 le:.......</p>.......<pre><code.
2ff80 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 20 20 2d 44 72 65 6c 65 61 73 65 2d 73 61 66 65 3d 28 class="shell">..-Drelease-safe=(
2ffa0 62 6f 6f 6c 29 20 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 6f 6e 20 61 6e 64 20 73 61 66 65 bool)..optimizations.on.and.safe
2ffc0 74 79 20 6f 6e 0a 20 20 2d 44 72 65 6c 65 61 73 65 2d 66 61 73 74 3d 28 62 6f 6f 6c 29 20 20 6f ty.on...-Drelease-fast=(bool)..o
2ffe0 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 6f 6e 20 61 6e 64 20 73 61 66 65 74 79 20 6f 66 66 3c 2f ptimizations.on.and.safety.off</
30000 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 44 65 62 75 67 22 code></pre>.......<h2.id="Debug"
30020 3e 44 65 62 75 67 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c >Debug</h2>........<pre><code.cl
30040 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 65 78 65 20 65 78 61 6d ass="shell">$.zig.build-exe.exam
30060 70 6c 65 2e 7a 69 67 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a ple.zig</code></pre>.......<ul>.
30080 20 20 20 20 20 20 20 20 3c 6c 69 3e 46 61 73 74 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 73 70 65 ........<li>Fast.compilation.spe
300a0 65 64 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 53 61 66 65 74 79 20 63 68 65 63 6b ed</li>.........<li>Safety.check
300c0 73 20 65 6e 61 62 6c 65 64 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 53 6c 6f 77 20 s.enabled</li>.........<li>Slow.
300e0 72 75 6e 74 69 6d 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c runtime.performance</li>.......<
30100 2f 75 6c 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 52 65 6c 65 61 73 /ul>..............<h2.id="Releas
30120 65 46 61 73 74 22 3e 52 65 6c 65 61 73 65 46 61 73 74 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c eFast">ReleaseFast</h2>........<
30140 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 62 75 pre><code.class="shell">$.zig.bu
30160 69 6c 64 2d 65 78 65 20 65 78 61 6d 70 6c 65 2e 7a 69 67 20 2d 2d 72 65 6c 65 61 73 65 2d 66 61 ild-exe.example.zig.--release-fa
30180 73 74 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 st</code></pre>.......<ul>......
301a0 20 20 20 3c 6c 69 3e 46 61 73 74 20 72 75 6e 74 69 6d 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 3c ...<li>Fast.runtime.performance<
301c0 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 53 61 66 65 74 79 20 63 68 65 63 6b 73 20 64 /li>.........<li>Safety.checks.d
301e0 69 73 61 62 6c 65 64 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 53 6c 6f 77 20 63 6f isabled</li>.........<li>Slow.co
30200 6d 70 69 6c 61 74 69 6f 6e 20 73 70 65 65 64 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e mpilation.speed</li>.......</ul>
30220 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 52 65 6c 65 61 73 65 53 61 66 ..............<h2.id="ReleaseSaf
30240 65 22 3e 52 65 6c 65 61 73 65 53 61 66 65 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e e">ReleaseSafe</h2>........<pre>
30260 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d <code.class="shell">$.zig.build-
30280 65 78 65 20 65 78 61 6d 70 6c 65 2e 7a 69 67 20 2d 2d 72 65 6c 65 61 73 65 2d 73 61 66 65 3c 2f exe.example.zig.--release-safe</
302a0 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c code></pre>.......<ul>.........<
302c0 6c 69 3e 4d 65 64 69 75 6d 20 72 75 6e 74 69 6d 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 3c 2f 6c li>Medium.runtime.performance</l
302e0 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 53 61 66 65 74 79 20 63 68 65 63 6b 73 20 65 6e 61 i>.........<li>Safety.checks.ena
30300 62 6c 65 64 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 53 6c 6f 77 20 63 6f 6d 70 69 bled</li>.........<li>Slow.compi
30320 6c 61 74 69 6f 6e 20 73 70 65 65 64 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 lation.speed</li>.......</ul>...
30340 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 ....<p>See.also:</p><ul>.<li><a.
30360 68 72 65 66 3d 22 23 43 6f 6d 70 69 6c 65 2d 56 61 72 69 61 62 6c 65 73 22 3e 43 6f 6d 70 69 6c href="#Compile-Variables">Compil
30380 65 20 56 61 72 69 61 62 6c 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 e.Variables</a></li>.<li><a.href
303a0 3d 22 23 5a 69 67 2d 42 75 69 6c 64 2d 53 79 73 74 65 6d 22 3e 5a 69 67 20 42 75 69 6c 64 20 53 ="#Zig-Build-System">Zig.Build.S
303c0 79 73 74 65 6d 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 55 6e 64 ystem</a></li>.<li><a.href="#Und
303e0 65 66 69 6e 65 64 2d 42 65 68 61 76 69 6f 72 22 3e 55 6e 64 65 66 69 6e 65 64 20 42 65 68 61 76 efined-Behavior">Undefined.Behav
30400 69 6f 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 ior</a></li>.</ul>..............
30420 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 55 6e 64 65 66 69 6e 65 64 2d 42 65 68 61 76 69 ........<h1.id="Undefined-Behavi
30440 6f 72 22 3e 55 6e 64 65 66 69 6e 65 64 20 42 65 68 61 76 69 6f 72 3c 2f 68 31 3e 0a 0a 20 20 20 or">Undefined.Behavior</h1>.....
30460 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 5a 69 67 20 68 61 73 20 6d 61 6e 79 20 69 6e 73 74 61 6e ...<p>.......Zig.has.many.instan
30480 63 65 73 20 6f 66 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 2e 20 49 66 20 75 6e ces.of.undefined.behavior..If.un
304a0 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 20 69 73 0a 20 20 20 20 20 20 64 65 74 65 63 74 defined.behavior.is.......detect
304c0 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 5a 69 67 20 65 6d 69 74 73 20 61 6e ed.at.compile-time,.Zig.emits.an
304e0 20 65 72 72 6f 72 2e 20 4d 6f 73 74 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 20 .error..Most.undefined.behavior.
30500 74 68 61 74 0a 20 20 20 20 20 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 63 74 65 64 20 61 74 that.......cannot.be.detected.at
30520 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 63 61 6e 20 62 65 20 64 65 74 65 63 74 65 64 20 61 74 .compile-time.can.be.detected.at
30540 20 72 75 6e 74 69 6d 65 2e 20 49 6e 20 74 68 65 73 65 20 63 61 73 65 73 2c 0a 20 20 20 20 20 20 .runtime..In.these.cases,.......
30560 5a 69 67 20 68 61 73 20 73 61 66 65 74 79 20 63 68 65 63 6b 73 2e 20 53 61 66 65 74 79 20 63 68 Zig.has.safety.checks..Safety.ch
30580 65 63 6b 73 20 63 61 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20 6f 6e 20 61 20 70 65 72 2d 62 6c ecks.can.be.disabled.on.a.per-bl
305a0 6f 63 6b 20 62 61 73 69 73 0a 20 20 20 20 20 20 77 69 74 68 20 3c 63 6f 64 65 3e 40 73 65 74 52 ock.basis.......with.<code>@setR
305c0 75 6e 74 69 6d 65 53 61 66 65 74 79 3c 2f 63 6f 64 65 3e 2e 20 54 68 65 20 3c 61 20 68 72 65 66 untimeSafety</code>..The.<a.href
305e0 3d 22 23 52 65 6c 65 61 73 65 46 61 73 74 22 3e 52 65 6c 65 61 73 65 46 61 73 74 3c 2f 61 3e 0a ="#ReleaseFast">ReleaseFast</a>.
30600 20 20 20 20 20 20 62 75 69 6c 64 20 6d 6f 64 65 20 64 69 73 61 62 6c 65 73 20 61 6c 6c 20 73 61 ......build.mode.disables.all.sa
30620 66 65 74 79 20 63 68 65 63 6b 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 66 61 63 69 6c 69 74 61 fety.checks.in.order.to.facilita
30640 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 te.optimizations........</p>....
30660 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 57 68 65 6e 20 61 20 73 61 66 65 74 79 20 63 68 65 63 6b ...<p>.......When.a.safety.check
30680 20 66 61 69 6c 73 2c 20 5a 69 67 20 63 72 61 73 68 65 73 20 77 69 74 68 20 61 20 73 74 61 63 6b .fails,.Zig.crashes.with.a.stack
306a0 20 74 72 61 63 65 2c 20 6c 69 6b 65 20 74 68 69 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 .trace,.like.this:.......</p>...
306c0 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e ....<p.class="file">test.zig</p>
306e0 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 74 65 73 74 20 26 71 75 6f <pre><code.class="zig">test.&quo
30700 74 3b 73 61 66 65 74 79 20 63 68 65 63 6b 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 75 6e 72 65 61 t;safety.check&quot;.{.....unrea
30720 63 68 61 62 6c 65 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 chable;.}</code></pre><pre><code
30740 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a .class="shell">$.zig.test.test.z
30760 69 67 0a 54 65 73 74 20 31 2f 31 20 73 61 66 65 74 79 20 63 68 65 63 6b 2e 2e 2e 72 65 61 63 68 ig.Test.1/1.safety.check...reach
30780 65 64 20 75 6e 72 65 61 63 68 61 62 6c 65 20 63 6f 64 65 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d ed.unreachable.code.<span.class=
307a0 22 74 33 37 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 "t37_1">/home/andy/dev/zig/docge
307c0 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 32 3a 35 3c 2f 73 70 61 6e 3e 3a 20 3c 73 70 61 6e n_tmp/test.zig:2:5</span>:.<span
307e0 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 30 33 36 37 38 20 69 6e 20 3f 3f 3f 20 28 74 .class="t2_0">0x203678.in.???.(t
30800 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 75 6e 72 65 61 63 68 61 62 6c 65 3b 0a 20 20 20 est)</span>.....unreachable;....
30820 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 .<span.class="t32_1">^</span>.<s
30840 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 37 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 pan.class="t37_1">/home/andy/dev
30860 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 74 /zig/build/lib/zig/std/special/t
30880 65 73 74 5f 72 75 6e 6e 65 72 2e 7a 69 67 3a 31 31 3a 32 35 3c 2f 73 70 61 6e 3e 3a 20 3c 73 70 est_runner.zig:11:25</span>:.<sp
308a0 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 31 64 34 35 38 20 69 6e 20 3f 3f 3f 20 an.class="t2_0">0x21d458.in.???.
308c0 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 20 20 20 20 74 72 79 20 74 65 73 74 5f 66 (test)</span>.........try.test_f
308e0 6e 2e 66 75 6e 63 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n.func();.......................
30900 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c ..<span.class="t32_1">^</span>.<
30920 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 37 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 span.class="t37_1">/home/andy/de
30940 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f v/zig/build/lib/zig/std/special/
30960 62 6f 6f 74 73 74 72 61 70 2e 7a 69 67 3a 38 35 3a 32 32 3c 2f 73 70 61 6e 3e 3a 20 3c 73 70 61 bootstrap.zig:85:22</span>:.<spa
30980 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 31 64 32 35 62 20 69 6e 20 3f 3f 3f 20 28 n.class="t2_0">0x21d25b.in.???.(
309a0 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 6f 74 2e 6d 61 test)</span>.............root.ma
309c0 69 6e 28 29 20 63 61 74 63 68 20 7c 65 72 72 7c 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 in().catch.|err|.{..............
309e0 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 ........<span.class="t32_1">^</s
30a00 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 37 5f 31 22 3e 2f 68 6f 6d 65 2f 61 pan>.<span.class="t37_1">/home/a
30a20 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 ndy/dev/zig/build/lib/zig/std/sp
30a40 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 2e 7a 69 67 3a 36 32 3a 32 30 3c 2f 73 70 61 6e 3e ecial/bootstrap.zig:62:20</span>
30a60 3a 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 31 64 31 62 62 20 69 6e :.<span.class="t2_0">0x21d1bb.in
30a80 20 3f 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 72 65 74 75 72 6e 20 63 61 .???.(test)</span>.....return.ca
30aa0 6c 6c 4d 61 69 6e 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 llMain();....................<sp
30ac0 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 an.class="t32_1">^</span>.<span.
30ae0 63 6c 61 73 73 3d 22 74 33 37 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 class="t37_1">/home/andy/dev/zig
30b00 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 /build/lib/zig/std/special/boots
30b20 74 72 61 70 2e 7a 69 67 3a 35 32 3a 33 39 3c 2f 73 70 61 6e 3e 3a 20 3c 73 70 61 6e 20 63 6c 61 trap.zig:52:39</span>:.<span.cla
30b40 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 31 64 30 34 63 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 ss="t2_0">0x21d04c.in.???.(test)
30b60 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 73 74 64 2e 6f 73 2e 70 6f 73 69 78 2e 65 78 69 74 28 63 61 </span>.....std.os.posix.exit(ca
30b80 6c 6c 4d 61 69 6e 57 69 74 68 41 72 67 73 28 61 72 67 63 2c 20 61 72 67 76 2c 20 65 6e 76 70 29 llMainWithArgs(argc,.argv,.envp)
30ba0 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 );..............................
30bc0 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f .........<span.class="t32_1">^</
30be0 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 37 5f 31 22 3e 2f 68 6f 6d 65 2f span>.<span.class="t37_1">/home/
30c00 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 andy/dev/zig/build/lib/zig/std/s
30c20 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 2e 7a 69 67 3a 33 39 3a 35 3c 2f 73 70 61 6e 3e pecial/bootstrap.zig:39:5</span>
30c40 3a 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 31 63 66 64 30 20 69 6e :.<span.class="t2_0">0x21cfd0.in
30c60 20 3f 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 40 6e 6f 49 6e 6c 69 6e 65 .???.(test)</span>.....@noInline
30c80 43 61 6c 6c 28 70 6f 73 69 78 43 61 6c 6c 4d 61 69 6e 41 6e 64 45 78 69 74 29 3b 0a 20 20 20 20 Call(posixCallMainAndExit);.....
30ca0 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 0a 54 65 <span.class="t32_1">^</span>..Te
30cc0 73 74 73 20 66 61 69 6c 65 64 2e 20 55 73 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f sts.failed..Use.the.following.co
30ce0 6d 6d 61 6e 64 20 74 6f 20 72 65 70 72 6f 64 75 63 65 20 74 68 65 20 66 61 69 6c 75 72 65 3a 0a mmand.to.reproduce.the.failure:.
30d00 2e 2f 7a 69 67 2d 63 61 63 68 65 2f 74 65 73 74 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a ./zig-cache/test.</code></pre>..
30d20 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 52 65 61 63 68 69 6e 67 2d 55 6e 72 65 61 63 68 61 62 ......<h2.id="Reaching-Unreachab
30d40 6c 65 2d 43 6f 64 65 22 3e 52 65 61 63 68 69 6e 67 20 55 6e 72 65 61 63 68 61 62 6c 65 20 43 6f le-Code">Reaching.Unreachable.Co
30d60 64 65 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d de</h2>........<p>At.compile-tim
30d80 65 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 e:</p>.......<p.class="file">tes
30da0 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e t.zig</p><pre><code.class="zig">
30dc0 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 66 61 6c 73 65 29 3b 0a 7d 0a comptime.{.....assert(false);.}.
30de0 66 6e 20 61 73 73 65 72 74 28 6f 6b 3a 20 62 6f 6f 6c 29 20 76 6f 69 64 20 7b 0a 20 20 20 20 69 fn.assert(ok:.bool).void.{.....i
30e00 66 20 28 21 6f 6b 29 20 75 6e 72 65 61 63 68 61 62 6c 65 3b 20 2f 2f 20 61 73 73 65 72 74 69 6f f.(!ok).unreachable;.//.assertio
30e20 6e 20 66 61 69 6c 75 72 65 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f n.failure.}</code></pre><pre><co
30e40 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 de.class="shell">$.zig.test.test
30e60 2e 7a 69 67 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e .zig.<span.class="t0_1">/home/an
30e80 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 35 dy/dev/zig/docgen_tmp/test.zig:5
30ea0 3a 31 34 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e :14:.</span><span.class="t31_1">
30ec0 65 72 72 6f 72 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e error:</span><span.class="t0_1">
30ee0 20 75 6e 61 62 6c 65 20 74 6f 20 65 76 61 6c 75 61 74 65 20 63 6f 6e 73 74 61 6e 74 20 65 78 70 .unable.to.evaluate.constant.exp
30f00 72 65 73 73 69 6f 6e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 69 66 20 28 21 6f 6b 29 20 75 6e 72 65 ression</span>.....if.(!ok).unre
30f20 61 63 68 61 62 6c 65 3b 20 2f 2f 20 61 73 73 65 72 74 69 6f 6e 20 66 61 69 6c 75 72 65 0a 20 20 achable;.//.assertion.failure...
30f40 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e ...........<span.class="t32_1">^
30f60 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 </span>.<span.class="t0_1">/home
30f80 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 /andy/dev/zig/docgen_tmp/test.zi
30fa0 67 3a 32 3a 31 31 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 36 5f g:2:11:.</span><span.class="t36_
30fc0 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 1">note:</span><span.class="t0_1
30fe0 22 3e 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 61 ">.called.from.here</span>.....a
31000 73 73 65 72 74 28 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c ssert(false);...........<span.cl
31020 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 ass="t32_1">^</span>.<span.class
31040 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 ="t0_1">/home/andy/dev/zig/docge
31060 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 31 3a 31 30 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 n_tmp/test.zig:1:10:.</span><spa
31080 6e 20 63 6c 61 73 73 3d 22 74 33 36 5f 31 22 3e 6e 6f 74 65 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 n.class="t36_1">note:</span><spa
310a0 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 n.class="t0_1">.called.from.here
310c0 3c 2f 73 70 61 6e 3e 0a 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 20 20 20 20 20 3c 73 70 61 </span>.comptime.{..........<spa
310e0 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e n.class="t32_1">^</span>.</code>
31100 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 72 75 6e 74 69 6d 65 20 63 72 61 73 </pre>........<p>At.runtime.cras
31120 68 65 73 20 77 69 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 65 3e 72 65 61 63 68 hes.with.the.message.<code>reach
31140 65 64 20 75 6e 72 65 61 63 68 61 62 6c 65 20 63 6f 64 65 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 61 ed.unreachable.code</code>.and.a
31160 20 73 74 61 63 6b 20 74 72 61 63 65 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c .stack.trace.</p>..............<
31180 68 32 20 69 64 3d 22 49 6e 64 65 78 2d 6f 75 74 2d 6f 66 2d 42 6f 75 6e 64 73 22 3e 49 6e 64 65 h2.id="Index-out-of-Bounds">Inde
311a0 78 20 6f 75 74 20 6f 66 20 42 6f 75 6e 64 73 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 41 x.out.of.Bounds</h2>........<p>A
311c0 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 t.compile-time:</p>.......<p.cla
311e0 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 ss="file">test.zig</p><pre><code
31200 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 63 6f 6e 73 .class="zig">comptime.{.....cons
31220 74 20 61 72 72 61 79 20 3d 20 26 71 75 6f 74 3b 68 65 6c 6c 6f 26 71 75 6f 74 3b 3b 0a 20 20 20 t.array.=.&quot;hello&quot;;....
31240 20 63 6f 6e 73 74 20 67 61 72 62 61 67 65 20 3d 20 61 72 72 61 79 5b 35 5d 3b 0a 7d 3c 2f 63 6f .const.garbage.=.array[5];.}</co
31260 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c de></pre><pre><code.class="shell
31280 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 3c 73 70 61 6e 20 63 6c 61 73 ">$.zig.test.test.zig.<span.clas
312a0 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 s="t0_1">/home/andy/dev/zig/docg
312c0 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 33 3a 32 36 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 en_tmp/test.zig:3:26:.</span><sp
312e0 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 6e 3e 3c 73 an.class="t31_1">error:</span><s
31300 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 69 6e 64 65 78 20 35 20 6f 75 74 73 69 64 pan.class="t0_1">.index.5.outsid
31320 65 20 61 72 72 61 79 20 6f 66 20 73 69 7a 65 20 35 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 63 6f 6e e.array.of.size.5</span>.....con
31340 73 74 20 67 61 72 62 61 67 65 20 3d 20 61 72 72 61 79 5b 35 5d 3b 0a 20 20 20 20 20 20 20 20 20 st.garbage.=.array[5];..........
31360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 ................<span.class="t32
31380 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 _1">^</span>.</code></pre>......
313a0 20 20 3c 70 3e 41 74 20 72 75 6e 74 69 6d 65 20 63 72 61 73 68 65 73 20 77 69 74 68 20 74 68 65 ..<p>At.runtime.crashes.with.the
313c0 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 65 3e 69 6e 64 65 78 20 6f 75 74 20 6f 66 20 62 6f 75 6e .message.<code>index.out.of.boun
313e0 64 73 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 61 20 73 74 61 63 6b 20 74 72 61 63 65 2e 3c 2f 70 3e ds</code>.and.a.stack.trace.</p>
31400 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 43 61 73 74 2d 4e 65 67 61 74 ..............<h2.id="Cast-Negat
31420 69 76 65 2d 4e 75 6d 62 65 72 2d 74 6f 2d 55 6e 73 69 67 6e 65 64 2d 49 6e 74 65 67 65 72 22 3e ive-Number-to-Unsigned-Integer">
31440 43 61 73 74 20 4e 65 67 61 74 69 76 65 20 4e 75 6d 62 65 72 20 74 6f 20 55 6e 73 69 67 6e 65 64 Cast.Negative.Number.to.Unsigned
31460 20 49 6e 74 65 67 65 72 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 63 6f 6d 70 69 .Integer</h2>........<p>At.compi
31480 6c 65 2d 74 69 6d 65 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c le-time:</p>.......<p.class="fil
314a0 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d e">test.zig</p><pre><code.class=
314c0 22 7a 69 67 22 3e 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 76 61 6c 75 65 "zig">comptime.{.....const.value
314e0 3a 20 69 33 32 20 3d 20 2d 31 3b 0a 20 20 20 20 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 3d :.i32.=.-1;.....const.unsigned.=
31500 20 75 33 32 28 76 61 6c 75 65 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e .u32(value);.}</code></pre><pre>
31520 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 <code.class="shell">$.zig.test.t
31540 65 73 74 2e 7a 69 67 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 est.zig.<span.class="t0_1">/home
31560 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 /andy/dev/zig/docgen_tmp/test.zi
31580 67 3a 33 3a 32 35 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f g:3:25:.</span><span.class="t31_
315a0 31 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 1">error:</span><span.class="t0_
315c0 31 22 3e 20 61 74 74 65 6d 70 74 20 74 6f 20 63 61 73 74 20 6e 65 67 61 74 69 76 65 20 76 61 6c 1">.attempt.to.cast.negative.val
315e0 75 65 20 74 6f 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 3c 2f 73 70 61 6e 3e 0a 20 20 ue.to.unsigned.integer</span>...
31600 20 20 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 3d 20 75 33 32 28 76 61 6c 75 65 29 3b 0a 20 ..const.unsigned.=.u32(value);..
31620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 .......................<span.cla
31640 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 ss="t32_1">^</span>.</code></pre
31660 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 72 75 6e 74 69 6d 65 20 63 72 61 73 68 65 73 20 77 >........<p>At.runtime.crashes.w
31680 69 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 65 3e 61 74 74 65 6d 70 74 20 74 6f ith.the.message.<code>attempt.to
316a0 20 63 61 73 74 20 6e 65 67 61 74 69 76 65 20 76 61 6c 75 65 20 74 6f 20 75 6e 73 69 67 6e 65 64 .cast.negative.value.to.unsigned
316c0 20 69 6e 74 65 67 65 72 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 61 20 73 74 61 63 6b 20 74 72 61 63 .integer</code>.and.a.stack.trac
316e0 65 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 66 20 79 6f 75 20 61 72 e.</p>.......<p>.......If.you.ar
31700 65 20 74 72 79 69 6e 67 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 76 e.trying.to.obtain.the.maximum.v
31720 61 6c 75 65 20 6f 66 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 2c 20 75 73 65 alue.of.an.unsigned.integer,.use
31740 20 3c 63 6f 64 65 3e 40 6d 61 78 56 61 6c 75 65 28 54 29 3c 2f 63 6f 64 65 3e 2c 0a 20 20 20 20 .<code>@maxValue(T)</code>,.....
31760 20 20 77 68 65 72 65 20 3c 63 6f 64 65 3e 54 3c 2f 63 6f 64 65 3e 20 69 73 20 74 68 65 20 69 6e ..where.<code>T</code>.is.the.in
31780 74 65 67 65 72 20 74 79 70 65 2c 20 73 75 63 68 20 61 73 20 3c 63 6f 64 65 3e 75 33 32 3c 2f 63 teger.type,.such.as.<code>u32</c
317a0 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 ode>........</p>..............<h
317c0 32 20 69 64 3d 22 43 61 73 74 2d 54 72 75 6e 63 61 74 65 73 2d 44 61 74 61 22 3e 43 61 73 74 20 2.id="Cast-Truncates-Data">Cast.
317e0 54 72 75 6e 63 61 74 65 73 20 44 61 74 61 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 41 74 Truncates.Data</h2>........<p>At
31800 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 .compile-time:</p>.......<p.clas
31820 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 s="file">test.zig</p><pre><code.
31840 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 63 6f 6e 73 74 class="zig">comptime.{.....const
31860 20 73 70 61 72 74 61 6e 5f 63 6f 75 6e 74 3a 20 75 31 36 20 3d 20 33 30 30 3b 0a 20 20 20 20 63 .spartan_count:.u16.=.300;.....c
31880 6f 6e 73 74 20 62 79 74 65 20 3d 20 75 38 28 73 70 61 72 74 61 6e 5f 63 6f 75 6e 74 29 3b 0a 7d onst.byte.=.u8(spartan_count);.}
318a0 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 </code></pre><pre><code.class="s
318c0 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 3c 73 70 61 6e 20 hell">$.zig.test.test.zig.<span.
318e0 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f class="t0_1">/home/andy/dev/zig/
31900 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 33 3a 32 30 3a 20 3c 2f 73 70 61 6e docgen_tmp/test.zig:3:20:.</span
31920 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 ><span.class="t31_1">error:</spa
31940 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 63 61 73 74 20 66 72 6f 6d 20 n><span.class="t0_1">.cast.from.
31960 27 75 31 36 27 20 74 6f 20 27 75 38 27 20 74 72 75 6e 63 61 74 65 73 20 62 69 74 73 3c 2f 73 70 'u16'.to.'u8'.truncates.bits</sp
31980 61 6e 3e 0a 20 20 20 20 63 6f 6e 73 74 20 62 79 74 65 20 3d 20 75 38 28 73 70 61 72 74 61 6e 5f an>.....const.byte.=.u8(spartan_
319a0 63 6f 75 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e count);....................<span
319c0 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c .class="t32_1">^</span>.</code><
319e0 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 72 75 6e 74 69 6d 65 20 63 72 61 73 68 /pre>........<p>At.runtime.crash
31a00 65 73 20 77 69 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 65 3e 69 6e 74 65 67 65 es.with.the.message.<code>intege
31a20 72 20 63 61 73 74 20 74 72 75 6e 63 61 74 65 64 20 62 69 74 73 3c 2f 63 6f 64 65 3e 20 61 6e 64 r.cast.truncated.bits</code>.and
31a40 20 61 20 73 74 61 63 6b 20 74 72 61 63 65 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 .a.stack.trace.</p>.......<p>...
31a60 20 20 20 20 49 66 20 79 6f 75 20 61 72 65 20 74 72 79 69 6e 67 20 74 6f 20 74 72 75 6e 63 61 74 ....If.you.are.trying.to.truncat
31a80 65 20 62 69 74 73 2c 20 75 73 65 20 3c 63 6f 64 65 3e 40 74 72 75 6e 63 61 74 65 28 54 2c 20 76 e.bits,.use.<code>@truncate(T,.v
31aa0 61 6c 75 65 29 3c 2f 63 6f 64 65 3e 2c 0a 20 20 20 20 20 20 77 68 65 72 65 20 3c 63 6f 64 65 3e alue)</code>,.......where.<code>
31ac0 54 3c 2f 63 6f 64 65 3e 20 69 73 20 74 68 65 20 69 6e 74 65 67 65 72 20 74 79 70 65 2c 20 73 75 T</code>.is.the.integer.type,.su
31ae0 63 68 20 61 73 20 3c 63 6f 64 65 3e 75 33 32 3c 2f 63 6f 64 65 3e 2c 20 61 6e 64 20 3c 63 6f 64 ch.as.<code>u32</code>,.and.<cod
31b00 65 3e 76 61 6c 75 65 3c 2f 63 6f 64 65 3e 0a 20 20 20 20 20 20 69 73 20 74 68 65 20 76 61 6c 75 e>value</code>.......is.the.valu
31b20 65 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 74 72 75 6e 63 61 74 65 2e 0a 20 20 20 20 20 20 3c 2f e.you.want.to.truncate........</
31b40 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 49 6e 74 65 67 65 72 2d p>..............<h2.id="Integer-
31b60 4f 76 65 72 66 6c 6f 77 22 3e 49 6e 74 65 67 65 72 20 4f 76 65 72 66 6c 6f 77 3c 2f 68 32 3e 0a Overflow">Integer.Overflow</h2>.
31b80 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 44 65 66 61 75 6c 74 2d 4f 70 65 72 61 74 69 6f 6e .......<h3.id="Default-Operation
31ba0 73 22 3e 44 65 66 61 75 6c 74 20 4f 70 65 72 61 74 69 6f 6e 73 3c 2f 68 33 3e 0a 0a 20 20 20 20 s">Default.Operations</h3>......
31bc0 20 20 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70 65 72 61 74 6f 72 73 20 63 61 6e ..<p>The.following.operators.can
31be0 20 63 61 75 73 65 20 69 6e 74 65 67 65 72 20 6f 76 65 72 66 6c 6f 77 3a 3c 2f 70 3e 0a 20 20 20 .cause.integer.overflow:</p>....
31c00 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 2b 3c 2f 63 6f 64 ...<ul>.........<li><code>+</cod
31c20 65 3e 20 28 61 64 64 69 74 69 6f 6e 29 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c e>.(addition)</li>.........<li><
31c40 63 6f 64 65 3e 2d 3c 2f 63 6f 64 65 3e 20 28 73 75 62 74 72 61 63 74 69 6f 6e 29 3c 2f 6c 69 3e code>-</code>.(subtraction)</li>
31c60 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 2d 3c 2f 63 6f 64 65 3e 20 28 6e 65 67 .........<li><code>-</code>.(neg
31c80 61 74 69 6f 6e 29 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 2a 3c ation)</li>.........<li><code>*<
31ca0 2f 63 6f 64 65 3e 20 28 6d 75 6c 74 69 70 6c 69 63 61 74 69 6f 6e 29 3c 2f 6c 69 3e 0a 20 20 20 /code>.(multiplication)</li>....
31cc0 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 2f 3c 2f 63 6f 64 65 3e 20 28 64 69 76 69 73 69 6f .....<li><code>/</code>.(divisio
31ce0 6e 29 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 64 69 76 54 72 n)</li>.........<li><code>@divTr
31d00 75 6e 63 3c 2f 63 6f 64 65 3e 20 28 64 69 76 69 73 69 6f 6e 29 3c 2f 6c 69 3e 0a 20 20 20 20 20 unc</code>.(division)</li>......
31d20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 64 69 76 46 6c 6f 6f 72 3c 2f 63 6f 64 65 3e 20 28 64 ...<li><code>@divFloor</code>.(d
31d40 69 76 69 73 69 6f 6e 29 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e ivision)</li>.........<li><code>
31d60 40 64 69 76 45 78 61 63 74 3c 2f 63 6f 64 65 3e 20 28 64 69 76 69 73 69 6f 6e 29 3c 2f 6c 69 3e @divExact</code>.(division)</li>
31d80 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 45 78 61 6d 70 6c 65 20 77 69 .......</ul>.......<p>Example.wi
31da0 74 68 20 61 64 64 69 74 69 6f 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 3a 3c 2f 70 3e th.addition.at.compile-time:</p>
31dc0 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c .......<p.class="file">test.zig<
31de0 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6d 70 74 69 /p><pre><code.class="zig">compti
31e00 6d 65 20 7b 0a 20 20 20 20 76 61 72 20 62 79 74 65 3a 20 75 38 20 3d 20 32 35 35 3b 0a 20 20 20 me.{.....var.byte:.u8.=.255;....
31e20 20 62 79 74 65 20 2b 3d 20 31 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c .byte.+=.1;.}</code></pre><pre><
31e40 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 code.class="shell">$.zig.test.te
31e60 73 74 2e 7a 69 67 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f st.zig.<span.class="t0_1">/home/
31e80 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 andy/dev/zig/docgen_tmp/test.zig
31ea0 3a 33 3a 31 30 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 :3:10:.</span><span.class="t31_1
31ec0 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 ">error:</span><span.class="t0_1
31ee0 22 3e 20 6f 70 65 72 61 74 69 6f 6e 20 63 61 75 73 65 64 20 6f 76 65 72 66 6c 6f 77 3c 2f 73 70 ">.operation.caused.overflow</sp
31f00 61 6e 3e 0a 20 20 20 20 62 79 74 65 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 20 3c 73 70 61 an>.....byte.+=.1;..........<spa
31f20 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e n.class="t32_1">^</span>.</code>
31f40 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 72 75 6e 74 69 6d 65 20 63 72 61 73 </pre>........<p>At.runtime.cras
31f60 68 65 73 20 77 69 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 65 3e 69 6e 74 65 67 hes.with.the.message.<code>integ
31f80 65 72 20 6f 76 65 72 66 6c 6f 77 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 61 20 73 74 61 63 6b 20 74 er.overflow</code>.and.a.stack.t
31fa0 72 61 63 65 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 53 race.</p>..............<h3.id="S
31fc0 74 61 6e 64 61 72 64 2d 4c 69 62 72 61 72 79 2d 4d 61 74 68 2d 46 75 6e 63 74 69 6f 6e 73 22 3e tandard-Library-Math-Functions">
31fe0 53 74 61 6e 64 61 72 64 20 4c 69 62 72 61 72 79 20 4d 61 74 68 20 46 75 6e 63 74 69 6f 6e 73 3c Standard.Library.Math.Functions<
32000 2f 68 33 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 70 /h3>........<p>These.functions.p
32020 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20 rovided.by.the.standard.library.
32040 72 65 74 75 72 6e 20 70 6f 73 73 69 62 6c 65 20 65 72 72 6f 72 73 2e 3c 2f 70 3e 0a 20 20 20 20 return.possible.errors.</p>.....
32060 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 ..<ul>.........<li><code>@import
32080 28 22 73 74 64 22 29 2e 6d 61 74 68 2e 61 64 64 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 ("std").math.add</code></li>....
320a0 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 61 .....<li><code>@import("std").ma
320c0 74 68 2e 73 75 62 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c th.sub</code></li>.........<li><
320e0 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 61 74 68 2e 6d 75 6c 3c 2f 63 6f code>@import("std").math.mul</co
32100 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 69 6d 70 6f de></li>.........<li><code>@impo
32120 72 74 28 22 73 74 64 22 29 2e 6d 61 74 68 2e 64 69 76 54 72 75 6e 63 3c 2f 63 6f 64 65 3e 3c 2f rt("std").math.divTrunc</code></
32140 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 li>.........<li><code>@import("s
32160 74 64 22 29 2e 6d 61 74 68 2e 64 69 76 46 6c 6f 6f 72 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 td").math.divFloor</code></li>..
32180 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e .......<li><code>@import("std").
321a0 6d 61 74 68 2e 64 69 76 45 78 61 63 74 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 math.divExact</code></li>.......
321c0 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 61 74 68 2e ..<li><code>@import("std").math.
321e0 73 68 6c 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 shl</code></li>.......</ul>.....
32200 20 20 3c 70 3e 45 78 61 6d 70 6c 65 20 6f 66 20 63 61 74 63 68 69 6e 67 20 61 6e 20 6f 76 65 72 ..<p>Example.of.catching.an.over
32220 66 6c 6f 77 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 flow.for.addition:</p>.......<p.
32240 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 class="file">test.zig</p><pre><c
32260 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 6d 61 74 68 20 3d 20 40 69 6d ode.class="zig">const.math.=.@im
32280 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 6d 61 74 68 3b 0a 63 6f 6e 73 port(&quot;std&quot;).math;.cons
322a0 74 20 77 61 72 6e 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b t.warn.=.@import(&quot;std&quot;
322c0 29 2e 64 65 62 75 67 2e 77 61 72 6e 3b 0a 70 75 62 20 66 6e 20 6d 61 69 6e 28 29 20 21 76 6f 69 ).debug.warn;.pub.fn.main().!voi
322e0 64 20 7b 0a 20 20 20 20 76 61 72 20 62 79 74 65 3a 20 75 38 20 3d 20 32 35 35 3b 0a 0a 20 20 20 d.{.....var.byte:.u8.=.255;.....
32300 20 62 79 74 65 20 3d 20 69 66 20 28 6d 61 74 68 2e 61 64 64 28 75 38 2c 20 62 79 74 65 2c 20 31 .byte.=.if.(math.add(u8,.byte,.1
32320 29 29 20 7c 72 65 73 75 6c 74 7c 20 72 65 73 75 6c 74 20 65 6c 73 65 20 7c 65 72 72 7c 20 7b 0a )).|result|.result.else.|err|.{.
32340 20 20 20 20 20 20 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 75 6e 61 62 6c 65 20 74 6f 20 61 64 64 ........warn(&quot;unable.to.add
32360 20 6f 6e 65 3a 20 7b 7d 5c 6e 26 71 75 6f 74 3b 2c 20 40 65 72 72 6f 72 4e 61 6d 65 28 65 72 72 .one:.{}\n&quot;,.@errorName(err
32380 29 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 72 72 3b 0a 20 20 20 20 7d 3b 0a 0a ));.........return.err;.....};..
323a0 20 20 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 72 65 73 75 6c 74 3a 20 7b 7d 5c 6e 26 71 75 6f 74 ....warn(&quot;result:.{}\n&quot
323c0 3b 2c 20 62 79 74 65 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f ;,.byte);.}</code></pre><pre><co
323e0 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 65 78 65 de.class="shell">$.zig.build-exe
32400 20 74 65 73 74 2e 7a 69 67 0a 24 20 2e 2f 74 65 73 74 0a 75 6e 61 62 6c 65 20 74 6f 20 61 64 64 .test.zig.$../test.unable.to.add
32420 20 6f 6e 65 3a 20 4f 76 65 72 66 6c 6f 77 0a 65 72 72 6f 72 3a 20 4f 76 65 72 66 6c 6f 77 0a 3c .one:.Overflow.error:.Overflow.<
32440 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 37 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 span.class="t37_1">/home/andy/de
32460 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 38 3a 39 3c 2f 73 v/zig/docgen_tmp/test.zig:8:9</s
32480 70 61 6e 3e 3a 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 32 5f 30 22 3e 30 78 32 31 64 33 65 pan>:.<span.class="t2_0">0x21d3e
324a0 35 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 20 20 20 20 72 5.in.???.(test)</span>.........r
324c0 65 74 75 72 6e 20 65 72 72 3b 0a 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 eturn.err;.........<span.class="
324e0 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 t32_1">^</span>.</code></pre>...
32500 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 42 75 69 6c 74 69 6e 2d 4f 76 65 72 ............<h3.id="Builtin-Over
32520 66 6c 6f 77 2d 46 75 6e 63 74 69 6f 6e 73 22 3e 42 75 69 6c 74 69 6e 20 4f 76 65 72 66 6c 6f 77 flow-Functions">Builtin.Overflow
32540 20 46 75 6e 63 74 69 6f 6e 73 3c 2f 68 33 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 .Functions</h3>........<p>......
32560 20 54 68 65 73 65 20 62 75 69 6c 74 69 6e 73 20 72 65 74 75 72 6e 20 61 20 3c 63 6f 64 65 3e 62 .These.builtins.return.a.<code>b
32580 6f 6f 6c 3c 2f 63 6f 64 65 3e 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 6f 76 65 ool</code>.of.whether.or.not.ove
325a0 72 66 6c 6f 77 0a 20 20 20 20 20 20 6f 63 63 75 72 72 65 64 2c 20 61 73 20 77 65 6c 6c 20 61 73 rflow.......occurred,.as.well.as
325c0 20 72 65 74 75 72 6e 69 6e 67 20 74 68 65 20 6f 76 65 72 66 6c 6f 77 65 64 20 62 69 74 73 3a 0a .returning.the.overflowed.bits:.
325e0 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c ......</p>.......<ul>.........<l
32600 69 3e 3c 63 6f 64 65 3e 40 61 64 64 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 63 6f 64 65 3e 3c i><code>@addWithOverflow</code><
32620 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 73 75 62 57 69 74 68 4f /li>.........<li><code>@subWithO
32640 76 65 72 66 6c 6f 77 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e verflow</code></li>.........<li>
32660 3c 63 6f 64 65 3e 40 6d 75 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 63 6f 64 65 3e 3c 2f 6c <code>@mulWithOverflow</code></l
32680 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 73 68 6c 57 69 74 68 4f 76 65 i>.........<li><code>@shlWithOve
326a0 72 66 6c 6f 77 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 rflow</code></li>.......</ul>...
326c0 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 45 78 61 6d 70 6c 65 20 6f 66 20 3c 63 6f 64 65 3e 40 ....<p>.......Example.of.<code>@
326e0 61 64 64 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 63 6f 64 65 3e 3a 0a 20 20 20 20 20 20 3c 2f addWithOverflow</code>:.......</
32700 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 p>.......<p.class="file">test.zi
32720 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 g</p><pre><code.class="zig">cons
32740 74 20 77 61 72 6e 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b t.warn.=.@import(&quot;std&quot;
32760 29 2e 64 65 62 75 67 2e 77 61 72 6e 3b 0a 70 75 62 20 66 6e 20 6d 61 69 6e 28 29 20 76 6f 69 64 ).debug.warn;.pub.fn.main().void
32780 20 7b 0a 20 20 20 20 76 61 72 20 62 79 74 65 3a 20 75 38 20 3d 20 32 35 35 3b 0a 0a 20 20 20 20 .{.....var.byte:.u8.=.255;......
327a0 76 61 72 20 72 65 73 75 6c 74 3a 20 75 38 20 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 var.result:.u8.=.undefined;.....
327c0 69 66 20 28 40 61 64 64 57 69 74 68 4f 76 65 72 66 6c 6f 77 28 75 38 2c 20 62 79 74 65 2c 20 31 if.(@addWithOverflow(u8,.byte,.1
327e0 30 2c 20 26 61 6d 70 3b 72 65 73 75 6c 74 29 29 20 7b 0a 20 20 20 20 20 20 20 20 77 61 72 6e 28 0,.&amp;result)).{.........warn(
32800 26 71 75 6f 74 3b 6f 76 65 72 66 6c 6f 77 65 64 20 72 65 73 75 6c 74 3a 20 7b 7d 5c 6e 26 71 75 &quot;overflowed.result:.{}\n&qu
32820 6f 74 3b 2c 20 72 65 73 75 6c 74 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 ot;,.result);.....}.else.{......
32840 20 20 20 77 61 72 6e 28 26 71 75 6f 74 3b 72 65 73 75 6c 74 3a 20 7b 7d 5c 6e 26 71 75 6f 74 3b ...warn(&quot;result:.{}\n&quot;
32860 2c 20 72 65 73 75 6c 74 29 3b 0a 20 20 20 20 7d 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c ,.result);.....}.}</code></pre><
32880 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 62 75 pre><code.class="shell">$.zig.bu
328a0 69 6c 64 2d 65 78 65 20 74 65 73 74 2e 7a 69 67 0a 24 20 2e 2f 74 65 73 74 0a 6f 76 65 72 66 6c ild-exe.test.zig.$../test.overfl
328c0 6f 77 65 64 20 72 65 73 75 6c 74 3a 20 39 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 owed.result:.9.</code></pre>....
328e0 20 20 20 20 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 57 72 61 70 70 69 6e 67 2d 4f 70 65 72 ...........<h3.id="Wrapping-Oper
32900 61 74 69 6f 6e 73 22 3e 57 72 61 70 70 69 6e 67 20 4f 70 65 72 61 74 69 6f 6e 73 3c 2f 68 33 3e ations">Wrapping.Operations</h3>
32920 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 73 65 20 6f 70 65 72 61 74 69 6f ........<p>.......These.operatio
32940 6e 73 20 68 61 76 65 20 67 75 61 72 61 6e 74 65 65 64 20 77 72 61 70 61 72 6f 75 6e 64 20 73 65 ns.have.guaranteed.wraparound.se
32960 6d 61 6e 74 69 63 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 mantics........</p>.......<ul>..
32980 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 2b 25 3c 2f 63 6f 64 65 3e 20 28 77 72 61 70 .......<li><code>+%</code>.(wrap
329a0 61 72 6f 75 6e 64 20 61 64 64 69 74 69 6f 6e 29 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c around.addition)</li>.........<l
329c0 69 3e 3c 63 6f 64 65 3e 2d 25 3c 2f 63 6f 64 65 3e 20 28 77 72 61 70 61 72 6f 75 6e 64 20 73 75 i><code>-%</code>.(wraparound.su
329e0 62 74 72 61 63 74 69 6f 6e 29 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 btraction)</li>.........<li><cod
32a00 65 3e 2d 25 3c 2f 63 6f 64 65 3e 20 28 77 72 61 70 61 72 6f 75 6e 64 20 6e 65 67 61 74 69 6f 6e e>-%</code>.(wraparound.negation
32a20 29 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 2a 25 3c 2f 63 6f 64 )</li>.........<li><code>*%</cod
32a40 65 3e 20 28 77 72 61 70 61 72 6f 75 6e 64 20 6d 75 6c 74 69 70 6c 69 63 61 74 69 6f 6e 29 3c 2f e>.(wraparound.multiplication)</
32a60 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 li>.......</ul>.......<p.class="
32a80 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 file">test.zig</p><pre><code.cla
32aa0 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 ss="zig">const.assert.=.@import(
32ac0 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a &quot;std&quot;).debug.assert;..
32ae0 74 65 73 74 20 26 71 75 6f 74 3b 77 72 61 70 61 72 6f 75 6e 64 20 61 64 64 69 74 69 6f 6e 20 61 test.&quot;wraparound.addition.a
32b00 6e 64 20 73 75 62 74 72 61 63 74 69 6f 6e 26 71 75 6f 74 3b 20 7b 0a 20 20 20 20 63 6f 6e 73 74 nd.subtraction&quot;.{.....const
32b20 20 78 3a 20 69 33 32 20 3d 20 40 6d 61 78 56 61 6c 75 65 28 69 33 32 29 3b 0a 20 20 20 20 63 6f .x:.i32.=.@maxValue(i32);.....co
32b40 6e 73 74 20 6d 69 6e 5f 76 61 6c 20 3d 20 78 20 2b 25 20 31 3b 0a 20 20 20 20 61 73 73 65 72 74 nst.min_val.=.x.+%.1;.....assert
32b60 28 6d 69 6e 5f 76 61 6c 20 3d 3d 20 40 6d 69 6e 56 61 6c 75 65 28 69 33 32 29 29 3b 0a 20 20 20 (min_val.==.@minValue(i32));....
32b80 20 63 6f 6e 73 74 20 6d 61 78 5f 76 61 6c 20 3d 20 6d 69 6e 5f 76 61 6c 20 2d 25 20 31 3b 0a 20 .const.max_val.=.min_val.-%.1;..
32ba0 20 20 20 61 73 73 65 72 74 28 6d 61 78 5f 76 61 6c 20 3d 3d 20 40 6d 61 78 56 61 6c 75 65 28 69 ...assert(max_val.==.@maxValue(i
32bc0 33 32 29 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 32));.}</code></pre><pre><code.c
32be0 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 lass="shell">$.zig.test.test.zig
32c00 0a 54 65 73 74 20 31 2f 31 20 77 72 61 70 61 72 6f 75 6e 64 20 61 64 64 69 74 69 6f 6e 20 61 6e .Test.1/1.wraparound.addition.an
32c20 64 20 73 75 62 74 72 61 63 74 69 6f 6e 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e d.subtraction...OK.</code></pre>
32c40 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 45 78 ......................<h2.id="Ex
32c60 61 63 74 2d 4c 65 66 74 2d 53 68 69 66 74 2d 4f 76 65 72 66 6c 6f 77 22 3e 45 78 61 63 74 20 4c act-Left-Shift-Overflow">Exact.L
32c80 65 66 74 20 53 68 69 66 74 20 4f 76 65 72 66 6c 6f 77 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c eft.Shift.Overflow</h2>........<
32ca0 70 3e 41 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 p>At.compile-time:</p>.......<p.
32cc0 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 class="file">test.zig</p><pre><c
32ce0 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 63 ode.class="zig">comptime.{.....c
32d00 6f 6e 73 74 20 78 20 3d 20 40 73 68 6c 45 78 61 63 74 28 75 38 28 30 62 30 31 30 31 30 31 30 31 onst.x.=.@shlExact(u8(0b01010101
32d20 29 2c 20 32 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 ),.2);.}</code></pre><pre><code.
32d40 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 class="shell">$.zig.test.test.zi
32d60 67 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f g.<span.class="t0_1">/home/andy/
32d80 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 32 3a 31 35 dev/zig/docgen_tmp/test.zig:2:15
32da0 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 :.</span><span.class="t31_1">err
32dc0 6f 72 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 6f 70 or:</span><span.class="t0_1">.op
32de0 65 72 61 74 69 6f 6e 20 63 61 75 73 65 64 20 6f 76 65 72 66 6c 6f 77 3c 2f 73 70 61 6e 3e 0a 20 eration.caused.overflow</span>..
32e00 20 20 20 63 6f 6e 73 74 20 78 20 3d 20 40 73 68 6c 45 78 61 63 74 28 75 38 28 30 62 30 31 30 31 ...const.x.=.@shlExact(u8(0b0101
32e20 30 31 30 31 29 2c 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 0101),.2);...............<span.c
32e40 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 lass="t32_1">^</span>.</code></p
32e60 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 72 75 6e 74 69 6d 65 20 63 72 61 73 68 65 73 re>........<p>At.runtime.crashes
32e80 20 77 69 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 65 3e 6c 65 66 74 20 73 68 69 .with.the.message.<code>left.shi
32ea0 66 74 20 6f 76 65 72 66 6c 6f 77 65 64 20 62 69 74 73 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 61 20 ft.overflowed.bits</code>.and.a.
32ec0 73 74 61 63 6b 20 74 72 61 63 65 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 stack.trace.</p>..............<h
32ee0 32 20 69 64 3d 22 45 78 61 63 74 2d 52 69 67 68 74 2d 53 68 69 66 74 2d 4f 76 65 72 66 6c 6f 77 2.id="Exact-Right-Shift-Overflow
32f00 22 3e 45 78 61 63 74 20 52 69 67 68 74 20 53 68 69 66 74 20 4f 76 65 72 66 6c 6f 77 3c 2f 68 32 ">Exact.Right.Shift.Overflow</h2
32f20 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 3a 3c 2f 70 3e >........<p>At.compile-time:</p>
32f40 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c .......<p.class="file">test.zig<
32f60 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6d 70 74 69 /p><pre><code.class="zig">compti
32f80 6d 65 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 78 20 3d 20 40 73 68 72 45 78 61 63 74 28 75 38 28 me.{.....const.x.=.@shrExact(u8(
32fa0 30 62 31 30 31 30 31 30 31 30 29 2c 20 32 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 0b10101010),.2);.}</code></pre><
32fc0 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 pre><code.class="shell">$.zig.te
32fe0 73 74 20 74 65 73 74 2e 7a 69 67 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f st.test.zig.<span.class="t0_1">/
33000 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 home/andy/dev/zig/docgen_tmp/tes
33020 74 2e 7a 69 67 3a 32 3a 31 35 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 t.zig:2:15:.</span><span.class="
33040 74 33 31 5f 31 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d t31_1">error:</span><span.class=
33060 22 74 30 5f 31 22 3e 20 65 78 61 63 74 20 73 68 69 66 74 20 73 68 69 66 74 65 64 20 6f 75 74 20 "t0_1">.exact.shift.shifted.out.
33080 31 20 62 69 74 73 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 63 6f 6e 73 74 20 78 20 3d 20 40 73 68 72 1.bits</span>.....const.x.=.@shr
330a0 45 78 61 63 74 28 75 38 28 30 62 31 30 31 30 31 30 31 30 29 2c 20 32 29 3b 0a 20 20 20 20 20 20 Exact(u8(0b10101010),.2);.......
330c0 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 ........<span.class="t32_1">^</s
330e0 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 pan>.</code></pre>........<p>At.
33100 72 75 6e 74 69 6d 65 20 63 72 61 73 68 65 73 20 77 69 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 runtime.crashes.with.the.message
33120 20 3c 63 6f 64 65 3e 72 69 67 68 74 20 73 68 69 66 74 20 6f 76 65 72 66 6c 6f 77 65 64 20 62 69 .<code>right.shift.overflowed.bi
33140 74 73 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 61 20 73 74 61 63 6b 20 74 72 61 63 65 2e 3c 2f 70 3e ts</code>.and.a.stack.trace.</p>
33160 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 44 69 76 69 73 69 6f 6e 2d 62 ..............<h2.id="Division-b
33180 79 2d 5a 65 72 6f 22 3e 44 69 76 69 73 69 6f 6e 20 62 79 20 5a 65 72 6f 3c 2f 68 32 3e 0a 0a 20 y-Zero">Division.by.Zero</h2>...
331a0 20 20 20 20 20 3c 70 3e 41 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 3a 3c 2f 70 3e 0a 20 20 20 .....<p>At.compile-time:</p>....
331c0 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c ...<p.class="file">test.zig</p><
331e0 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6d 70 74 69 6d 65 20 7b pre><code.class="zig">comptime.{
33200 0a 20 20 20 20 63 6f 6e 73 74 20 61 3a 20 69 33 32 20 3d 20 31 3b 0a 20 20 20 20 63 6f 6e 73 74 .....const.a:.i32.=.1;.....const
33220 20 62 3a 20 69 33 32 20 3d 20 30 3b 0a 20 20 20 20 63 6f 6e 73 74 20 63 20 3d 20 61 20 2f 20 62 .b:.i32.=.0;.....const.c.=.a./.b
33240 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 ;.}</code></pre><pre><code.class
33260 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 3c 73 70 ="shell">$.zig.test.test.zig.<sp
33280 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a an.class="t0_1">/home/andy/dev/z
332a0 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 34 3a 31 37 3a 20 3c 2f 73 ig/docgen_tmp/test.zig:4:17:.</s
332c0 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 6f 72 3a 3c 2f pan><span.class="t31_1">error:</
332e0 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 64 69 76 69 73 69 6f span><span.class="t0_1">.divisio
33300 6e 20 62 79 20 7a 65 72 6f 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 63 6f 6e 73 74 20 63 20 3d 20 61 n.by.zero</span>.....const.c.=.a
33320 20 2f 20 62 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 ./.b;.................<span.clas
33340 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e s="t32_1">^</span>.</code></pre>
33360 0a 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 72 75 6e 74 69 6d 65 20 63 72 61 73 68 65 73 20 77 69 ........<p>At.runtime.crashes.wi
33380 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 65 3e 64 69 76 69 73 69 6f 6e 20 62 79 th.the.message.<code>division.by
333a0 20 7a 65 72 6f 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 61 20 73 74 61 63 6b 20 74 72 61 63 65 2e 3c .zero</code>.and.a.stack.trace.<
333c0 2f 70 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 52 65 6d 61 69 6e /p>...............<h2.id="Remain
333e0 64 65 72 2d 44 69 76 69 73 69 6f 6e 2d 62 79 2d 5a 65 72 6f 22 3e 52 65 6d 61 69 6e 64 65 72 20 der-Division-by-Zero">Remainder.
33400 44 69 76 69 73 69 6f 6e 20 62 79 20 5a 65 72 6f 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e Division.by.Zero</h2>........<p>
33420 41 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c At.compile-time:</p>.......<p.cl
33440 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 ass="file">test.zig</p><pre><cod
33460 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 63 6f 6e e.class="zig">comptime.{.....con
33480 73 74 20 61 3a 20 69 33 32 20 3d 20 31 30 3b 0a 20 20 20 20 63 6f 6e 73 74 20 62 3a 20 69 33 32 st.a:.i32.=.10;.....const.b:.i32
334a0 20 3d 20 30 3b 0a 20 20 20 20 63 6f 6e 73 74 20 63 20 3d 20 61 20 25 20 62 3b 0a 7d 3c 2f 63 6f .=.0;.....const.c.=.a.%.b;.}</co
334c0 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c de></pre><pre><code.class="shell
334e0 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 3c 73 70 61 6e 20 63 6c 61 73 ">$.zig.test.test.zig.<span.clas
33500 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 s="t0_1">/home/andy/dev/zig/docg
33520 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 34 3a 31 37 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 en_tmp/test.zig:4:17:.</span><sp
33540 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 6e 3e 3c 73 an.class="t31_1">error:</span><s
33560 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 64 69 76 69 73 69 6f 6e 20 62 79 20 7a 65 pan.class="t0_1">.division.by.ze
33580 72 6f 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 63 6f 6e 73 74 20 63 20 3d 20 61 20 25 20 62 3b 0a 20 ro</span>.....const.c.=.a.%.b;..
335a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f ...............<span.class="t32_
335c0 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 1">^</span>.</code></pre>.......
335e0 20 3c 70 3e 41 74 20 72 75 6e 74 69 6d 65 20 63 72 61 73 68 65 73 20 77 69 74 68 20 74 68 65 20 .<p>At.runtime.crashes.with.the.
33600 6d 65 73 73 61 67 65 20 3c 63 6f 64 65 3e 72 65 6d 61 69 6e 64 65 72 20 64 69 76 69 73 69 6f 6e message.<code>remainder.division
33620 20 62 79 20 7a 65 72 6f 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 61 20 73 74 61 63 6b 20 74 72 61 63 .by.zero</code>.and.a.stack.trac
33640 65 2e 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 45 78 61 e.</p>...............<h2.id="Exa
33660 63 74 2d 44 69 76 69 73 69 6f 6e 2d 52 65 6d 61 69 6e 64 65 72 22 3e 45 78 61 63 74 20 44 69 76 ct-Division-Remainder">Exact.Div
33680 69 73 69 6f 6e 20 52 65 6d 61 69 6e 64 65 72 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 54 ision.Remainder</h2>........<p>T
336a0 4f 44 4f 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 53 6c 69 ODO</p>..............<h2.id="Sli
336c0 63 65 2d 57 69 64 65 6e 2d 52 65 6d 61 69 6e 64 65 72 22 3e 53 6c 69 63 65 20 57 69 64 65 6e 20 ce-Widen-Remainder">Slice.Widen.
336e0 52 65 6d 61 69 6e 64 65 72 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3c 2f 70 Remainder</h2>........<p>TODO</p
33700 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 41 74 74 65 6d 70 74 2d 74 >..............<h2.id="Attempt-t
33720 6f 2d 55 6e 77 72 61 70 2d 4e 75 6c 6c 22 3e 41 74 74 65 6d 70 74 20 74 6f 20 55 6e 77 72 61 70 o-Unwrap-Null">Attempt.to.Unwrap
33740 20 4e 75 6c 6c 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 63 6f 6d 70 69 6c 65 2d .Null</h2>........<p>At.compile-
33760 74 69 6d 65 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e time:</p>.......<p.class="file">
33780 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 test.zig</p><pre><code.class="zi
337a0 67 22 3e 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 6e 75 6c 6c 61 62 6c 65 g">comptime.{.....const.nullable
337c0 5f 6e 75 6d 62 65 72 3a 20 3f 69 33 32 20 3d 20 6e 75 6c 6c 3b 0a 20 20 20 20 63 6f 6e 73 74 20 _number:.?i32.=.null;.....const.
337e0 6e 75 6d 62 65 72 20 3d 20 3f 3f 6e 75 6c 6c 61 62 6c 65 5f 6e 75 6d 62 65 72 3b 0a 7d 3c 2f 63 number.=.??nullable_number;.}</c
33800 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c ode></pre><pre><code.class="shel
33820 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 3c 73 70 61 6e 20 63 6c 61 l">$.zig.test.test.zig.<span.cla
33840 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 ss="t0_1">/home/andy/dev/zig/doc
33860 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 33 3a 32 30 3a 20 3c 2f 73 70 61 6e 3e 3c 73 gen_tmp/test.zig:3:20:.</span><s
33880 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 6e 3e 3c pan.class="t31_1">error:</span><
338a0 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 75 6e 61 62 6c 65 20 74 6f 20 75 6e 77 span.class="t0_1">.unable.to.unw
338c0 72 61 70 20 6e 75 6c 6c 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 63 6f 6e 73 74 20 6e 75 6d 62 65 72 rap.null</span>.....const.number
338e0 20 3d 20 3f 3f 6e 75 6c 6c 61 62 6c 65 5f 6e 75 6d 62 65 72 3b 0a 20 20 20 20 20 20 20 20 20 20 .=.??nullable_number;...........
33900 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f .........<span.class="t32_1">^</
33920 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 41 74 span>.</code></pre>........<p>At
33940 20 72 75 6e 74 69 6d 65 20 63 72 61 73 68 65 73 20 77 69 74 68 20 74 68 65 20 6d 65 73 73 61 67 .runtime.crashes.with.the.messag
33960 65 20 3c 63 6f 64 65 3e 61 74 74 65 6d 70 74 20 74 6f 20 75 6e 77 72 61 70 20 6e 75 6c 6c 3c 2f e.<code>attempt.to.unwrap.null</
33980 63 6f 64 65 3e 20 61 6e 64 20 61 20 73 74 61 63 6b 20 74 72 61 63 65 2e 3c 2f 70 3e 0a 20 20 20 code>.and.a.stack.trace.</p>....
339a0 20 20 20 3c 70 3e 4f 6e 65 20 77 61 79 20 74 6f 20 61 76 6f 69 64 20 74 68 69 73 20 63 72 61 73 ...<p>One.way.to.avoid.this.cras
339c0 68 20 69 73 20 74 6f 20 74 65 73 74 20 66 6f 72 20 6e 75 6c 6c 20 69 6e 73 74 65 61 64 20 6f 66 h.is.to.test.for.null.instead.of
339e0 20 61 73 73 75 6d 69 6e 67 20 6e 6f 6e 2d 6e 75 6c 6c 2c 20 77 69 74 68 0a 20 20 20 20 20 20 74 .assuming.non-null,.with.......t
33a00 68 65 20 3c 63 6f 64 65 3e 69 66 3c 2f 63 6f 64 65 3e 20 65 78 70 72 65 73 73 69 6f 6e 3a 3c 2f he.<code>if</code>.expression:</
33a20 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 p>.......<p.class="file">test.zi
33a40 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 g</p><pre><code.class="zig">cons
33a60 74 20 77 61 72 6e 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b t.warn.=.@import(&quot;std&quot;
33a80 29 2e 64 65 62 75 67 2e 77 61 72 6e 3b 0a 70 75 62 20 66 6e 20 6d 61 69 6e 28 29 20 76 6f 69 64 ).debug.warn;.pub.fn.main().void
33aa0 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 6e 75 6c 6c 61 62 6c 65 5f 6e 75 6d 62 65 72 3a 20 3f 69 .{.....const.nullable_number:.?i
33ac0 33 32 20 3d 20 6e 75 6c 6c 3b 0a 0a 20 20 20 20 69 66 20 28 6e 75 6c 6c 61 62 6c 65 5f 6e 75 6d 32.=.null;......if.(nullable_num
33ae0 62 65 72 29 20 7c 6e 75 6d 62 65 72 7c 20 7b 0a 20 20 20 20 20 20 20 20 77 61 72 6e 28 26 71 75 ber).|number|.{.........warn(&qu
33b00 6f 74 3b 67 6f 74 20 6e 75 6d 62 65 72 3a 20 7b 7d 5c 6e 26 71 75 6f 74 3b 2c 20 6e 75 6d 62 65 ot;got.number:.{}\n&quot;,.numbe
33b20 72 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 77 61 72 6e 28 26 71 r);.....}.else.{.........warn(&q
33b40 75 6f 74 3b 69 74 27 73 20 6e 75 6c 6c 5c 6e 26 71 75 6f 74 3b 29 3b 0a 20 20 20 20 7d 0a 7d 3c uot;it's.null\n&quot;);.....}.}<
33b60 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 /code></pre><pre><code.class="sh
33b80 65 6c 6c 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 65 78 65 20 74 65 73 74 2e 7a 69 67 0a 24 20 ell">$.zig.build-exe.test.zig.$.
33ba0 2e 2f 74 65 73 74 0a 69 74 27 73 20 6e 75 6c 6c 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a ./test.it's.null.</code></pre>..
33bc0 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 41 74 74 65 6d 70 74 2d 74 6f 2d .............<h2.id="Attempt-to-
33be0 55 6e 77 72 61 70 2d 45 72 72 6f 72 22 3e 41 74 74 65 6d 70 74 20 74 6f 20 55 6e 77 72 61 70 20 Unwrap-Error">Attempt.to.Unwrap.
33c00 45 72 72 6f 72 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 63 6f 6d 70 69 6c 65 2d Error</h2>........<p>At.compile-
33c20 74 69 6d 65 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e time:</p>.......<p.class="file">
33c40 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 test.zig</p><pre><code.class="zi
33c60 67 22 3e 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 6e 75 6d 62 65 72 20 3d g">comptime.{.....const.number.=
33c80 20 67 65 74 4e 75 6d 62 65 72 4f 72 46 61 69 6c 28 29 20 63 61 74 63 68 20 75 6e 72 65 61 63 68 .getNumberOrFail().catch.unreach
33ca0 61 62 6c 65 3b 0a 7d 0a 0a 66 6e 20 67 65 74 4e 75 6d 62 65 72 4f 72 46 61 69 6c 28 29 20 21 69 able;.}..fn.getNumberOrFail().!i
33cc0 33 32 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 65 72 72 6f 72 2e 55 6e 61 62 6c 65 54 6f 52 65 32.{.....return.error.UnableToRe
33ce0 74 75 72 6e 4e 75 6d 62 65 72 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c turnNumber;.}</code></pre><pre><
33d00 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 code.class="shell">$.zig.test.te
33d20 73 74 2e 7a 69 67 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f st.zig.<span.class="t0_1">/home/
33d40 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 andy/dev/zig/docgen_tmp/test.zig
33d60 3a 32 3a 33 38 3a 20 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 :2:38:.</span><span.class="t31_1
33d80 22 3e 65 72 72 6f 72 3a 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 ">error:</span><span.class="t0_1
33da0 22 3e 20 63 61 75 67 68 74 20 75 6e 65 78 70 65 63 74 65 64 20 65 72 72 6f 72 20 27 55 6e 61 62 ">.caught.unexpected.error.'Unab
33dc0 6c 65 54 6f 52 65 74 75 72 6e 4e 75 6d 62 65 72 27 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 63 6f 6e leToReturnNumber'</span>.....con
33de0 73 74 20 6e 75 6d 62 65 72 20 3d 20 67 65 74 4e 75 6d 62 65 72 4f 72 46 61 69 6c 28 29 20 63 61 st.number.=.getNumberOrFail().ca
33e00 74 63 68 20 75 6e 72 65 61 63 68 61 62 6c 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tch.unreachable;................
33e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 ......................<span.clas
33e40 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e s="t32_1">^</span>.</code></pre>
33e60 0a 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 72 75 6e 74 69 6d 65 20 63 72 61 73 68 65 73 20 77 69 ........<p>At.runtime.crashes.wi
33e80 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 65 3e 61 74 74 65 6d 70 74 20 74 6f 20 th.the.message.<code>attempt.to.
33ea0 75 6e 77 72 61 70 20 65 72 72 6f 72 3a 20 45 72 72 6f 72 43 6f 64 65 3c 2f 63 6f 64 65 3e 20 61 unwrap.error:.ErrorCode</code>.a
33ec0 6e 64 20 61 20 73 74 61 63 6b 20 74 72 61 63 65 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 4f nd.a.stack.trace.</p>.......<p>O
33ee0 6e 65 20 77 61 79 20 74 6f 20 61 76 6f 69 64 20 74 68 69 73 20 63 72 61 73 68 20 69 73 20 74 6f ne.way.to.avoid.this.crash.is.to
33f00 20 74 65 73 74 20 66 6f 72 20 61 6e 20 65 72 72 6f 72 20 69 6e 73 74 65 61 64 20 6f 66 20 61 73 .test.for.an.error.instead.of.as
33f20 73 75 6d 69 6e 67 20 61 20 73 75 63 63 65 73 73 66 75 6c 20 72 65 73 75 6c 74 2c 20 77 69 74 68 suming.a.successful.result,.with
33f40 0a 20 20 20 20 20 20 74 68 65 20 3c 63 6f 64 65 3e 69 66 3c 2f 63 6f 64 65 3e 20 65 78 70 72 65 .......the.<code>if</code>.expre
33f60 73 73 69 6f 6e 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 ssion:</p>.......<p.class="file"
33f80 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a >test.zig</p><pre><code.class="z
33fa0 69 67 22 3e 63 6f 6e 73 74 20 77 61 72 6e 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 ig">const.warn.=.@import(&quot;s
33fc0 74 64 26 71 75 6f 74 3b 29 2e 64 65 62 75 67 2e 77 61 72 6e 3b 0a 0a 70 75 62 20 66 6e 20 6d 61 td&quot;).debug.warn;..pub.fn.ma
33fe0 69 6e 28 29 20 76 6f 69 64 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 72 65 73 75 6c 74 20 3d 20 67 in().void.{.....const.result.=.g
34000 65 74 4e 75 6d 62 65 72 4f 72 46 61 69 6c 28 29 3b 0a 0a 20 20 20 20 69 66 20 28 72 65 73 75 6c etNumberOrFail();......if.(resul
34020 74 29 20 7c 6e 75 6d 62 65 72 7c 20 7b 0a 20 20 20 20 20 20 20 20 77 61 72 6e 28 26 71 75 6f 74 t).|number|.{.........warn(&quot
34040 3b 67 6f 74 20 6e 75 6d 62 65 72 3a 20 7b 7d 5c 6e 26 71 75 6f 74 3b 2c 20 6e 75 6d 62 65 72 29 ;got.number:.{}\n&quot;,.number)
34060 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7c 65 72 72 7c 20 7b 0a 20 20 20 20 20 20 20 20 77 61 72 ;.....}.else.|err|.{.........war
34080 6e 28 26 71 75 6f 74 3b 67 6f 74 20 65 72 72 6f 72 3a 20 7b 7d 5c 6e 26 71 75 6f 74 3b 2c 20 40 n(&quot;got.error:.{}\n&quot;,.@
340a0 65 72 72 6f 72 4e 61 6d 65 28 65 72 72 29 29 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 66 6e 20 67 65 74 errorName(err));.....}.}..fn.get
340c0 4e 75 6d 62 65 72 4f 72 46 61 69 6c 28 29 20 21 69 33 32 20 7b 0a 20 20 20 20 72 65 74 75 72 6e NumberOrFail().!i32.{.....return
340e0 20 65 72 72 6f 72 2e 55 6e 61 62 6c 65 54 6f 52 65 74 75 72 6e 4e 75 6d 62 65 72 3b 0a 7d 3c 2f .error.UnableToReturnNumber;.}</
34100 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 code></pre><pre><code.class="she
34120 6c 6c 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 65 78 65 20 74 65 73 74 2e 7a 69 67 0a 24 20 2e ll">$.zig.build-exe.test.zig.$..
34140 2f 74 65 73 74 0a 67 6f 74 20 65 72 72 6f 72 3a 20 55 6e 61 62 6c 65 54 6f 52 65 74 75 72 6e 4e /test.got.error:.UnableToReturnN
34160 75 6d 62 65 72 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 umber.</code></pre>.............
34180 20 20 3c 68 32 20 69 64 3d 22 49 6e 76 61 6c 69 64 2d 45 72 72 6f 72 2d 43 6f 64 65 22 3e 49 6e ..<h2.id="Invalid-Error-Code">In
341a0 76 61 6c 69 64 20 45 72 72 6f 72 20 43 6f 64 65 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e valid.Error.Code</h2>........<p>
341c0 41 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c At.compile-time:</p>.......<p.cl
341e0 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 ass="file">test.zig</p><pre><cod
34200 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 63 6f 6e e.class="zig">comptime.{.....con
34220 73 74 20 65 72 72 20 3d 20 65 72 72 6f 72 2e 41 6e 45 72 72 6f 72 3b 0a 20 20 20 20 63 6f 6e 73 st.err.=.error.AnError;.....cons
34240 74 20 6e 75 6d 62 65 72 20 3d 20 75 33 32 28 65 72 72 29 20 2b 20 31 30 3b 0a 20 20 20 20 63 6f t.number.=.u32(err).+.10;.....co
34260 6e 73 74 20 69 6e 76 61 6c 69 64 5f 65 72 72 20 3d 20 65 72 72 6f 72 28 6e 75 6d 62 65 72 29 3b nst.invalid_err.=.error(number);
34280 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d .}</code></pre><pre><code.class=
342a0 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 3c 73 70 61 "shell">$.zig.test.test.zig.<spa
342c0 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 n.class="t0_1">/home/andy/dev/zi
342e0 67 2f 64 6f 63 67 65 6e 5f 74 6d 70 2f 74 65 73 74 2e 7a 69 67 3a 34 3a 33 30 3a 20 3c 2f 73 70 g/docgen_tmp/test.zig:4:30:.</sp
34300 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 31 5f 31 22 3e 65 72 72 6f 72 3a 3c 2f 73 an><span.class="t31_1">error:</s
34320 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 30 5f 31 22 3e 20 69 6e 74 65 67 65 72 20 pan><span.class="t0_1">.integer.
34340 76 61 6c 75 65 20 31 31 20 72 65 70 72 65 73 65 6e 74 73 20 6e 6f 20 65 72 72 6f 72 3c 2f 73 70 value.11.represents.no.error</sp
34360 61 6e 3e 0a 20 20 20 20 63 6f 6e 73 74 20 69 6e 76 61 6c 69 64 5f 65 72 72 20 3d 20 65 72 72 6f an>.....const.invalid_err.=.erro
34380 72 28 6e 75 6d 62 65 72 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r(number);......................
343a0 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 74 33 32 5f 31 22 3e 5e 3c 2f 73 ........<span.class="t32_1">^</s
343c0 70 61 6e 3e 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 pan>.</code></pre>........<p>At.
343e0 72 75 6e 74 69 6d 65 20 63 72 61 73 68 65 73 20 77 69 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 runtime.crashes.with.the.message
34400 20 3c 63 6f 64 65 3e 69 6e 76 61 6c 69 64 20 65 72 72 6f 72 20 63 6f 64 65 3c 2f 63 6f 64 65 3e .<code>invalid.error.code</code>
34420 20 61 6e 64 20 61 20 73 74 61 63 6b 20 74 72 61 63 65 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 .and.a.stack.trace.</p>.........
34440 20 20 20 20 20 3c 68 32 20 69 64 3d 22 49 6e 76 61 6c 69 64 2d 45 6e 75 6d 2d 43 61 73 74 22 3e .....<h2.id="Invalid-Enum-Cast">
34460 49 6e 76 61 6c 69 64 20 45 6e 75 6d 20 43 61 73 74 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 Invalid.Enum.Cast</h2>........<p
34480 3e 54 4f 44 4f 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 >TODO</p>...............<h2.id="
344a0 49 6e 63 6f 72 72 65 63 74 2d 50 6f 69 6e 74 65 72 2d 41 6c 69 67 6e 6d 65 6e 74 22 3e 49 6e 63 Incorrect-Pointer-Alignment">Inc
344c0 6f 72 72 65 63 74 20 50 6f 69 6e 74 65 72 20 41 6c 69 67 6e 6d 65 6e 74 3c 2f 68 32 3e 0a 0a 20 orrect.Pointer.Alignment</h2>...
344e0 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c .....<p>TODO</p>...............<
34500 68 32 20 69 64 3d 22 57 72 6f 6e 67 2d 55 6e 69 6f 6e 2d 46 69 65 6c 64 2d 41 63 63 65 73 73 22 h2.id="Wrong-Union-Field-Access"
34520 3e 57 72 6f 6e 67 20 55 6e 69 6f 6e 20 46 69 65 6c 64 20 41 63 63 65 73 73 3c 2f 68 32 3e 0a 0a >Wrong.Union.Field.Access</h2>..
34540 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 ......<p>TODO</p>...............
34560 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 4d 65 6d 6f 72 79 22 3e 4d 65 6d 6f 72 79 3c 2f 68 .......<h1.id="Memory">Memory</h
34580 31 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 70 6c 61 69 6e 20 6e 6f 20 64 65 1>........<p>TODO:.explain.no.de
345a0 66 61 75 6c 74 20 61 6c 6c 6f 63 61 74 6f 72 20 69 6e 20 7a 69 67 3c 2f 70 3e 0a 20 20 20 20 20 fault.allocator.in.zig</p>......
345c0 20 3c 70 3e 54 4f 44 4f 3a 20 73 68 6f 77 20 68 6f 77 20 74 6f 20 75 73 65 20 74 68 65 20 61 6c .<p>TODO:.show.how.to.use.the.al
345e0 6c 6f 63 61 74 6f 72 20 69 6e 74 65 72 66 61 63 65 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 locator.interface</p>.......<p>T
34600 4f 44 4f 3a 20 6d 65 6e 74 69 6f 6e 20 64 65 62 75 67 20 61 6c 6c 6f 63 61 74 6f 72 3c 2f 70 3e ODO:.mention.debug.allocator</p>
34620 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 69 6d 70 6f 72 74 61 6e 63 65 20 6f 66 20 63 68 .......<p>TODO:.importance.of.ch
34640 65 63 6b 69 6e 67 20 66 6f 72 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 61 69 6c 75 72 65 3c 2f 70 ecking.for.allocation.failure</p
34660 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 6d 65 6e 74 69 6f 6e 20 6f 76 65 72 63 6f 6d >.......<p>TODO:.mention.overcom
34680 6d 69 74 20 61 6e 64 20 74 68 65 20 4f 4f 4d 20 4b 69 6c 6c 65 72 3c 2f 70 3e 0a 20 20 20 20 20 mit.and.the.OOM.Killer</p>......
346a0 20 3c 70 3e 54 4f 44 4f 3a 20 6d 65 6e 74 69 6f 6e 20 72 65 63 75 72 73 69 6f 6e 3c 2f 70 3e 0a .<p>TODO:.mention.recursion</p>.
346c0 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c ......<p>See.also:</p><ul>.<li><
346e0 61 20 68 72 65 66 3d 22 23 50 6f 69 6e 74 65 72 73 22 3e 50 6f 69 6e 74 65 72 73 3c 2f 61 3e 3c a.href="#Pointers">Pointers</a><
34700 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 /li>.</ul>................<h1.id
34720 3d 22 43 6f 6d 70 69 6c 65 2d 56 61 72 69 61 62 6c 65 73 22 3e 43 6f 6d 70 69 6c 65 20 56 61 72 ="Compile-Variables">Compile.Var
34740 69 61 62 6c 65 73 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 43 6f 6d iables</h1>........<p>.......Com
34760 70 69 6c 65 20 76 61 72 69 61 62 6c 65 73 20 61 72 65 20 61 63 63 65 73 73 69 62 6c 65 20 62 79 pile.variables.are.accessible.by
34780 20 69 6d 70 6f 72 74 69 6e 67 20 74 68 65 20 3c 63 6f 64 65 3e 22 62 75 69 6c 74 69 6e 22 3c 2f .importing.the.<code>"builtin"</
347a0 63 6f 64 65 3e 20 70 61 63 6b 61 67 65 2c 0a 20 20 20 20 20 20 77 68 69 63 68 20 74 68 65 20 63 code>.package,.......which.the.c
347c0 6f 6d 70 69 6c 65 72 20 6d 61 6b 65 73 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 65 76 65 72 79 ompiler.makes.available.to.every
347e0 20 5a 69 67 20 73 6f 75 72 63 65 20 66 69 6c 65 2e 20 49 74 20 63 6f 6e 74 61 69 6e 73 0a 20 20 .Zig.source.file..It.contains...
34800 20 20 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 63 6f 6e 73 74 61 6e 74 73 20 73 75 63 68 20 ....compile-time.constants.such.
34820 61 73 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 61 72 67 65 74 2c 20 65 6e 64 69 61 6e 6e 65 73 as.the.current.target,.endiannes
34840 73 2c 20 61 6e 64 20 72 65 6c 65 61 73 65 20 6d 6f 64 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a s,.and.release.mode........</p>.
34860 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e ......<pre><code.class="zig">con
34880 73 74 20 62 75 69 6c 74 69 6e 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 62 75 69 6c 74 st.builtin.=.@import(&quot;built
348a0 69 6e 26 71 75 6f 74 3b 29 3b 0a 63 6f 6e 73 74 20 73 65 70 61 72 61 74 6f 72 20 3d 20 69 66 20 in&quot;);.const.separator.=.if.
348c0 28 62 75 69 6c 74 69 6e 2e 6f 73 20 3d 3d 20 62 75 69 6c 74 69 6e 2e 4f 73 2e 77 69 6e 64 6f 77 (builtin.os.==.builtin.Os.window
348e0 73 29 20 27 5c 5c 27 20 65 6c 73 65 20 27 2f 27 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 s).'\\'.else.'/';</code></pre>..
34900 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 45 78 61 6d 70 6c 65 20 6f 66 20 77 68 61 74 20 69 .....<p>.......Example.of.what.i
34920 73 20 69 6d 70 6f 72 74 65 64 20 77 69 74 68 20 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 62 s.imported.with.<code>@import("b
34940 75 69 6c 74 69 6e 22 29 3c 2f 63 6f 64 65 3e 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 uiltin")</code>:.......</p>.....
34960 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 70 75 62 20 63 6f 6e ..<pre><code.class="zig">pub.con
34980 73 74 20 53 74 61 63 6b 54 72 61 63 65 20 3d 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 69 6e 64 st.StackTrace.=.struct.{.....ind
349a0 65 78 3a 20 75 73 69 7a 65 2c 0a 20 20 20 20 69 6e 73 74 72 75 63 74 69 6f 6e 5f 61 64 64 72 65 ex:.usize,.....instruction_addre
349c0 73 73 65 73 3a 20 5b 5d 75 73 69 7a 65 2c 0a 7d 3b 0a 0a 70 75 62 20 63 6f 6e 73 74 20 4f 73 20 sses:.[]usize,.};..pub.const.Os.
349e0 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 66 72 65 65 73 74 61 6e 64 69 6e 67 2c 0a 20 20 20 20 61 =.enum.{.....freestanding,.....a
34a00 6e 61 6e 61 73 2c 0a 20 20 20 20 63 6c 6f 75 64 61 62 69 2c 0a 20 20 20 20 64 72 61 67 6f 6e 66 nanas,.....cloudabi,.....dragonf
34a20 6c 79 2c 0a 20 20 20 20 66 72 65 65 62 73 64 2c 0a 20 20 20 20 66 75 63 68 73 69 61 2c 0a 20 20 ly,.....freebsd,.....fuchsia,...
34a40 20 20 69 6f 73 2c 0a 20 20 20 20 6b 66 72 65 65 62 73 64 2c 0a 20 20 20 20 6c 69 6e 75 78 2c 0a ..ios,.....kfreebsd,.....linux,.
34a60 20 20 20 20 6c 76 32 2c 0a 20 20 20 20 6d 61 63 6f 73 78 2c 0a 20 20 20 20 6e 65 74 62 73 64 2c ....lv2,.....macosx,.....netbsd,
34a80 0a 20 20 20 20 6f 70 65 6e 62 73 64 2c 0a 20 20 20 20 73 6f 6c 61 72 69 73 2c 0a 20 20 20 20 77 .....openbsd,.....solaris,.....w
34aa0 69 6e 64 6f 77 73 2c 0a 20 20 20 20 68 61 69 6b 75 2c 0a 20 20 20 20 6d 69 6e 69 78 2c 0a 20 20 indows,.....haiku,.....minix,...
34ac0 20 20 72 74 65 6d 73 2c 0a 20 20 20 20 6e 61 63 6c 2c 0a 20 20 20 20 63 6e 6b 2c 0a 20 20 20 20 ..rtems,.....nacl,.....cnk,.....
34ae0 62 69 74 72 69 67 2c 0a 20 20 20 20 61 69 78 2c 0a 20 20 20 20 63 75 64 61 2c 0a 20 20 20 20 6e bitrig,.....aix,.....cuda,.....n
34b00 76 63 6c 2c 0a 20 20 20 20 61 6d 64 68 73 61 2c 0a 20 20 20 20 70 73 34 2c 0a 20 20 20 20 65 6c vcl,.....amdhsa,.....ps4,.....el
34b20 66 69 61 6d 63 75 2c 0a 20 20 20 20 74 76 6f 73 2c 0a 20 20 20 20 77 61 74 63 68 6f 73 2c 0a 20 fiamcu,.....tvos,.....watchos,..
34b40 20 20 20 6d 65 73 61 33 64 2c 0a 20 20 20 20 63 6f 6e 74 69 6b 69 2c 0a 20 20 20 20 7a 65 6e 2c ...mesa3d,.....contiki,.....zen,
34b60 0a 7d 3b 0a 0a 70 75 62 20 63 6f 6e 73 74 20 41 72 63 68 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 .};..pub.const.Arch.=.enum.{....
34b80 20 61 72 6d 76 38 5f 32 61 2c 0a 20 20 20 20 61 72 6d 76 38 5f 31 61 2c 0a 20 20 20 20 61 72 6d .armv8_2a,.....armv8_1a,.....arm
34ba0 76 38 2c 0a 20 20 20 20 61 72 6d 76 38 72 2c 0a 20 20 20 20 61 72 6d 76 38 6d 5f 62 61 73 65 6c v8,.....armv8r,.....armv8m_basel
34bc0 69 6e 65 2c 0a 20 20 20 20 61 72 6d 76 38 6d 5f 6d 61 69 6e 6c 69 6e 65 2c 0a 20 20 20 20 61 72 ine,.....armv8m_mainline,.....ar
34be0 6d 76 37 2c 0a 20 20 20 20 61 72 6d 76 37 65 6d 2c 0a 20 20 20 20 61 72 6d 76 37 6d 2c 0a 20 20 mv7,.....armv7em,.....armv7m,...
34c00 20 20 61 72 6d 76 37 73 2c 0a 20 20 20 20 61 72 6d 76 37 6b 2c 0a 20 20 20 20 61 72 6d 76 37 76 ..armv7s,.....armv7k,.....armv7v
34c20 65 2c 0a 20 20 20 20 61 72 6d 76 36 2c 0a 20 20 20 20 61 72 6d 76 36 6d 2c 0a 20 20 20 20 61 72 e,.....armv6,.....armv6m,.....ar
34c40 6d 76 36 6b 2c 0a 20 20 20 20 61 72 6d 76 36 74 32 2c 0a 20 20 20 20 61 72 6d 76 35 2c 0a 20 20 mv6k,.....armv6t2,.....armv5,...
34c60 20 20 61 72 6d 76 35 74 65 2c 0a 20 20 20 20 61 72 6d 76 34 74 2c 0a 20 20 20 20 61 72 6d 65 62 ..armv5te,.....armv4t,.....armeb
34c80 2c 0a 20 20 20 20 61 61 72 63 68 36 34 2c 0a 20 20 20 20 61 61 72 63 68 36 34 5f 62 65 2c 0a 20 ,.....aarch64,.....aarch64_be,..
34ca0 20 20 20 61 76 72 2c 0a 20 20 20 20 62 70 66 65 6c 2c 0a 20 20 20 20 62 70 66 65 62 2c 0a 20 20 ...avr,.....bpfel,.....bpfeb,...
34cc0 20 20 68 65 78 61 67 6f 6e 2c 0a 20 20 20 20 6d 69 70 73 2c 0a 20 20 20 20 6d 69 70 73 65 6c 2c ..hexagon,.....mips,.....mipsel,
34ce0 0a 20 20 20 20 6d 69 70 73 36 34 2c 0a 20 20 20 20 6d 69 70 73 36 34 65 6c 2c 0a 20 20 20 20 6d .....mips64,.....mips64el,.....m
34d00 73 70 34 33 30 2c 0a 20 20 20 20 6e 69 6f 73 32 2c 0a 20 20 20 20 70 6f 77 65 72 70 63 2c 0a 20 sp430,.....nios2,.....powerpc,..
34d20 20 20 20 70 6f 77 65 72 70 63 36 34 2c 0a 20 20 20 20 70 6f 77 65 72 70 63 36 34 6c 65 2c 0a 20 ...powerpc64,.....powerpc64le,..
34d40 20 20 20 72 36 30 30 2c 0a 20 20 20 20 61 6d 64 67 63 6e 2c 0a 20 20 20 20 72 69 73 63 76 33 32 ...r600,.....amdgcn,.....riscv32
34d60 2c 0a 20 20 20 20 72 69 73 63 76 36 34 2c 0a 20 20 20 20 73 70 61 72 63 2c 0a 20 20 20 20 73 70 ,.....riscv64,.....sparc,.....sp
34d80 61 72 63 76 39 2c 0a 20 20 20 20 73 70 61 72 63 65 6c 2c 0a 20 20 20 20 73 33 39 30 78 2c 0a 20 arcv9,.....sparcel,.....s390x,..
34da0 20 20 20 74 63 65 2c 0a 20 20 20 20 74 63 65 6c 65 2c 0a 20 20 20 20 74 68 75 6d 62 2c 0a 20 20 ...tce,.....tcele,.....thumb,...
34dc0 20 20 74 68 75 6d 62 65 62 2c 0a 20 20 20 20 69 33 38 36 2c 0a 20 20 20 20 78 38 36 5f 36 34 2c ..thumbeb,.....i386,.....x86_64,
34de0 0a 20 20 20 20 78 63 6f 72 65 2c 0a 20 20 20 20 6e 76 70 74 78 2c 0a 20 20 20 20 6e 76 70 74 78 .....xcore,.....nvptx,.....nvptx
34e00 36 34 2c 0a 20 20 20 20 6c 65 33 32 2c 0a 20 20 20 20 6c 65 36 34 2c 0a 20 20 20 20 61 6d 64 69 64,.....le32,.....le64,.....amdi
34e20 6c 2c 0a 20 20 20 20 61 6d 64 69 6c 36 34 2c 0a 20 20 20 20 68 73 61 69 6c 2c 0a 20 20 20 20 68 l,.....amdil64,.....hsail,.....h
34e40 73 61 69 6c 36 34 2c 0a 20 20 20 20 73 70 69 72 2c 0a 20 20 20 20 73 70 69 72 36 34 2c 0a 20 20 sail64,.....spir,.....spir64,...
34e60 20 20 6b 61 6c 69 6d 62 61 76 33 2c 0a 20 20 20 20 6b 61 6c 69 6d 62 61 76 34 2c 0a 20 20 20 20 ..kalimbav3,.....kalimbav4,.....
34e80 6b 61 6c 69 6d 62 61 76 35 2c 0a 20 20 20 20 73 68 61 76 65 2c 0a 20 20 20 20 6c 61 6e 61 69 2c kalimbav5,.....shave,.....lanai,
34ea0 0a 20 20 20 20 77 61 73 6d 33 32 2c 0a 20 20 20 20 77 61 73 6d 36 34 2c 0a 20 20 20 20 72 65 6e .....wasm32,.....wasm64,.....ren
34ec0 64 65 72 73 63 72 69 70 74 33 32 2c 0a 20 20 20 20 72 65 6e 64 65 72 73 63 72 69 70 74 36 34 2c derscript32,.....renderscript64,
34ee0 0a 7d 3b 0a 0a 70 75 62 20 63 6f 6e 73 74 20 45 6e 76 69 72 6f 6e 20 3d 20 65 6e 75 6d 20 7b 0a .};..pub.const.Environ.=.enum.{.
34f00 20 20 20 20 75 6e 6b 6e 6f 77 6e 2c 0a 20 20 20 20 67 6e 75 2c 0a 20 20 20 20 67 6e 75 61 62 69 ....unknown,.....gnu,.....gnuabi
34f20 36 34 2c 0a 20 20 20 20 67 6e 75 65 61 62 69 2c 0a 20 20 20 20 67 6e 75 65 61 62 69 68 66 2c 0a 64,.....gnueabi,.....gnueabihf,.
34f40 20 20 20 20 67 6e 75 78 33 32 2c 0a 20 20 20 20 63 6f 64 65 31 36 2c 0a 20 20 20 20 65 61 62 69 ....gnux32,.....code16,.....eabi
34f60 2c 0a 20 20 20 20 65 61 62 69 68 66 2c 0a 20 20 20 20 61 6e 64 72 6f 69 64 2c 0a 20 20 20 20 6d ,.....eabihf,.....android,.....m
34f80 75 73 6c 2c 0a 20 20 20 20 6d 75 73 6c 65 61 62 69 2c 0a 20 20 20 20 6d 75 73 6c 65 61 62 69 68 usl,.....musleabi,.....musleabih
34fa0 66 2c 0a 20 20 20 20 6d 73 76 63 2c 0a 20 20 20 20 69 74 61 6e 69 75 6d 2c 0a 20 20 20 20 63 79 f,.....msvc,.....itanium,.....cy
34fc0 67 6e 75 73 2c 0a 20 20 20 20 61 6d 64 6f 70 65 6e 63 6c 2c 0a 20 20 20 20 63 6f 72 65 63 6c 72 gnus,.....amdopencl,.....coreclr
34fe0 2c 0a 20 20 20 20 6f 70 65 6e 63 6c 2c 0a 7d 3b 0a 0a 70 75 62 20 63 6f 6e 73 74 20 4f 62 6a 65 ,.....opencl,.};..pub.const.Obje
35000 63 74 46 6f 72 6d 61 74 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 75 6e 6b 6e 6f 77 6e 2c 0a 20 ctFormat.=.enum.{.....unknown,..
35020 20 20 20 63 6f 66 66 2c 0a 20 20 20 20 65 6c 66 2c 0a 20 20 20 20 6d 61 63 68 6f 2c 0a 20 20 20 ...coff,.....elf,.....macho,....
35040 20 77 61 73 6d 2c 0a 7d 3b 0a 0a 70 75 62 20 63 6f 6e 73 74 20 47 6c 6f 62 61 6c 4c 69 6e 6b 61 .wasm,.};..pub.const.GlobalLinka
35060 67 65 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 49 6e 74 65 72 6e 61 6c 2c 0a 20 20 20 20 53 74 ge.=.enum.{.....Internal,.....St
35080 72 6f 6e 67 2c 0a 20 20 20 20 57 65 61 6b 2c 0a 20 20 20 20 4c 69 6e 6b 4f 6e 63 65 2c 0a 7d 3b rong,.....Weak,.....LinkOnce,.};
350a0 0a 0a 70 75 62 20 63 6f 6e 73 74 20 41 74 6f 6d 69 63 4f 72 64 65 72 20 3d 20 65 6e 75 6d 20 7b ..pub.const.AtomicOrder.=.enum.{
350c0 0a 20 20 20 20 55 6e 6f 72 64 65 72 65 64 2c 0a 20 20 20 20 4d 6f 6e 6f 74 6f 6e 69 63 2c 0a 20 .....Unordered,.....Monotonic,..
350e0 20 20 20 41 63 71 75 69 72 65 2c 0a 20 20 20 20 52 65 6c 65 61 73 65 2c 0a 20 20 20 20 41 63 71 ...Acquire,.....Release,.....Acq
35100 52 65 6c 2c 0a 20 20 20 20 53 65 71 43 73 74 2c 0a 7d 3b 0a 0a 70 75 62 20 63 6f 6e 73 74 20 4d Rel,.....SeqCst,.};..pub.const.M
35120 6f 64 65 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 44 65 62 75 67 2c 0a 20 20 20 20 52 65 6c 65 ode.=.enum.{.....Debug,.....Rele
35140 61 73 65 53 61 66 65 2c 0a 20 20 20 20 52 65 6c 65 61 73 65 46 61 73 74 2c 0a 7d 3b 0a 0a 70 75 aseSafe,.....ReleaseFast,.};..pu
35160 62 20 63 6f 6e 73 74 20 54 79 70 65 49 64 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 54 79 70 65 b.const.TypeId.=.enum.{.....Type
35180 2c 0a 20 20 20 20 56 6f 69 64 2c 0a 20 20 20 20 42 6f 6f 6c 2c 0a 20 20 20 20 4e 6f 52 65 74 75 ,.....Void,.....Bool,.....NoRetu
351a0 72 6e 2c 0a 20 20 20 20 49 6e 74 2c 0a 20 20 20 20 46 6c 6f 61 74 2c 0a 20 20 20 20 50 6f 69 6e rn,.....Int,.....Float,.....Poin
351c0 74 65 72 2c 0a 20 20 20 20 41 72 72 61 79 2c 0a 20 20 20 20 53 74 72 75 63 74 2c 0a 20 20 20 20 ter,.....Array,.....Struct,.....
351e0 46 6c 6f 61 74 4c 69 74 65 72 61 6c 2c 0a 20 20 20 20 49 6e 74 4c 69 74 65 72 61 6c 2c 0a 20 20 FloatLiteral,.....IntLiteral,...
35200 20 20 55 6e 64 65 66 69 6e 65 64 4c 69 74 65 72 61 6c 2c 0a 20 20 20 20 4e 75 6c 6c 4c 69 74 65 ..UndefinedLiteral,.....NullLite
35220 72 61 6c 2c 0a 20 20 20 20 4e 75 6c 6c 61 62 6c 65 2c 0a 20 20 20 20 45 72 72 6f 72 55 6e 69 6f ral,.....Nullable,.....ErrorUnio
35240 6e 2c 0a 20 20 20 20 45 72 72 6f 72 2c 0a 20 20 20 20 45 6e 75 6d 2c 0a 20 20 20 20 55 6e 69 6f n,.....Error,.....Enum,.....Unio
35260 6e 2c 0a 20 20 20 20 46 6e 2c 0a 20 20 20 20 4e 61 6d 65 73 70 61 63 65 2c 0a 20 20 20 20 42 6c n,.....Fn,.....Namespace,.....Bl
35280 6f 63 6b 2c 0a 20 20 20 20 42 6f 75 6e 64 46 6e 2c 0a 20 20 20 20 41 72 67 54 75 70 6c 65 2c 0a ock,.....BoundFn,.....ArgTuple,.
352a0 20 20 20 20 4f 70 61 71 75 65 2c 0a 7d 3b 0a 0a 70 75 62 20 63 6f 6e 73 74 20 46 6c 6f 61 74 4d ....Opaque,.};..pub.const.FloatM
352c0 6f 64 65 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 4f 70 74 69 6d 69 7a 65 64 2c 0a 20 20 20 20 ode.=.enum.{.....Optimized,.....
352e0 53 74 72 69 63 74 2c 0a 7d 3b 0a 0a 70 75 62 20 63 6f 6e 73 74 20 45 6e 64 69 61 6e 20 3d 20 65 Strict,.};..pub.const.Endian.=.e
35300 6e 75 6d 20 7b 0a 20 20 20 20 42 69 67 2c 0a 20 20 20 20 4c 69 74 74 6c 65 2c 0a 7d 3b 0a 0a 70 num.{.....Big,.....Little,.};..p
35320 75 62 20 63 6f 6e 73 74 20 65 6e 64 69 61 6e 20 3d 20 45 6e 64 69 61 6e 2e 4c 69 74 74 6c 65 3b ub.const.endian.=.Endian.Little;
35340 0a 70 75 62 20 63 6f 6e 73 74 20 69 73 5f 74 65 73 74 20 3d 20 66 61 6c 73 65 3b 0a 70 75 62 20 .pub.const.is_test.=.false;.pub.
35360 63 6f 6e 73 74 20 6f 73 20 3d 20 4f 73 2e 6c 69 6e 75 78 3b 0a 70 75 62 20 63 6f 6e 73 74 20 61 const.os.=.Os.linux;.pub.const.a
35380 72 63 68 20 3d 20 41 72 63 68 2e 78 38 36 5f 36 34 3b 0a 70 75 62 20 63 6f 6e 73 74 20 65 6e 76 rch.=.Arch.x86_64;.pub.const.env
353a0 69 72 6f 6e 20 3d 20 45 6e 76 69 72 6f 6e 2e 67 6e 75 3b 0a 70 75 62 20 63 6f 6e 73 74 20 6f 62 iron.=.Environ.gnu;.pub.const.ob
353c0 6a 65 63 74 5f 66 6f 72 6d 61 74 20 3d 20 4f 62 6a 65 63 74 46 6f 72 6d 61 74 2e 65 6c 66 3b 0a ject_format.=.ObjectFormat.elf;.
353e0 70 75 62 20 63 6f 6e 73 74 20 6d 6f 64 65 20 3d 20 4d 6f 64 65 2e 44 65 62 75 67 3b 0a 70 75 62 pub.const.mode.=.Mode.Debug;.pub
35400 20 63 6f 6e 73 74 20 6c 69 6e 6b 5f 6c 69 62 63 20 3d 20 66 61 6c 73 65 3b 0a 70 75 62 20 63 6f .const.link_libc.=.false;.pub.co
35420 6e 73 74 20 68 61 76 65 5f 65 72 72 6f 72 5f 72 65 74 75 72 6e 5f 74 72 61 63 69 6e 67 20 3d 20 nst.have_error_return_tracing.=.
35440 74 72 75 65 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 true;</code></pre>.......<p>See.
35460 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 42 75 69 6c also:</p><ul>.<li><a.href="#Buil
35480 64 2d 4d 6f 64 65 22 3e 42 75 69 6c 64 20 4d 6f 64 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c d-Mode">Build.Mode</a></li>.</ul
354a0 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 52 6f 6f 74 2d 53 6f 75 >...............<h1.id="Root-Sou
354c0 72 63 65 2d 46 69 6c 65 22 3e 52 6f 6f 74 20 53 6f 75 72 63 65 20 46 69 6c 65 3c 2f 68 31 3e 0a rce-File">Root.Source.File</h1>.
354e0 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 70 6c 61 69 6e 20 68 6f 77 20 72 6f 6f 74 .......<p>TODO:.explain.how.root
35500 20 73 6f 75 72 63 65 20 66 69 6c 65 20 66 69 6e 64 73 20 6f 74 68 65 72 20 66 69 6c 65 73 3c 2f .source.file.finds.other.files</
35520 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 70 75 62 20 66 6e 20 6d 61 69 6e 3c 2f 70 p>.......<p>TODO:.pub.fn.main</p
35540 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 70 75 62 20 66 6e 20 70 61 6e 69 63 3c 2f 70 >.......<p>TODO:.pub.fn.panic</p
35560 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 69 66 20 6c 69 6e 6b 69 6e 67 20 77 69 74 68 >.......<p>TODO:.if.linking.with
35580 20 6c 69 62 63 20 79 6f 75 20 63 61 6e 20 75 73 65 20 65 78 70 6f 72 74 20 66 6e 20 6d 61 69 6e .libc.you.can.use.export.fn.main
355a0 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 6f 72 64 65 72 20 69 6e 64 65 70 65 </p>.......<p>TODO:.order.indepe
355c0 6e 64 65 6e 74 20 74 6f 70 20 6c 65 76 65 6c 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 3c 2f 70 3e ndent.top.level.declarations</p>
355e0 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 6c 61 7a 79 20 61 6e 61 6c 79 73 69 73 3c 2f 70 .......<p>TODO:.lazy.analysis</p
35600 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 75 73 69 6e 67 20 63 6f 6d 70 74 69 6d 65 20 >.......<p>TODO:.using.comptime.
35620 7b 20 5f 20 3d 20 40 69 6d 70 6f 72 74 28 29 20 7d 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 {._.=.@import().}</p>...........
35640 20 20 20 3c 68 31 20 69 64 3d 22 5a 69 67 2d 54 65 73 74 22 3e 5a 69 67 20 54 65 73 74 3c 2f 68 ...<h1.id="Zig-Test">Zig.Test</h
35660 31 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 62 61 73 69 63 20 75 73 61 67 65 3c 2f 1>........<p>TODO:.basic.usage</
35680 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 6c 61 7a 79 20 61 6e 61 6c 79 73 69 73 3c p>.......<p>TODO:.lazy.analysis<
356a0 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 2d 2d 74 65 73 74 2d 66 69 6c 74 65 72 /p>.......<p>TODO:.--test-filter
356c0 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 2d 2d 74 65 73 74 2d 6e 61 6d 65 2d </p>.......<p>TODO:.--test-name-
356e0 70 72 65 66 69 78 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 74 65 73 74 69 6e prefix</p>.......<p>TODO:.testin
35700 67 20 69 6e 20 72 65 6c 65 61 73 65 66 61 73 74 20 61 6e 64 20 72 65 6c 65 61 73 65 73 61 66 65 g.in.releasefast.and.releasesafe
35720 20 6d 6f 64 65 2e 20 61 73 73 65 72 74 20 73 74 69 6c 6c 20 77 6f 72 6b 73 3c 2f 70 3e 0a 20 20 .mode..assert.still.works</p>...
35740 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 5a 69 67 2d 42 75 69 6c 64 2d 53 79 73 ...........<h1.id="Zig-Build-Sys
35760 74 65 6d 22 3e 5a 69 67 20 42 75 69 6c 64 20 53 79 73 74 65 6d 3c 2f 68 31 3e 0a 0a 20 20 20 20 tem">Zig.Build.System</h1>......
35780 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 70 6c 61 69 6e 20 70 75 72 70 6f 73 65 2c 20 69 74 27 73 ..<p>TODO:.explain.purpose,.it's
357a0 20 73 75 70 70 6f 73 65 64 20 74 6f 20 72 65 70 6c 61 63 65 20 6d 61 6b 65 2f 63 6d 61 6b 65 3c .supposed.to.replace.make/cmake<
357c0 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 61 6d 70 6c 65 20 6f 66 20 62 75 /p>.......<p>TODO:.example.of.bu
357e0 69 6c 64 69 6e 67 20 61 20 7a 69 67 20 65 78 65 63 75 74 61 62 6c 65 3c 2f 70 3e 0a 20 20 20 20 ilding.a.zig.executable</p>.....
35800 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 61 6d 70 6c 65 20 6f 66 20 62 75 69 6c 64 69 6e 67 20 61 ..<p>TODO:.example.of.building.a
35820 20 43 20 6c 69 62 72 61 72 79 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 .C.library</p>..............<h1.
35840 69 64 3d 22 43 22 3e 43 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 41 id="C">C</h1>........<p>.......A
35860 6c 74 68 6f 75 67 68 20 5a 69 67 20 69 73 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 6f 66 20 43 2c lthough.Zig.is.independent.of.C,
35880 20 61 6e 64 2c 20 75 6e 6c 69 6b 65 20 6d 6f 73 74 20 6f 74 68 65 72 20 6c 61 6e 67 75 61 67 65 .and,.unlike.most.other.language
358a0 73 2c 20 64 6f 65 73 20 6e 6f 74 20 64 65 70 65 6e 64 20 6f 6e 20 6c 69 62 63 2c 0a 20 20 20 20 s,.does.not.depend.on.libc,.....
358c0 20 20 5a 69 67 20 61 63 6b 6e 6f 77 6c 65 64 67 65 73 20 74 68 65 20 69 6d 70 6f 72 74 61 6e 63 ..Zig.acknowledges.the.importanc
358e0 65 20 6f 66 20 69 6e 74 65 72 61 63 74 69 6e 67 20 77 69 74 68 20 65 78 69 73 74 69 6e 67 20 43 e.of.interacting.with.existing.C
35900 20 63 6f 64 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 .code........</p>.......<p>.....
35920 20 20 54 68 65 72 65 20 61 72 65 20 61 20 66 65 77 20 77 61 79 73 20 74 68 61 74 20 5a 69 67 20 ..There.are.a.few.ways.that.Zig.
35940 66 61 63 69 6c 69 74 61 74 65 73 20 43 20 69 6e 74 65 72 6f 70 2e 0a 20 20 20 20 20 20 3c 2f 70 facilitates.C.interop........</p
35960 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 43 2d 54 79 70 65 2d 50 72 69 6d 69 74 69 76 65 >.......<h2.id="C-Type-Primitive
35980 73 22 3e 43 20 54 79 70 65 20 50 72 69 6d 69 74 69 76 65 73 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 s">C.Type.Primitives</h2>.......
359a0 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 73 65 20 68 61 76 65 20 67 75 61 72 61 6e 74 65 65 64 .<p>.......These.have.guaranteed
359c0 20 43 20 41 42 49 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 61 6e 64 20 63 61 6e 20 62 65 20 .C.ABI.compatibility.and.can.be.
359e0 75 73 65 64 20 6c 69 6b 65 20 61 6e 79 20 6f 74 68 65 72 20 74 79 70 65 2e 0a 20 20 20 20 20 20 used.like.any.other.type........
35a00 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 </p>.......<ul>.........<li><cod
35a20 65 3e 63 5f 73 68 6f 72 74 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c e>c_short</code></li>.........<l
35a40 69 3e 3c 63 6f 64 65 3e 63 5f 75 73 68 6f 72 74 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 i><code>c_ushort</code></li>....
35a60 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 63 5f 69 6e 74 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e .....<li><code>c_int</code></li>
35a80 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 63 5f 75 69 6e 74 3c 2f 63 6f 64 65 3e .........<li><code>c_uint</code>
35aa0 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 63 5f 6c 6f 6e 67 3c 2f </li>.........<li><code>c_long</
35ac0 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 63 5f 75 code></li>.........<li><code>c_u
35ae0 6c 6f 6e 67 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f long</code></li>.........<li><co
35b00 64 65 3e 63 5f 6c 6f 6e 67 6c 6f 6e 67 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 de>c_longlong</code></li>.......
35b20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 63 5f 75 6c 6f 6e 67 6c 6f 6e 67 3c 2f 63 6f 64 65 3e 3c 2f ..<li><code>c_ulonglong</code></
35b40 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 63 5f 6c 6f 6e 67 64 6f 75 62 li>.........<li><code>c_longdoub
35b60 6c 65 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 le</code></li>.........<li><code
35b80 3e 63 5f 76 6f 69 64 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a >c_void</code></li>.......</ul>.
35ba0 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c ......<p>See.also:</p><ul>.<li><
35bc0 61 20 68 72 65 66 3d 22 23 50 72 69 6d 69 74 69 76 65 2d 54 79 70 65 73 22 3e 50 72 69 6d 69 74 a.href="#Primitive-Types">Primit
35be0 69 76 65 20 54 79 70 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 ive.Types</a></li>.</ul>........
35c00 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 43 2d 53 74 72 69 6e 67 2d 4c 69 74 65 72 61 6c 73 .......<h2.id="C-String-Literals
35c20 22 3e 43 20 53 74 72 69 6e 67 20 4c 69 74 65 72 61 6c 73 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 ">C.String.Literals</h2>........
35c40 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 <p.class="file">test.zig</p><pre
35c60 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 65 78 74 65 72 6e 20 66 6e 20 70 75 74 ><code.class="zig">extern.fn.put
35c80 73 28 26 61 6d 70 3b 63 6f 6e 73 74 20 75 38 29 20 76 6f 69 64 3b 0a 0a 70 75 62 20 66 6e 20 6d s(&amp;const.u8).void;..pub.fn.m
35ca0 61 69 6e 28 29 20 76 6f 69 64 20 7b 0a 20 20 20 20 70 75 74 73 28 63 26 71 75 6f 74 3b 74 68 69 ain().void.{.....puts(c&quot;thi
35cc0 73 20 68 61 73 20 61 20 6e 75 6c 6c 20 74 65 72 6d 69 6e 61 74 6f 72 26 71 75 6f 74 3b 29 3b 0a s.has.a.null.terminator&quot;);.
35ce0 20 20 20 20 70 75 74 73 28 0a 20 20 20 20 20 20 20 20 63 5c 5c 61 6e 64 20 73 6f 0a 20 20 20 20 ....puts(.........c\\and.so.....
35d00 20 20 20 20 63 5c 5c 64 6f 65 73 20 74 68 69 73 0a 20 20 20 20 20 20 20 20 63 5c 5c 6d 75 6c 74 ....c\\does.this.........c\\mult
35d20 69 6c 69 6e 65 20 43 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 0a 20 20 20 20 29 3b 0a 7d 3c iline.C.string.literal.....);.}<
35d40 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 /code></pre><pre><code.class="sh
35d60 65 6c 6c 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 65 78 65 20 74 65 73 74 2e 7a 69 67 20 2d 2d ell">$.zig.build-exe.test.zig.--
35d80 6c 69 62 72 61 72 79 20 63 0a 24 20 2e 2f 74 65 73 74 0a 74 68 69 73 20 68 61 73 20 61 20 6e 75 library.c.$../test.this.has.a.nu
35da0 6c 6c 20 74 65 72 6d 69 6e 61 74 6f 72 0a 61 6e 64 20 73 6f 0a 64 6f 65 73 20 74 68 69 73 0a 6d ll.terminator.and.so.does.this.m
35dc0 75 6c 74 69 6c 69 6e 65 20 43 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 0a 3c 2f 63 6f 64 65 ultiline.C.string.literal.</code
35de0 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c ></pre>........<p>See.also:</p><
35e00 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 53 74 72 69 6e 67 2d 4c 69 74 65 72 61 6c ul>.<li><a.href="#String-Literal
35e20 73 22 3e 53 74 72 69 6e 67 20 4c 69 74 65 72 61 6c 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c s">String.Literals</a></li>.</ul
35e40 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 49 6d 70 6f 72 74 2d 66 >...............<h2.id="Import-f
35e60 72 6f 6d 2d 43 2d 48 65 61 64 65 72 2d 46 69 6c 65 22 3e 49 6d 70 6f 72 74 20 66 72 6f 6d 20 43 rom-C-Header-File">Import.from.C
35e80 20 48 65 61 64 65 72 20 46 69 6c 65 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 .Header.File</h2>........<p>....
35ea0 20 20 20 54 68 65 20 3c 63 6f 64 65 3e 40 63 49 6d 70 6f 72 74 3c 2f 63 6f 64 65 3e 20 62 75 69 ...The.<code>@cImport</code>.bui
35ec0 6c 74 69 6e 20 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 0a 20 20 20 20 20 20 ltin.function.can.be.used.......
35ee0 74 6f 20 64 69 72 65 63 74 6c 79 20 69 6d 70 6f 72 74 20 73 79 6d 62 6f 6c 73 20 66 72 6f 6d 20 to.directly.import.symbols.from.
35f00 2e 68 20 66 69 6c 65 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c .h.files:.......</p>.......<p.cl
35f20 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 3c 70 72 65 3e 3c 63 6f 64 ass="file">test.zig</p><pre><cod
35f40 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 63 20 3d 20 40 63 49 6d 70 6f 72 74 e.class="zig">const.c.=.@cImport
35f60 28 7b 0a 20 20 20 20 2f 2f 20 53 65 65 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d ({.....//.See.https://github.com
35f80 2f 7a 69 67 2d 6c 61 6e 67 2f 7a 69 67 2f 69 73 73 75 65 73 2f 35 31 35 0a 20 20 20 20 40 63 44 /zig-lang/zig/issues/515.....@cD
35fa0 65 66 69 6e 65 28 26 71 75 6f 74 3b 5f 4e 4f 5f 43 52 54 5f 53 54 44 49 4f 5f 49 4e 4c 49 4e 45 efine(&quot;_NO_CRT_STDIO_INLINE
35fc0 26 71 75 6f 74 3b 2c 20 26 71 75 6f 74 3b 31 26 71 75 6f 74 3b 29 3b 0a 20 20 20 20 40 63 49 6e &quot;,.&quot;1&quot;);.....@cIn
35fe0 63 6c 75 64 65 28 26 71 75 6f 74 3b 73 74 64 69 6f 2e 68 26 71 75 6f 74 3b 29 3b 0a 7d 29 3b 0a clude(&quot;stdio.h&quot;);.});.
36000 70 75 62 20 66 6e 20 6d 61 69 6e 28 29 20 76 6f 69 64 20 7b 0a 20 20 20 20 5f 20 3d 20 63 2e 70 pub.fn.main().void.{....._.=.c.p
36020 72 69 6e 74 66 28 63 26 71 75 6f 74 3b 68 65 6c 6c 6f 5c 6e 26 71 75 6f 74 3b 29 3b 0a 7d 3c 2f rintf(c&quot;hello\n&quot;);.}</
36040 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 code></pre><pre><code.class="she
36060 6c 6c 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 65 78 65 20 74 65 73 74 2e 7a 69 67 20 2d 2d 6c ll">$.zig.build-exe.test.zig.--l
36080 69 62 72 61 72 79 20 63 0a 24 20 2e 2f 74 65 73 74 0a 68 65 6c 6c 6f 0a 3c 2f 63 6f 64 65 3e 3c ibrary.c.$../test.hello.</code><
360a0 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 3c 63 6f 64 65 /pre>........<p>.......The.<code
360c0 3e 40 63 49 6d 70 6f 72 74 3c 2f 63 6f 64 65 3e 20 66 75 6e 63 74 69 6f 6e 20 74 61 6b 65 73 20 >@cImport</code>.function.takes.
360e0 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 61 73 20 61 20 70 61 72 61 6d 65 74 65 72 2e 0a 20 20 an.expression.as.a.parameter....
36100 20 20 20 20 54 68 69 73 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65 76 61 6c 75 61 74 65 64 ....This.expression.is.evaluated
36120 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 61 6e 64 20 69 73 20 75 73 65 64 20 74 6f 20 .at.compile-time.and.is.used.to.
36140 63 6f 6e 74 72 6f 6c 0a 20 20 20 20 20 20 70 72 65 70 72 6f 63 65 73 73 6f 72 20 64 69 72 65 63 control.......preprocessor.direc
36160 74 69 76 65 73 20 61 6e 64 20 69 6e 63 6c 75 64 65 20 6d 75 6c 74 69 70 6c 65 20 2e 68 20 66 69 tives.and.include.multiple..h.fi
36180 6c 65 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 les:.......</p>.......<pre><code
361a0 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 62 75 69 6c 74 69 6e 20 3d 20 40 69 6d .class="zig">const.builtin.=.@im
361c0 70 6f 72 74 28 26 71 75 6f 74 3b 62 75 69 6c 74 69 6e 26 71 75 6f 74 3b 29 3b 0a 0a 63 6f 6e 73 port(&quot;builtin&quot;);..cons
361e0 74 20 63 20 3d 20 40 63 49 6d 70 6f 72 74 28 7b 0a 20 20 20 20 40 63 44 65 66 69 6e 65 28 26 71 t.c.=.@cImport({.....@cDefine(&q
36200 75 6f 74 3b 4e 44 45 42 55 47 26 71 75 6f 74 3b 2c 20 62 75 69 6c 74 69 6e 2e 6d 6f 64 65 20 3d uot;NDEBUG&quot;,.builtin.mode.=
36220 3d 20 62 75 69 6c 74 69 6e 2e 4d 6f 64 65 2e 52 65 6c 65 61 73 65 46 61 73 74 29 3b 0a 20 20 20 =.builtin.Mode.ReleaseFast);....
36240 20 69 66 20 28 73 6f 6d 65 74 68 69 6e 67 29 20 7b 0a 20 20 20 20 20 20 20 20 40 63 44 65 66 69 .if.(something).{.........@cDefi
36260 6e 65 28 26 71 75 6f 74 3b 5f 47 4e 55 5f 53 4f 55 52 43 45 26 71 75 6f 74 3b 2c 20 7b 7d 29 3b ne(&quot;_GNU_SOURCE&quot;,.{});
36280 0a 20 20 20 20 7d 0a 20 20 20 20 40 63 49 6e 63 6c 75 64 65 28 26 71 75 6f 74 3b 73 74 64 6c 69 .....}.....@cInclude(&quot;stdli
362a0 62 2e 68 26 71 75 6f 74 3b 29 3b 0a 20 20 20 20 69 66 20 28 73 6f 6d 65 74 68 69 6e 67 29 20 7b b.h&quot;);.....if.(something).{
362c0 0a 20 20 20 20 20 20 20 20 40 63 55 6e 64 65 66 28 26 71 75 6f 74 3b 5f 47 4e 55 5f 53 4f 55 52 .........@cUndef(&quot;_GNU_SOUR
362e0 43 45 26 71 75 6f 74 3b 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 40 63 49 6e 63 6c 75 64 65 28 26 CE&quot;);.....}.....@cInclude(&
36300 71 75 6f 74 3b 73 6f 75 6e 64 69 6f 2e 68 26 71 75 6f 74 3b 29 3b 0a 7d 29 3b 3c 2f 63 6f 64 65 quot;soundio.h&quot;);.});</code
36320 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 ></pre>.......<p>See.also:</p><u
36340 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 49 6d 70 6f 72 74 22 3e 40 63 49 6d 70 6f l>.<li><a.href="#cImport">@cImpo
36360 72 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 49 6e 63 6c 75 rt</a></li>.<li><a.href="#cInclu
36380 64 65 22 3e 40 63 49 6e 63 6c 75 64 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 de">@cInclude</a></li>.<li><a.hr
363a0 65 66 3d 22 23 63 44 65 66 69 6e 65 22 3e 40 63 44 65 66 69 6e 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a ef="#cDefine">@cDefine</a></li>.
363c0 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 55 6e 64 65 66 22 3e 40 63 55 6e 64 65 66 3c 2f 61 <li><a.href="#cUndef">@cUndef</a
363e0 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6d 70 6f 72 74 22 3e 40 69 6d ></li>.<li><a.href="#import">@im
36400 70 6f 72 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 20 20 port</a></li>.</ul>.............
36420 20 20 3c 68 32 20 69 64 3d 22 4d 69 78 69 6e 67 2d 4f 62 6a 65 63 74 2d 46 69 6c 65 73 22 3e 4d ..<h2.id="Mixing-Object-Files">M
36440 69 78 69 6e 67 20 4f 62 6a 65 63 74 20 46 69 6c 65 73 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c ixing.Object.Files</h2>........<
36460 70 3e 0a 20 20 20 20 20 20 59 6f 75 20 63 61 6e 20 6d 69 78 20 5a 69 67 20 6f 62 6a 65 63 74 20 p>.......You.can.mix.Zig.object.
36480 66 69 6c 65 73 20 77 69 74 68 20 61 6e 79 20 6f 74 68 65 72 20 6f 62 6a 65 63 74 20 66 69 6c 65 files.with.any.other.object.file
364a0 73 20 74 68 61 74 20 72 65 73 70 65 63 74 20 74 68 65 20 43 20 41 42 49 2e 20 45 78 61 6d 70 6c s.that.respect.the.C.ABI..Exampl
364c0 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 e:.......</p>.......<p.class="fi
364e0 6c 65 22 3e 62 61 73 65 36 34 2e 7a 69 67 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 le">base64.zig</p>.......<pre><c
36500 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 62 61 73 65 36 34 20 3d 20 40 ode.class="zig">const.base64.=.@
36520 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e 62 61 73 65 36 34 3b 0a import(&quot;std&quot;).base64;.
36540 0a 65 78 70 6f 72 74 20 66 6e 20 64 65 63 6f 64 65 5f 62 61 73 65 5f 36 34 28 64 65 73 74 5f 70 .export.fn.decode_base_64(dest_p
36560 74 72 3a 20 26 61 6d 70 3b 75 38 2c 20 64 65 73 74 5f 6c 65 6e 3a 20 75 73 69 7a 65 2c 0a 20 20 tr:.&amp;u8,.dest_len:.usize,...
36580 20 20 73 6f 75 72 63 65 5f 70 74 72 3a 20 26 61 6d 70 3b 63 6f 6e 73 74 20 75 38 2c 20 73 6f 75 ..source_ptr:.&amp;const.u8,.sou
365a0 72 63 65 5f 6c 65 6e 3a 20 75 73 69 7a 65 29 20 75 73 69 7a 65 0a 7b 0a 20 20 20 20 63 6f 6e 73 rce_len:.usize).usize.{.....cons
365c0 74 20 73 72 63 20 3d 20 73 6f 75 72 63 65 5f 70 74 72 5b 30 2e 2e 73 6f 75 72 63 65 5f 6c 65 6e t.src.=.source_ptr[0..source_len
365e0 5d 3b 0a 20 20 20 20 63 6f 6e 73 74 20 64 65 73 74 20 3d 20 64 65 73 74 5f 70 74 72 5b 30 2e 2e ];.....const.dest.=.dest_ptr[0..
36600 64 65 73 74 5f 6c 65 6e 5d 3b 0a 20 20 20 20 63 6f 6e 73 74 20 62 61 73 65 36 34 5f 64 65 63 6f dest_len];.....const.base64_deco
36620 64 65 72 20 3d 20 62 61 73 65 36 34 2e 73 74 61 6e 64 61 72 64 5f 64 65 63 6f 64 65 72 5f 75 6e der.=.base64.standard_decoder_un
36640 73 61 66 65 3b 0a 20 20 20 20 63 6f 6e 73 74 20 64 65 63 6f 64 65 64 5f 73 69 7a 65 20 3d 20 62 safe;.....const.decoded_size.=.b
36660 61 73 65 36 34 5f 64 65 63 6f 64 65 72 2e 63 61 6c 63 53 69 7a 65 28 73 72 63 29 3b 0a 20 20 20 ase64_decoder.calcSize(src);....
36680 20 62 61 73 65 36 34 5f 64 65 63 6f 64 65 72 2e 64 65 63 6f 64 65 28 64 65 73 74 5b 30 2e 2e 64 .base64_decoder.decode(dest[0..d
366a0 65 63 6f 64 65 64 5f 73 69 7a 65 5d 2c 20 73 72 63 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 64 ecoded_size],.src);.....return.d
366c0 65 63 6f 64 65 64 5f 73 69 7a 65 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 ecoded_size;.}</code></pre>.....
366e0 20 20 3c 70 20 63 6c 61 73 73 3d 22 66 69 6c 65 22 3e 74 65 73 74 2e 63 3c 2f 70 3e 0a 20 20 20 ..<p.class="file">test.c</p>....
36700 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 63 70 70 22 3e 2f 2f 20 54 68 69 ...<pre><code.class="cpp">//.Thi
36720 73 20 68 65 61 64 65 72 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 62 79 20 7a 69 67 20 66 72 6f s.header.is.generated.by.zig.fro
36740 6d 20 62 61 73 65 36 34 2e 7a 69 67 0a 23 69 6e 63 6c 75 64 65 20 22 62 61 73 65 36 34 2e 68 22 m.base64.zig.#include."base64.h"
36760 0a 0a 23 69 6e 63 6c 75 64 65 20 26 6c 74 3b 73 74 72 69 6e 67 2e 68 26 67 74 3b 0a 23 69 6e 63 ..#include.&lt;string.h&gt;.#inc
36780 6c 75 64 65 20 26 6c 74 3b 73 74 64 69 6f 2e 68 26 67 74 3b 0a 0a 69 6e 74 20 6d 61 69 6e 28 69 lude.&lt;stdio.h&gt;..int.main(i
367a0 6e 74 20 61 72 67 63 2c 20 63 68 61 72 20 2a 2a 61 72 67 76 29 20 7b 0a 20 20 20 20 63 6f 6e 73 nt.argc,.char.**argv).{.....cons
367c0 74 20 63 68 61 72 20 2a 65 6e 63 6f 64 65 64 20 3d 20 22 59 57 78 73 49 48 6c 76 64 58 49 67 59 t.char.*encoded.=."YWxsIHlvdXIgY
367e0 6d 46 7a 5a 53 42 68 63 6d 55 67 59 6d 56 73 62 32 35 6e 49 48 52 76 49 48 56 7a 22 3b 0a 20 20 mFzZSBhcmUgYmVsb25nIHRvIHVz";...
36800 20 20 63 68 61 72 20 62 75 66 5b 32 30 30 5d 3b 0a 0a 20 20 20 20 73 69 7a 65 5f 74 20 6c 65 6e ..char.buf[200];......size_t.len
36820 20 3d 20 64 65 63 6f 64 65 5f 62 61 73 65 5f 36 34 28 62 75 66 2c 20 32 30 30 2c 20 65 6e 63 6f .=.decode_base_64(buf,.200,.enco
36840 64 65 64 2c 20 73 74 72 6c 65 6e 28 65 6e 63 6f 64 65 64 29 29 3b 0a 20 20 20 20 62 75 66 5b 6c ded,.strlen(encoded));.....buf[l
36860 65 6e 5d 20 3d 20 30 3b 0a 20 20 20 20 70 75 74 73 28 62 75 66 29 3b 0a 0a 20 20 20 20 72 65 74 en].=.0;.....puts(buf);......ret
36880 75 72 6e 20 30 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 20 63 urn.0;.}</code></pre>.......<p.c
368a0 6c 61 73 73 3d 22 66 69 6c 65 22 3e 62 75 69 6c 64 2e 7a 69 67 3c 2f 70 3e 0a 20 20 20 20 20 20 lass="file">build.zig</p>.......
368c0 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 42 75 69 <pre><code.class="zig">const.Bui
368e0 6c 64 65 72 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 75 6f 74 3b 73 74 64 26 71 75 6f 74 3b 29 2e lder.=.@import(&quot;std&quot;).
36900 62 75 69 6c 64 2e 42 75 69 6c 64 65 72 3b 0a 0a 70 75 62 20 66 6e 20 62 75 69 6c 64 28 62 3a 20 build.Builder;..pub.fn.build(b:.
36920 26 61 6d 70 3b 42 75 69 6c 64 65 72 29 20 76 6f 69 64 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 6f &amp;Builder).void.{.....const.o
36940 62 6a 20 3d 20 62 2e 61 64 64 4f 62 6a 65 63 74 28 26 71 75 6f 74 3b 62 61 73 65 36 34 26 71 75 bj.=.b.addObject(&quot;base64&qu
36960 6f 74 3b 2c 20 26 71 75 6f 74 3b 62 61 73 65 36 34 2e 7a 69 67 26 71 75 6f 74 3b 29 3b 0a 0a 20 ot;,.&quot;base64.zig&quot;);...
36980 20 20 20 63 6f 6e 73 74 20 65 78 65 20 3d 20 62 2e 61 64 64 43 45 78 65 63 75 74 61 62 6c 65 28 ...const.exe.=.b.addCExecutable(
369a0 26 71 75 6f 74 3b 74 65 73 74 26 71 75 6f 74 3b 29 3b 0a 20 20 20 20 65 78 65 2e 61 64 64 43 6f &quot;test&quot;);.....exe.addCo
369c0 6d 70 69 6c 65 46 6c 61 67 73 28 5b 5d 5b 5d 63 6f 6e 73 74 20 75 38 20 7b 0a 20 20 20 20 20 20 mpileFlags([][]const.u8.{.......
369e0 20 20 26 71 75 6f 74 3b 2d 73 74 64 3d 63 39 39 26 71 75 6f 74 3b 2c 0a 20 20 20 20 7d 29 3b 0a ..&quot;-std=c99&quot;,.....});.
36a00 20 20 20 20 65 78 65 2e 61 64 64 53 6f 75 72 63 65 46 69 6c 65 28 26 71 75 6f 74 3b 74 65 73 74 ....exe.addSourceFile(&quot;test
36a20 2e 63 26 71 75 6f 74 3b 29 3b 0a 20 20 20 20 65 78 65 2e 61 64 64 4f 62 6a 65 63 74 28 6f 62 6a .c&quot;);.....exe.addObject(obj
36a40 29 3b 0a 20 20 20 20 65 78 65 2e 73 65 74 4f 75 74 70 75 74 50 61 74 68 28 26 71 75 6f 74 3b 2e );.....exe.setOutputPath(&quot;.
36a60 26 71 75 6f 74 3b 29 3b 0a 0a 20 20 20 20 62 2e 64 65 66 61 75 6c 74 5f 73 74 65 70 2e 64 65 70 &quot;);......b.default_step.dep
36a80 65 6e 64 4f 6e 28 26 61 6d 70 3b 65 78 65 2e 73 74 65 70 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f endOn(&amp;exe.step);.}</code></
36aa0 70 72 65 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 54 65 72 6d 69 6e pre>..............<h2.id="Termin
36ac0 61 6c 22 3e 54 65 72 6d 69 6e 61 6c 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 al">Terminal</h2>........<pre><c
36ae0 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 0a 24 20 ode.class="shell">$.zig.build.$.
36b00 2e 2f 74 65 73 74 0a 61 6c 6c 20 79 6f 75 72 20 62 61 73 65 20 61 72 65 20 62 65 6c 6f 6e 67 20 ./test.all.your.base.are.belong.
36b20 74 6f 20 75 73 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 to.us</code></pre>.......<p>See.
36b40 61 6c 73 6f 3a 3c 2f 70 3e 3c 75 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 54 61 72 67 also:</p><ul>.<li><a.href="#Targ
36b60 65 74 73 22 3e 54 61 72 67 65 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 ets">Targets</a></li>.<li><a.hre
36b80 66 3d 22 23 5a 69 67 2d 42 75 69 6c 64 2d 53 79 73 74 65 6d 22 3e 5a 69 67 20 42 75 69 6c 64 20 f="#Zig-Build-System">Zig.Build.
36ba0 53 79 73 74 65 6d 3c 2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 0a 20 20 System</a></li>.</ul>...........
36bc0 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 54 61 72 67 65 74 73 22 3e 54 61 72 67 ...........<h1.id="Targets">Targ
36be0 65 74 73 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 5a 69 67 20 73 75 ets</h1>........<p>.......Zig.su
36c00 70 70 6f 72 74 73 20 67 65 6e 65 72 61 74 69 6e 67 20 63 6f 64 65 20 66 6f 72 20 61 6c 6c 20 74 pports.generating.code.for.all.t
36c20 61 72 67 65 74 73 20 74 68 61 74 20 4c 4c 56 4d 20 73 75 70 70 6f 72 74 73 2e 20 48 65 72 65 20 argets.that.LLVM.supports..Here.
36c40 69 73 0a 20 20 20 20 20 20 77 68 61 74 20 69 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 74 6f 20 65 is.......what.it.looks.like.to.e
36c60 78 65 63 75 74 65 20 3c 63 6f 64 65 3e 7a 69 67 20 74 61 72 67 65 74 73 3c 2f 63 6f 64 65 3e 20 xecute.<code>zig.targets</code>.
36c80 6f 6e 20 61 20 4c 69 6e 75 78 20 78 38 36 5f 36 34 0a 20 20 20 20 20 20 63 6f 6d 70 75 74 65 72 on.a.Linux.x86_64.......computer
36ca0 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c :.......</p>.......<pre><code.cl
36cc0 61 73 73 3d 22 73 68 65 6c 6c 22 3e 24 20 7a 69 67 20 74 61 72 67 65 74 73 0a 41 72 63 68 69 74 ass="shell">$.zig.targets.Archit
36ce0 65 63 74 75 72 65 73 3a 0a 20 20 61 72 6d 76 38 5f 32 61 0a 20 20 61 72 6d 76 38 5f 31 61 0a 20 ectures:...armv8_2a...armv8_1a..
36d00 20 61 72 6d 76 38 0a 20 20 61 72 6d 76 38 72 0a 20 20 61 72 6d 76 38 6d 5f 62 61 73 65 6c 69 6e .armv8...armv8r...armv8m_baselin
36d20 65 0a 20 20 61 72 6d 76 38 6d 5f 6d 61 69 6e 6c 69 6e 65 0a 20 20 61 72 6d 76 37 0a 20 20 61 72 e...armv8m_mainline...armv7...ar
36d40 6d 76 37 65 6d 0a 20 20 61 72 6d 76 37 6d 0a 20 20 61 72 6d 76 37 73 0a 20 20 61 72 6d 76 37 6b mv7em...armv7m...armv7s...armv7k
36d60 0a 20 20 61 72 6d 76 37 76 65 0a 20 20 61 72 6d 76 36 0a 20 20 61 72 6d 76 36 6d 0a 20 20 61 72 ...armv7ve...armv6...armv6m...ar
36d80 6d 76 36 6b 0a 20 20 61 72 6d 76 36 74 32 0a 20 20 61 72 6d 76 35 0a 20 20 61 72 6d 76 35 74 65 mv6k...armv6t2...armv5...armv5te
36da0 0a 20 20 61 72 6d 76 34 74 0a 20 20 61 72 6d 65 62 0a 20 20 61 61 72 63 68 36 34 0a 20 20 61 61 ...armv4t...armeb...aarch64...aa
36dc0 72 63 68 36 34 5f 62 65 0a 20 20 61 76 72 0a 20 20 62 70 66 65 6c 0a 20 20 62 70 66 65 62 0a 20 rch64_be...avr...bpfel...bpfeb..
36de0 20 68 65 78 61 67 6f 6e 0a 20 20 6d 69 70 73 0a 20 20 6d 69 70 73 65 6c 0a 20 20 6d 69 70 73 36 .hexagon...mips...mipsel...mips6
36e00 34 0a 20 20 6d 69 70 73 36 34 65 6c 0a 20 20 6d 73 70 34 33 30 0a 20 20 6e 69 6f 73 32 0a 20 20 4...mips64el...msp430...nios2...
36e20 70 6f 77 65 72 70 63 0a 20 20 70 6f 77 65 72 70 63 36 34 0a 20 20 70 6f 77 65 72 70 63 36 34 6c powerpc...powerpc64...powerpc64l
36e40 65 0a 20 20 72 36 30 30 0a 20 20 61 6d 64 67 63 6e 0a 20 20 72 69 73 63 76 33 32 0a 20 20 72 69 e...r600...amdgcn...riscv32...ri
36e60 73 63 76 36 34 0a 20 20 73 70 61 72 63 0a 20 20 73 70 61 72 63 76 39 0a 20 20 73 70 61 72 63 65 scv64...sparc...sparcv9...sparce
36e80 6c 0a 20 20 73 33 39 30 78 0a 20 20 74 63 65 0a 20 20 74 63 65 6c 65 0a 20 20 74 68 75 6d 62 0a l...s390x...tce...tcele...thumb.
36ea0 20 20 74 68 75 6d 62 65 62 0a 20 20 69 33 38 36 0a 20 20 78 38 36 5f 36 34 20 28 6e 61 74 69 76 ..thumbeb...i386...x86_64.(nativ
36ec0 65 29 0a 20 20 78 63 6f 72 65 0a 20 20 6e 76 70 74 78 0a 20 20 6e 76 70 74 78 36 34 0a 20 20 6c e)...xcore...nvptx...nvptx64...l
36ee0 65 33 32 0a 20 20 6c 65 36 34 0a 20 20 61 6d 64 69 6c 0a 20 20 61 6d 64 69 6c 36 34 0a 20 20 68 e32...le64...amdil...amdil64...h
36f00 73 61 69 6c 0a 20 20 68 73 61 69 6c 36 34 0a 20 20 73 70 69 72 0a 20 20 73 70 69 72 36 34 0a 20 sail...hsail64...spir...spir64..
36f20 20 6b 61 6c 69 6d 62 61 76 33 0a 20 20 6b 61 6c 69 6d 62 61 76 34 0a 20 20 6b 61 6c 69 6d 62 61 .kalimbav3...kalimbav4...kalimba
36f40 76 35 0a 20 20 73 68 61 76 65 0a 20 20 6c 61 6e 61 69 0a 20 20 77 61 73 6d 33 32 0a 20 20 77 61 v5...shave...lanai...wasm32...wa
36f60 73 6d 36 34 0a 20 20 72 65 6e 64 65 72 73 63 72 69 70 74 33 32 0a 20 20 72 65 6e 64 65 72 73 63 sm64...renderscript32...rendersc
36f80 72 69 70 74 36 34 0a 0a 4f 70 65 72 61 74 69 6e 67 20 53 79 73 74 65 6d 73 3a 0a 20 20 66 72 65 ript64..Operating.Systems:...fre
36fa0 65 73 74 61 6e 64 69 6e 67 0a 20 20 61 6e 61 6e 61 73 0a 20 20 63 6c 6f 75 64 61 62 69 0a 20 20 estanding...ananas...cloudabi...
36fc0 64 72 61 67 6f 6e 66 6c 79 0a 20 20 66 72 65 65 62 73 64 0a 20 20 66 75 63 68 73 69 61 0a 20 20 dragonfly...freebsd...fuchsia...
36fe0 69 6f 73 0a 20 20 6b 66 72 65 65 62 73 64 0a 20 20 6c 69 6e 75 78 20 28 6e 61 74 69 76 65 29 0a ios...kfreebsd...linux.(native).
37000 20 20 6c 76 32 0a 20 20 6d 61 63 6f 73 78 0a 20 20 6e 65 74 62 73 64 0a 20 20 6f 70 65 6e 62 73 ..lv2...macosx...netbsd...openbs
37020 64 0a 20 20 73 6f 6c 61 72 69 73 0a 20 20 77 69 6e 64 6f 77 73 0a 20 20 68 61 69 6b 75 0a 20 20 d...solaris...windows...haiku...
37040 6d 69 6e 69 78 0a 20 20 72 74 65 6d 73 0a 20 20 6e 61 63 6c 0a 20 20 63 6e 6b 0a 20 20 62 69 74 minix...rtems...nacl...cnk...bit
37060 72 69 67 0a 20 20 61 69 78 0a 20 20 63 75 64 61 0a 20 20 6e 76 63 6c 0a 20 20 61 6d 64 68 73 61 rig...aix...cuda...nvcl...amdhsa
37080 0a 20 20 70 73 34 0a 20 20 65 6c 66 69 61 6d 63 75 0a 20 20 74 76 6f 73 0a 20 20 77 61 74 63 68 ...ps4...elfiamcu...tvos...watch
370a0 6f 73 0a 20 20 6d 65 73 61 33 64 0a 20 20 63 6f 6e 74 69 6b 69 0a 20 20 7a 65 6e 0a 0a 45 6e 76 os...mesa3d...contiki...zen..Env
370c0 69 72 6f 6e 6d 65 6e 74 73 3a 0a 20 20 75 6e 6b 6e 6f 77 6e 0a 20 20 67 6e 75 20 28 6e 61 74 69 ironments:...unknown...gnu.(nati
370e0 76 65 29 0a 20 20 67 6e 75 61 62 69 36 34 0a 20 20 67 6e 75 65 61 62 69 0a 20 20 67 6e 75 65 61 ve)...gnuabi64...gnueabi...gnuea
37100 62 69 68 66 0a 20 20 67 6e 75 78 33 32 0a 20 20 63 6f 64 65 31 36 0a 20 20 65 61 62 69 0a 20 20 bihf...gnux32...code16...eabi...
37120 65 61 62 69 68 66 0a 20 20 61 6e 64 72 6f 69 64 0a 20 20 6d 75 73 6c 0a 20 20 6d 75 73 6c 65 61 eabihf...android...musl...muslea
37140 62 69 0a 20 20 6d 75 73 6c 65 61 62 69 68 66 0a 20 20 6d 73 76 63 0a 20 20 69 74 61 6e 69 75 6d bi...musleabihf...msvc...itanium
37160 0a 20 20 63 79 67 6e 75 73 0a 20 20 61 6d 64 6f 70 65 6e 63 6c 0a 20 20 63 6f 72 65 63 6c 72 0a ...cygnus...amdopencl...coreclr.
37180 20 20 6f 70 65 6e 63 6c 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a ..opencl</code></pre>.......<p>.
371a0 20 20 20 20 20 20 54 68 65 20 5a 69 67 20 53 74 61 6e 64 61 72 64 20 4c 69 62 72 61 72 79 20 28 ......The.Zig.Standard.Library.(
371c0 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 3c 2f 63 6f 64 65 3e 29 20 68 61 73 <code>@import("std")</code>).has
371e0 20 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2c 20 61 6e 64 20 .architecture,.environment,.and.
37200 6f 70 65 72 61 74 69 6e 67 20 73 79 74 73 65 6d 0a 20 20 20 20 20 20 61 62 73 74 72 61 63 74 69 operating.sytsem.......abstracti
37220 6f 6e 73 2c 20 61 6e 64 20 74 68 75 73 20 74 61 6b 65 73 20 61 64 64 69 74 69 6f 6e 61 6c 20 77 ons,.and.thus.takes.additional.w
37240 6f 72 6b 20 74 6f 20 73 75 70 70 6f 72 74 20 6d 6f 72 65 20 70 6c 61 74 66 6f 72 6d 73 2e 20 49 ork.to.support.more.platforms..I
37260 74 20 63 75 72 72 65 6e 74 6c 79 20 73 75 70 70 6f 72 74 73 0a 20 20 20 20 20 20 4c 69 6e 75 78 t.currently.supports.......Linux
37280 20 78 38 36 5f 36 34 2e 20 4e 6f 74 20 61 6c 6c 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 .x86_64..Not.all.standard.librar
372a0 79 20 63 6f 64 65 20 72 65 71 75 69 72 65 73 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d y.code.requires.operating.system
372c0 20 61 62 73 74 72 61 63 74 69 6f 6e 73 2c 20 68 6f 77 65 76 65 72 2c 0a 20 20 20 20 20 20 73 6f .abstractions,.however,.......so
372e0 20 74 68 69 6e 67 73 20 73 75 63 68 20 61 73 20 67 65 6e 65 72 69 63 20 64 61 74 61 20 73 74 72 .things.such.as.generic.data.str
37300 75 63 74 75 72 65 73 20 77 6f 72 6b 20 61 6e 20 61 6c 6c 20 61 62 6f 76 65 20 70 6c 61 74 66 6f uctures.work.an.all.above.platfo
37320 72 6d 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 rms........</p>..............<h1
37340 20 69 64 3d 22 53 74 79 6c 65 2d 47 75 69 64 65 22 3e 53 74 79 6c 65 20 47 75 69 64 65 3c 2f 68 .id="Style-Guide">Style.Guide</h
37360 31 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 54 68 65 73 65 20 63 6f 64 69 6e 67 20 63 6f 6e 76 65 1>........<p>.These.coding.conve
37380 6e 74 69 6f 6e 73 20 61 72 65 20 6e 6f 74 20 65 6e 66 6f 72 63 65 64 20 62 79 20 74 68 65 20 63 ntions.are.not.enforced.by.the.c
373a0 6f 6d 70 69 6c 65 72 2c 20 62 75 74 20 74 68 65 79 20 61 72 65 20 73 68 69 70 70 65 64 20 69 6e ompiler,.but.they.are.shipped.in
373c0 0a 74 68 69 73 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 .this.documentation.along.with.t
373e0 68 65 20 63 6f 6d 70 69 6c 65 72 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 70 72 6f 76 69 64 65 20 he.compiler.in.order.to.provide.
37400 61 20 70 6f 69 6e 74 20 6f 66 0a 72 65 66 65 72 65 6e 63 65 2c 20 73 68 6f 75 6c 64 20 61 6e 79 a.point.of.reference,.should.any
37420 6f 6e 65 20 77 69 73 68 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 61 6e 20 61 75 74 68 6f 72 69 74 one.wish.to.point.to.an.authorit
37440 79 20 6f 6e 20 61 67 72 65 65 64 20 75 70 6f 6e 20 5a 69 67 0a 63 6f 64 69 6e 67 20 73 74 79 6c y.on.agreed.upon.Zig.coding.styl
37460 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 57 68 69 74 e........</p>.......<h2.id="Whit
37480 65 73 70 61 63 65 22 3e 57 68 69 74 65 73 70 61 63 65 3c 2f 68 32 3e 0a 0a 20 20 20 20 20 20 3c espace">Whitespace</h2>........<
374a0 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 34 20 73 70 61 ul>.........<li>...........4.spa
374c0 63 65 20 69 6e 64 65 6e 74 61 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 ce.indentation.........</li>....
374e0 20 20 20 20 20 3c 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 4f 70 65 6e 20 62 72 61 63 65 73 20 .....<li>...........Open.braces.
37500 6f 6e 20 73 61 6d 65 20 6c 69 6e 65 2c 20 75 6e 6c 65 73 73 20 79 6f 75 20 6e 65 65 64 20 74 6f on.same.line,.unless.you.need.to
37520 20 77 72 61 70 2e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 .wrap..........</li>.........<li
37540 3e 49 66 20 61 20 6c 69 73 74 20 6f 66 20 74 68 69 6e 67 73 20 69 73 20 6c 6f 6e 67 65 72 20 74 >If.a.list.of.things.is.longer.t
37560 68 61 6e 20 32 2c 20 70 75 74 20 65 61 63 68 20 69 74 65 6d 20 6f 6e 20 69 74 73 20 6f 77 6e 20 han.2,.put.each.item.on.its.own.
37580 6c 69 6e 65 20 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 65 78 65 72 63 69 73 65 20 74 68 65 20 line.and...........exercise.the.
375a0 61 62 69 6c 74 79 20 74 6f 20 70 75 74 20 61 6e 20 65 78 74 72 61 20 63 6f 6d 6d 61 20 61 74 20 abilty.to.put.an.extra.comma.at.
375c0 74 68 65 20 65 6e 64 2e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c the.end..........</li>.........<
375e0 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 4c 69 6e 65 20 6c 65 6e 67 74 68 3a 20 61 69 6d 20 66 li>...........Line.length:.aim.f
37600 6f 72 20 31 30 30 3b 20 75 73 65 20 63 6f 6d 6d 6f 6e 20 73 65 6e 73 65 2e 0a 20 20 20 20 20 20 or.100;.use.common.sense........
37620 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 ..</li>.......</ul>.............
37640 20 3c 68 32 20 69 64 3d 22 4e 61 6d 65 73 22 3e 4e 61 6d 65 73 3c 2f 68 32 3e 0a 0a 20 20 20 20 .<h2.id="Names">Names</h2>......
37660 20 20 3c 70 3e 0a 20 20 20 20 20 20 52 6f 75 67 68 6c 79 20 73 70 65 61 6b 69 6e 67 3a 20 3c 63 ..<p>.......Roughly.speaking:.<c
37680 6f 64 65 3e 63 61 6d 65 6c 43 61 73 65 46 75 6e 63 74 69 6f 6e 4e 61 6d 65 3c 2f 63 6f 64 65 3e ode>camelCaseFunctionName</code>
376a0 2c 20 3c 63 6f 64 65 3e 54 69 74 6c 65 43 61 73 65 54 79 70 65 4e 61 6d 65 3c 2f 63 6f 64 65 3e ,.<code>TitleCaseTypeName</code>
376c0 2c 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 73 6e 61 6b 65 5f 63 61 73 65 5f 76 61 72 69 61 62 6c ,.......<code>snake_case_variabl
376e0 65 5f 6e 61 6d 65 3c 2f 63 6f 64 65 3e 2e 20 4d 6f 72 65 20 70 72 65 63 69 73 65 6c 79 3a 0a 20 e_name</code>..More.precisely:..
37700 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 .....</p>.......<ul>.........<li
37720 3e 0a 20 20 20 20 20 20 20 20 20 20 49 66 20 3c 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 69 73 >...........If.<code>x</code>.is
37740 20 61 20 3c 63 6f 64 65 3e 73 74 72 75 63 74 3c 2f 63 6f 64 65 3e 20 28 6f 72 20 61 6e 20 61 6c .a.<code>struct</code>.(or.an.al
37760 69 61 73 20 6f 66 20 61 20 3c 63 6f 64 65 3e 73 74 72 75 63 74 3c 2f 63 6f 64 65 3e 29 2c 0a 20 ias.of.a.<code>struct</code>),..
37780 20 20 20 20 20 20 20 20 20 74 68 65 6e 20 3c 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 73 68 6f .........then.<code>x</code>.sho
377a0 75 6c 64 20 62 65 20 3c 63 6f 64 65 3e 54 69 74 6c 65 43 61 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 uld.be.<code>TitleCase</code>...
377c0 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 0a 20 20 20 20 20 20 .......</li>.........<li>.......
377e0 20 20 20 20 49 66 20 3c 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 6f 74 68 65 72 77 69 73 65 20 ....If.<code>x</code>.otherwise.
37800 69 64 65 6e 74 69 66 69 65 73 20 61 20 74 79 70 65 2c 20 3c 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 identifies.a.type,.<code>x</code
37820 3e 20 73 68 6f 75 6c 64 20 68 61 76 65 20 3c 63 6f 64 65 3e 73 6e 61 6b 65 5f 63 61 73 65 3c 2f >.should.have.<code>snake_case</
37840 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 code>..........</li>.........<li
37860 3e 0a 20 20 20 20 20 20 20 20 20 20 49 66 20 3c 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 69 73 >...........If.<code>x</code>.is
37880 20 63 61 6c 6c 61 62 6c 65 2c 20 61 6e 64 20 3c 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 27 73 20 .callable,.and.<code>x</code>'s.
378a0 72 65 74 75 72 6e 20 74 79 70 65 20 69 73 20 3c 63 6f 64 65 3e 74 79 70 65 3c 2f 63 6f 64 65 3e return.type.is.<code>type</code>
378c0 2c 20 74 68 65 6e 20 3c 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 73 68 6f 75 6c 64 20 62 65 20 ,.then.<code>x</code>.should.be.
378e0 3c 63 6f 64 65 3e 54 69 74 6c 65 43 61 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 <code>TitleCase</code>..........
37900 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 49 66 20 </li>.........<li>...........If.
37920 3c 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 69 73 20 6f 74 68 65 72 77 69 73 65 20 63 61 6c 6c <code>x</code>.is.otherwise.call
37940 61 62 6c 65 2c 20 74 68 65 6e 20 3c 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 73 68 6f 75 6c 64 able,.then.<code>x</code>.should
37960 20 62 65 20 3c 63 6f 64 65 3e 63 61 6d 65 6c 43 61 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 .be.<code>camelCase</code>......
37980 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 ....</li>.........<li>..........
379a0 20 4f 74 68 65 72 77 69 73 65 2c 20 3c 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 73 68 6f 75 6c .Otherwise,.<code>x</code>.shoul
379c0 64 20 62 65 20 3c 63 6f 64 65 3e 73 6e 61 6b 65 5f 63 61 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 d.be.<code>snake_case</code>....
379e0 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 ......</li>.......</ul>.......<p
37a00 3e 0a 20 20 20 20 20 20 41 63 72 6f 6e 79 6d 73 2c 20 69 6e 69 74 69 61 6c 69 73 6d 73 2c 20 70 >.......Acronyms,.initialisms,.p
37a20 72 6f 70 65 72 20 6e 6f 75 6e 73 2c 20 6f 72 20 61 6e 79 20 6f 74 68 65 72 20 77 6f 72 64 20 74 roper.nouns,.or.any.other.word.t
37a40 68 61 74 20 68 61 73 20 63 61 70 69 74 61 6c 69 7a 61 74 69 6f 6e 0a 20 20 20 20 20 20 72 75 6c hat.has.capitalization.......rul
37a60 65 73 20 69 6e 20 77 72 69 74 74 65 6e 20 45 6e 67 6c 69 73 68 20 61 72 65 20 73 75 62 6a 65 63 es.in.written.English.are.subjec
37a80 74 20 74 6f 20 6e 61 6d 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 73 20 6a 75 73 74 20 6c 69 6b t.to.naming.conventions.just.lik
37aa0 65 20 61 6e 79 20 6f 74 68 65 72 0a 20 20 20 20 20 20 77 6f 72 64 2e 20 45 76 65 6e 20 61 63 72 e.any.other.......word..Even.acr
37ac0 6f 6e 79 6d 73 20 74 68 61 74 20 61 72 65 20 6f 6e 6c 79 20 32 20 6c 65 74 74 65 72 73 20 6c 6f onyms.that.are.only.2.letters.lo
37ae0 6e 67 20 61 72 65 20 73 75 62 6a 65 63 74 20 74 6f 20 74 68 65 73 65 0a 20 20 20 20 20 20 63 6f ng.are.subject.to.these.......co
37b00 6e 76 65 6e 74 69 6f 6e 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a nventions........</p>.......<p>.
37b20 20 20 20 20 20 20 54 68 65 73 65 20 61 72 65 20 67 65 6e 65 72 61 6c 20 72 75 6c 65 73 20 6f 66 ......These.are.general.rules.of
37b40 20 74 68 75 6d 62 3b 20 69 66 20 69 74 20 6d 61 6b 65 73 20 73 65 6e 73 65 20 74 6f 20 64 6f 20 .thumb;.if.it.makes.sense.to.do.
37b60 73 6f 6d 65 74 68 69 6e 67 20 64 69 66 66 65 72 65 6e 74 2c 0a 20 20 20 20 20 20 64 6f 20 77 68 something.different,.......do.wh
37b80 61 74 20 6d 61 6b 65 73 20 73 65 6e 73 65 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 at.makes.sense..For.example,.if.
37ba0 74 68 65 72 65 20 69 73 20 61 6e 20 65 73 74 61 62 6c 69 73 68 65 64 20 63 6f 6e 76 65 6e 74 69 there.is.an.established.conventi
37bc0 6f 6e 20 73 75 63 68 20 61 73 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 45 4e 4f 45 4e 54 3c 2f 63 on.such.as.......<code>ENOENT</c
37be0 6f 64 65 3e 2c 20 66 6f 6c 6c 6f 77 20 74 68 65 20 65 73 74 61 62 6c 69 73 68 65 64 20 63 6f 6e ode>,.follow.the.established.con
37c00 76 65 6e 74 69 6f 6e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 vention........</p>.............
37c20 20 3c 68 32 20 69 64 3d 22 45 78 61 6d 70 6c 65 73 22 3e 45 78 61 6d 70 6c 65 73 3c 2f 68 32 3e .<h2.id="Examples">Examples</h2>
37c40 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 ........<pre><code.class="zig">c
37c60 6f 6e 73 74 20 6e 61 6d 65 73 70 61 63 65 5f 6e 61 6d 65 20 3d 20 40 69 6d 70 6f 72 74 28 26 71 onst.namespace_name.=.@import(&q
37c80 75 6f 74 3b 64 69 72 5f 6e 61 6d 65 2f 66 69 6c 65 5f 6e 61 6d 65 2e 7a 69 67 26 71 75 6f 74 3b uot;dir_name/file_name.zig&quot;
37ca0 29 3b 0a 76 61 72 20 67 6c 6f 62 61 6c 5f 76 61 72 3a 20 69 33 32 20 3d 20 75 6e 64 65 66 69 6e );.var.global_var:.i32.=.undefin
37cc0 65 64 3b 0a 63 6f 6e 73 74 20 63 6f 6e 73 74 5f 6e 61 6d 65 20 3d 20 34 32 3b 0a 63 6f 6e 73 74 ed;.const.const_name.=.42;.const
37ce0 20 70 72 69 6d 69 74 69 76 65 5f 74 79 70 65 5f 61 6c 69 61 73 20 3d 20 66 33 32 3b 0a 63 6f 6e .primitive_type_alias.=.f32;.con
37d00 73 74 20 73 74 72 69 6e 67 5f 61 6c 69 61 73 20 3d 20 5b 5d 75 38 3b 0a 0a 63 6f 6e 73 74 20 53 st.string_alias.=.[]u8;..const.S
37d20 74 72 75 63 74 4e 61 6d 65 20 3d 20 73 74 72 75 63 74 20 7b 7d 3b 0a 63 6f 6e 73 74 20 53 74 72 tructName.=.struct.{};.const.Str
37d40 75 63 74 41 6c 69 61 73 20 3d 20 53 74 72 75 63 74 4e 61 6d 65 3b 0a 0a 66 6e 20 66 75 6e 63 74 uctAlias.=.StructName;..fn.funct
37d60 69 6f 6e 4e 61 6d 65 28 70 61 72 61 6d 5f 6e 61 6d 65 3a 20 54 79 70 65 4e 61 6d 65 29 20 76 6f ionName(param_name:.TypeName).vo
37d80 69 64 20 7b 0a 20 20 20 20 76 61 72 20 66 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 20 3d 20 66 id.{.....var.functionPointer.=.f
37da0 75 6e 63 74 69 6f 6e 4e 61 6d 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 unctionName;.....functionPointer
37dc0 28 29 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 20 3d 20 6f 74 68 65 72 46 ();.....functionPointer.=.otherF
37de0 75 6e 63 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 29 3b 0a unction;.....functionPointer();.
37e00 7d 0a 63 6f 6e 73 74 20 66 75 6e 63 74 69 6f 6e 41 6c 69 61 73 20 3d 20 66 75 6e 63 74 69 6f 6e }.const.functionAlias.=.function
37e20 4e 61 6d 65 3b 0a 0a 66 6e 20 4c 69 73 74 54 65 6d 70 6c 61 74 65 46 75 6e 63 74 69 6f 6e 28 63 Name;..fn.ListTemplateFunction(c
37e40 6f 6d 70 74 69 6d 65 20 43 68 69 6c 64 54 79 70 65 3a 20 74 79 70 65 2c 20 63 6f 6d 70 74 69 6d omptime.ChildType:.type,.comptim
37e60 65 20 66 69 78 65 64 5f 73 69 7a 65 3a 20 75 73 69 7a 65 29 20 74 79 70 65 20 7b 0a 20 20 20 20 e.fixed_size:.usize).type.{.....
37e80 72 65 74 75 72 6e 20 4c 69 73 74 28 43 68 69 6c 64 54 79 70 65 2c 20 66 69 78 65 64 5f 73 69 7a return.List(ChildType,.fixed_siz
37ea0 65 29 3b 0a 7d 0a 0a 66 6e 20 53 68 6f 72 74 4c 69 73 74 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 e);.}..fn.ShortList(comptime.T:.
37ec0 74 79 70 65 2c 20 63 6f 6d 70 74 69 6d 65 20 6e 3a 20 75 73 69 7a 65 29 20 74 79 70 65 20 7b 0a type,.comptime.n:.usize).type.{.
37ee0 20 20 20 20 72 65 74 75 72 6e 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 20 20 20 20 66 69 65 6c ....return.struct.{.........fiel
37f00 64 5f 6e 61 6d 65 3a 20 5b 6e 5d 54 2c 0a 20 20 20 20 20 20 20 20 66 6e 20 6d 65 74 68 6f 64 4e d_name:.[n]T,.........fn.methodN
37f20 61 6d 65 28 29 20 76 6f 69 64 20 7b 7d 0a 20 20 20 20 7d 3b 0a 7d 0a 0a 2f 2f 20 54 68 65 20 77 ame().void.{}.....};.}..//.The.w
37f40 6f 72 64 20 58 4d 4c 20 6c 6f 73 65 73 20 69 74 73 20 63 61 73 69 6e 67 20 77 68 65 6e 20 75 73 ord.XML.loses.its.casing.when.us
37f60 65 64 20 69 6e 20 5a 69 67 20 69 64 65 6e 74 69 66 69 65 72 73 2e 0a 63 6f 6e 73 74 20 78 6d 6c ed.in.Zig.identifiers..const.xml
37f80 5f 64 6f 63 75 6d 65 6e 74 20 3d 0a 20 20 20 20 5c 5c 26 6c 74 3b 3f 78 6d 6c 20 76 65 72 73 69 _document.=.....\\&lt;?xml.versi
37fa0 6f 6e 3d 26 71 75 6f 74 3b 31 2e 30 26 71 75 6f 74 3b 20 65 6e 63 6f 64 69 6e 67 3d 26 71 75 6f on=&quot;1.0&quot;.encoding=&quo
37fc0 74 3b 55 54 46 2d 38 26 71 75 6f 74 3b 3f 26 67 74 3b 0a 20 20 20 20 5c 5c 26 6c 74 3b 64 6f 63 t;UTF-8&quot;?&gt;.....\\&lt;doc
37fe0 75 6d 65 6e 74 26 67 74 3b 0a 20 20 20 20 5c 5c 26 6c 74 3b 2f 64 6f 63 75 6d 65 6e 74 26 67 74 ument&gt;.....\\&lt;/document&gt
38000 3b 0a 3b 0a 63 6f 6e 73 74 20 58 6d 6c 50 61 72 73 65 72 20 3d 20 73 74 72 75 63 74 20 7b 7d 3b ;.;.const.XmlParser.=.struct.{};
38020 0a 0a 2f 2f 20 54 68 65 20 69 6e 69 74 69 61 6c 73 20 42 45 20 28 42 69 67 20 45 6e 64 69 61 6e ..//.The.initials.BE.(Big.Endian
38040 29 20 61 72 65 20 6a 75 73 74 20 61 6e 6f 74 68 65 72 20 77 6f 72 64 20 69 6e 20 5a 69 67 20 69 ).are.just.another.word.in.Zig.i
38060 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65 73 2e 0a 66 6e 20 72 65 61 64 55 33 32 42 65 28 29 20 dentifier.names..fn.readU32Be().
38080 75 33 32 20 7b 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 u32.{}</code></pre>.......<p>...
380a0 20 20 20 20 53 65 65 20 74 68 65 20 5a 69 67 20 53 74 61 6e 64 61 72 64 20 4c 69 62 72 61 72 79 ....See.the.Zig.Standard.Library
380c0 20 66 6f 72 20 6d 6f 72 65 20 65 78 61 6d 70 6c 65 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 .for.more.examples........</p>..
380e0 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 53 6f 75 72 63 ...................<h1.id="Sourc
38100 65 2d 45 6e 63 6f 64 69 6e 67 22 3e 53 6f 75 72 63 65 20 45 6e 63 6f 64 69 6e 67 3c 2f 68 31 3e e-Encoding">Source.Encoding</h1>
38120 0a 0a 20 20 20 20 20 20 3c 70 3e 5a 69 67 20 73 6f 75 72 63 65 20 63 6f 64 65 20 69 73 20 65 6e ........<p>Zig.source.code.is.en
38140 63 6f 64 65 64 20 69 6e 20 55 54 46 2d 38 2e 20 41 6e 20 69 6e 76 61 6c 69 64 20 55 54 46 2d 38 coded.in.UTF-8..An.invalid.UTF-8
38160 20 62 79 74 65 20 73 65 71 75 65 6e 63 65 20 72 65 73 75 6c 74 73 20 69 6e 20 61 20 63 6f 6d 70 .byte.sequence.results.in.a.comp
38180 69 6c 65 20 65 72 72 6f 72 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 68 72 6f 75 67 68 6f ile.error.</p>.......<p>Througho
381a0 75 74 20 61 6c 6c 20 7a 69 67 20 73 6f 75 72 63 65 20 63 6f 64 65 20 28 69 6e 63 6c 75 64 69 6e ut.all.zig.source.code.(includin
381c0 67 20 69 6e 20 63 6f 6d 6d 65 6e 74 73 29 2c 20 73 6f 6d 65 20 63 6f 64 65 70 6f 69 6e 74 73 20 g.in.comments),.some.codepoints.
381e0 61 72 65 20 6e 65 76 65 72 20 61 6c 6c 6f 77 65 64 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c are.never.allowed:</p>.......<ul
38200 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 41 73 63 69 69 20 63 6f 6e 74 72 6f 6c 20 63 68 61 72 >.........<li>Ascii.control.char
38220 61 63 74 65 72 73 2c 20 65 78 63 65 70 74 20 66 6f 72 20 55 2b 30 30 30 61 20 28 4c 46 29 3a 20 acters,.except.for.U+000a.(LF):.
38240 55 2b 30 30 30 30 20 2d 20 55 2b 30 30 30 39 2c 20 55 2b 30 30 30 62 20 2d 20 55 2b 30 30 30 31 U+0000.-.U+0009,.U+000b.-.U+0001
38260 66 2c 20 55 2b 30 30 37 66 2e 20 28 4e 6f 74 65 20 74 68 61 74 20 57 69 6e 64 6f 77 73 20 6c 69 f,.U+007f..(Note.that.Windows.li
38280 6e 65 20 65 6e 64 69 6e 67 73 20 28 43 52 4c 46 29 20 61 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 ne.endings.(CRLF).are.not.allowe
382a0 64 2c 20 61 6e 64 20 68 61 72 64 20 74 61 62 73 20 61 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 d,.and.hard.tabs.are.not.allowed
382c0 2e 29 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 4e 6f 6e 2d 41 73 63 69 69 20 55 6e .)</li>.........<li>Non-Ascii.Un
382e0 69 63 6f 64 65 20 6c 69 6e 65 20 65 6e 64 69 6e 67 73 3a 20 55 2b 30 30 38 35 20 28 4e 45 4c 29 icode.line.endings:.U+0085.(NEL)
38300 2c 20 55 2b 32 30 32 38 20 28 4c 53 29 2c 20 55 2b 32 30 32 39 20 28 50 53 29 2e 3c 2f 6c 69 3e ,.U+2028.(LS),.U+2029.(PS).</li>
38320 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 54 68 65 20 63 6f 64 65 70 6f .......</ul>.......<p>The.codepo
38340 69 6e 74 20 55 2b 30 30 30 61 20 28 4c 46 29 20 28 77 68 69 63 68 20 69 73 20 65 6e 63 6f 64 65 int.U+000a.(LF).(which.is.encode
38360 64 20 61 73 20 74 68 65 20 73 69 6e 67 6c 65 2d 62 79 74 65 20 76 61 6c 75 65 20 30 78 30 61 29 d.as.the.single-byte.value.0x0a)
38380 20 69 73 20 74 68 65 20 6c 69 6e 65 20 74 65 72 6d 69 6e 61 74 6f 72 20 63 68 61 72 61 63 74 65 .is.the.line.terminator.characte
383a0 72 2e 20 54 68 69 73 20 63 68 61 72 61 63 74 65 72 20 61 6c 77 61 79 73 20 74 65 72 6d 69 6e 61 r..This.character.always.termina
383c0 74 65 73 20 61 20 6c 69 6e 65 20 6f 66 20 7a 69 67 20 73 6f 75 72 63 65 20 63 6f 64 65 20 28 65 tes.a.line.of.zig.source.code.(e
383e0 78 63 65 70 74 20 70 6f 73 73 62 6c 79 20 74 68 65 20 6c 61 73 74 20 6c 69 6e 65 20 6f 66 20 74 xcept.possbly.the.last.line.of.t
38400 68 65 20 66 69 6c 65 29 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 46 6f 72 20 73 6f 6d 65 20 he.file).</p>.......<p>For.some.
38420 64 69 73 63 75 73 73 69 6f 6e 20 6f 6e 20 74 68 65 20 72 61 74 69 6f 6e 61 6c 65 20 62 65 68 69 discussion.on.the.rationale.behi
38440 6e 64 20 74 68 65 73 65 20 64 65 73 69 67 6e 20 64 65 63 69 73 69 6f 6e 73 2c 20 73 65 65 20 3c nd.these.design.decisions,.see.<
38460 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 7a 69 67 2d 6c a.href="https://github.com/zig-l
38480 61 6e 67 2f 7a 69 67 2f 69 73 73 75 65 73 2f 36 36 33 22 3e 69 73 73 75 65 20 23 36 36 33 3c 2f ang/zig/issues/663">issue.#663</
384a0 61 3e 3c 2f 70 3e 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 47 72 61 6d a></p>..............<h1.id="Gram
384c0 6d 61 72 22 3e 47 72 61 6d 6d 61 72 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 mar">Grammar</h1>........<pre><c
384e0 6f 64 65 20 63 6c 61 73 73 3d 22 6e 6f 68 69 67 68 6c 69 67 68 74 22 3e 52 6f 6f 74 20 3d 20 6d ode.class="nohighlight">Root.=.m
38500 61 6e 79 28 54 6f 70 4c 65 76 65 6c 49 74 65 6d 29 20 45 4f 46 0a 0a 54 6f 70 4c 65 76 65 6c 49 any(TopLevelItem).EOF..TopLevelI
38520 74 65 6d 20 3d 20 43 6f 6d 70 54 69 6d 65 45 78 70 72 65 73 73 69 6f 6e 28 42 6c 6f 63 6b 29 20 tem.=.CompTimeExpression(Block).
38540 7c 20 54 6f 70 4c 65 76 65 6c 44 65 63 6c 20 7c 20 54 65 73 74 44 65 63 6c 0a 0a 54 65 73 74 44 |.TopLevelDecl.|.TestDecl..TestD
38560 65 63 6c 20 3d 20 22 74 65 73 74 22 20 53 74 72 69 6e 67 20 42 6c 6f 63 6b 0a 0a 54 6f 70 4c 65 ecl.=."test".String.Block..TopLe
38580 76 65 6c 44 65 63 6c 20 3d 20 6f 70 74 69 6f 6e 28 22 70 75 62 22 29 20 28 46 6e 44 65 66 20 7c velDecl.=.option("pub").(FnDef.|
385a0 20 45 78 74 65 72 6e 44 65 63 6c 20 7c 20 47 6c 6f 62 61 6c 56 61 72 44 65 63 6c 20 7c 20 55 73 .ExternDecl.|.GlobalVarDecl.|.Us
385c0 65 44 65 63 6c 29 0a 0a 47 6c 6f 62 61 6c 56 61 72 44 65 63 6c 20 3d 20 6f 70 74 69 6f 6e 28 22 eDecl)..GlobalVarDecl.=.option("
385e0 65 78 70 6f 72 74 22 29 20 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 22 3b 22 export").VariableDeclaration.";"
38600 0a 0a 4c 6f 63 61 6c 56 61 72 44 65 63 6c 20 3d 20 6f 70 74 69 6f 6e 28 22 63 6f 6d 70 74 69 6d ..LocalVarDecl.=.option("comptim
38620 65 22 29 20 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 0a 0a 56 61 72 69 61 62 6c e").VariableDeclaration..Variabl
38640 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 28 22 76 61 72 22 20 7c 20 22 63 6f 6e 73 74 22 29 eDeclaration.=.("var".|."const")
38660 20 53 79 6d 62 6f 6c 20 6f 70 74 69 6f 6e 28 22 3a 22 20 54 79 70 65 45 78 70 72 29 20 6f 70 74 .Symbol.option(":".TypeExpr).opt
38680 69 6f 6e 28 22 61 6c 69 67 6e 22 20 22 28 22 20 45 78 70 72 65 73 73 69 6f 6e 20 22 29 22 29 20 ion("align"."(".Expression.")").
386a0 6f 70 74 69 6f 6e 28 22 73 65 63 74 69 6f 6e 22 20 22 28 22 20 45 78 70 72 65 73 73 69 6f 6e 20 option("section"."(".Expression.
386c0 22 29 22 29 20 22 3d 22 20 45 78 70 72 65 73 73 69 6f 6e 0a 0a 43 6f 6e 74 61 69 6e 65 72 4d 65 ")")."=".Expression..ContainerMe
386e0 6d 62 65 72 20 3d 20 28 43 6f 6e 74 61 69 6e 65 72 46 69 65 6c 64 20 7c 20 46 6e 44 65 66 20 7c mber.=.(ContainerField.|.FnDef.|
38700 20 47 6c 6f 62 61 6c 56 61 72 44 65 63 6c 29 0a 0a 43 6f 6e 74 61 69 6e 65 72 46 69 65 6c 64 20 .GlobalVarDecl)..ContainerField.
38720 3d 20 53 79 6d 62 6f 6c 20 6f 70 74 69 6f 6e 28 22 3a 22 20 50 72 65 66 69 78 4f 70 45 78 70 72 =.Symbol.option(":".PrefixOpExpr
38740 65 73 73 69 6f 6e 20 6f 70 74 69 6f 6e 28 22 3d 22 20 50 72 65 66 69 78 4f 70 45 78 70 72 65 73 ession.option("=".PrefixOpExpres
38760 73 69 6f 6e 20 22 2c 22 0a 0a 55 73 65 44 65 63 6c 20 3d 20 22 75 73 65 22 20 45 78 70 72 65 73 sion.","..UseDecl.=."use".Expres
38780 73 69 6f 6e 20 22 3b 22 0a 0a 45 78 74 65 72 6e 44 65 63 6c 20 3d 20 22 65 78 74 65 72 6e 22 20 sion.";"..ExternDecl.=."extern".
387a0 6f 70 74 69 6f 6e 28 53 74 72 69 6e 67 29 20 28 46 6e 50 72 6f 74 6f 20 7c 20 56 61 72 69 61 62 option(String).(FnProto.|.Variab
387c0 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 29 20 22 3b 22 0a 0a 46 6e 50 72 6f 74 6f 20 3d 20 6f 70 leDeclaration).";"..FnProto.=.op
387e0 74 69 6f 6e 28 22 6e 61 6b 65 64 63 63 22 20 7c 20 22 73 74 64 63 61 6c 6c 63 63 22 20 7c 20 22 tion("nakedcc".|."stdcallcc".|."
38800 65 78 74 65 72 6e 22 20 7c 20 28 22 61 73 79 6e 63 22 20 6f 70 74 69 6f 6e 28 22 28 22 20 45 78 extern".|.("async".option("(".Ex
38820 70 72 65 73 73 69 6f 6e 20 22 29 22 29 29 29 20 22 66 6e 22 20 6f 70 74 69 6f 6e 28 53 79 6d 62 pression.")")))."fn".option(Symb
38840 6f 6c 29 20 50 61 72 61 6d 44 65 63 6c 4c 69 73 74 20 6f 70 74 69 6f 6e 28 22 61 6c 69 67 6e 22 ol).ParamDeclList.option("align"
38860 20 22 28 22 20 45 78 70 72 65 73 73 69 6f 6e 20 22 29 22 29 20 6f 70 74 69 6f 6e 28 22 73 65 63 ."(".Expression.")").option("sec
38880 74 69 6f 6e 22 20 22 28 22 20 45 78 70 72 65 73 73 69 6f 6e 20 22 29 22 29 20 6f 70 74 69 6f 6e tion"."(".Expression.")").option
388a0 28 22 21 22 29 20 28 54 79 70 65 45 78 70 72 20 7c 20 22 76 61 72 22 29 0a 0a 46 6e 44 65 66 20 ("!").(TypeExpr.|."var")..FnDef.
388c0 3d 20 6f 70 74 69 6f 6e 28 22 69 6e 6c 69 6e 65 22 20 7c 20 22 65 78 70 6f 72 74 22 29 20 46 6e =.option("inline".|."export").Fn
388e0 50 72 6f 74 6f 20 42 6c 6f 63 6b 0a 0a 50 61 72 61 6d 44 65 63 6c 4c 69 73 74 20 3d 20 22 28 22 Proto.Block..ParamDeclList.=."("
38900 20 6c 69 73 74 28 50 61 72 61 6d 44 65 63 6c 2c 20 22 2c 22 29 20 22 29 22 0a 0a 50 61 72 61 6d .list(ParamDecl,.",").")"..Param
38920 44 65 63 6c 20 3d 20 6f 70 74 69 6f 6e 28 22 6e 6f 61 6c 69 61 73 22 20 7c 20 22 63 6f 6d 70 74 Decl.=.option("noalias".|."compt
38940 69 6d 65 22 29 20 6f 70 74 69 6f 6e 28 53 79 6d 62 6f 6c 20 22 3a 22 29 20 28 54 79 70 65 45 78 ime").option(Symbol.":").(TypeEx
38960 70 72 20 7c 20 22 76 61 72 22 20 7c 20 22 2e 2e 2e 22 29 0a 0a 42 6c 6f 63 6b 20 3d 20 6f 70 74 pr.|."var".|."...")..Block.=.opt
38980 69 6f 6e 28 53 79 6d 62 6f 6c 20 22 3a 22 29 20 22 7b 22 20 6d 61 6e 79 28 53 74 61 74 65 6d 65 ion(Symbol.":")."{".many(Stateme
389a0 6e 74 29 20 22 7d 22 0a 0a 53 74 61 74 65 6d 65 6e 74 20 3d 20 4c 6f 63 61 6c 56 61 72 44 65 63 nt)."}"..Statement.=.LocalVarDec
389c0 6c 20 22 3b 22 20 7c 20 44 65 66 65 72 28 42 6c 6f 63 6b 29 20 7c 20 44 65 66 65 72 28 45 78 70 l.";".|.Defer(Block).|.Defer(Exp
389e0 72 65 73 73 69 6f 6e 29 20 22 3b 22 20 7c 20 42 6c 6f 63 6b 45 78 70 72 65 73 73 69 6f 6e 28 42 ression).";".|.BlockExpression(B
38a00 6c 6f 63 6b 29 20 7c 20 45 78 70 72 65 73 73 69 6f 6e 20 22 3b 22 20 7c 20 22 3b 22 0a 0a 54 79 lock).|.Expression.";".|.";"..Ty
38a20 70 65 45 78 70 72 20 3d 20 45 72 72 6f 72 53 65 74 45 78 70 72 0a 0a 45 72 72 6f 72 53 65 74 45 peExpr.=.ErrorSetExpr..ErrorSetE
38a40 78 70 72 20 3d 20 28 50 72 65 66 69 78 4f 70 45 78 70 72 65 73 73 69 6f 6e 20 22 21 22 20 50 72 xpr.=.(PrefixOpExpression."!".Pr
38a60 65 66 69 78 4f 70 45 78 70 72 65 73 73 69 6f 6e 29 20 7c 20 50 72 65 66 69 78 4f 70 45 78 70 72 efixOpExpression).|.PrefixOpExpr
38a80 65 73 73 69 6f 6e 0a 0a 42 6c 6f 63 6b 4f 72 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 42 6c 6f 63 ession..BlockOrExpression.=.Bloc
38aa0 6b 20 7c 20 45 78 70 72 65 73 73 69 6f 6e 0a 0a 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 54 72 79 k.|.Expression..Expression.=.Try
38ac0 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 52 65 74 75 72 6e 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 Expression.|.ReturnExpression.|.
38ae0 42 72 65 61 6b 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 41 73 73 69 67 6e 6d 65 6e 74 45 78 70 72 BreakExpression.|.AssignmentExpr
38b00 65 73 73 69 6f 6e 20 7c 20 43 61 6e 63 65 6c 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 52 65 73 75 ession.|.CancelExpression.|.Resu
38b20 6d 65 45 78 70 72 65 73 73 69 6f 6e 0a 0a 41 73 6d 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 22 61 meExpression..AsmExpression.=."a
38b40 73 6d 22 20 6f 70 74 69 6f 6e 28 22 76 6f 6c 61 74 69 6c 65 22 29 20 22 28 22 20 53 74 72 69 6e sm".option("volatile")."(".Strin
38b60 67 20 6f 70 74 69 6f 6e 28 41 73 6d 4f 75 74 70 75 74 29 20 22 29 22 0a 0a 41 73 6d 4f 75 74 70 g.option(AsmOutput).")"..AsmOutp
38b80 75 74 20 3d 20 22 3a 22 20 6c 69 73 74 28 41 73 6d 4f 75 74 70 75 74 49 74 65 6d 2c 20 22 2c 22 ut.=.":".list(AsmOutputItem,.","
38ba0 29 20 6f 70 74 69 6f 6e 28 41 73 6d 49 6e 70 75 74 29 0a 0a 41 73 6d 49 6e 70 75 74 20 3d 20 22 ).option(AsmInput)..AsmInput.=."
38bc0 3a 22 20 6c 69 73 74 28 41 73 6d 49 6e 70 75 74 49 74 65 6d 2c 20 22 2c 22 29 20 6f 70 74 69 6f :".list(AsmInputItem,.",").optio
38be0 6e 28 41 73 6d 43 6c 6f 62 62 65 72 73 29 0a 0a 41 73 6d 4f 75 74 70 75 74 49 74 65 6d 20 3d 20 n(AsmClobbers)..AsmOutputItem.=.
38c00 22 5b 22 20 53 79 6d 62 6f 6c 20 22 5d 22 20 53 74 72 69 6e 67 20 22 28 22 20 28 53 79 6d 62 6f "[".Symbol."]".String."(".(Symbo
38c20 6c 20 7c 20 22 2d 26 67 74 3b 22 20 54 79 70 65 45 78 70 72 29 20 22 29 22 0a 0a 41 73 6d 49 6e l.|."-&gt;".TypeExpr).")"..AsmIn
38c40 70 75 74 49 74 65 6d 20 3d 20 22 5b 22 20 53 79 6d 62 6f 6c 20 22 5d 22 20 53 74 72 69 6e 67 20 putItem.=."[".Symbol."]".String.
38c60 22 28 22 20 45 78 70 72 65 73 73 69 6f 6e 20 22 29 22 0a 0a 41 73 6d 43 6c 6f 62 62 65 72 73 3d "(".Expression.")"..AsmClobbers=
38c80 20 22 3a 22 20 6c 69 73 74 28 53 74 72 69 6e 67 2c 20 22 2c 22 29 0a 0a 55 6e 77 72 61 70 45 78 .":".list(String,.",")..UnwrapEx
38ca0 70 72 65 73 73 69 6f 6e 20 3d 20 42 6f 6f 6c 4f 72 45 78 70 72 65 73 73 69 6f 6e 20 28 55 6e 77 pression.=.BoolOrExpression.(Unw
38cc0 72 61 70 4e 75 6c 6c 61 62 6c 65 20 7c 20 55 6e 77 72 61 70 45 72 72 6f 72 29 20 7c 20 42 6f 6f rapNullable.|.UnwrapError).|.Boo
38ce0 6c 4f 72 45 78 70 72 65 73 73 69 6f 6e 0a 0a 55 6e 77 72 61 70 4e 75 6c 6c 61 62 6c 65 20 3d 20 lOrExpression..UnwrapNullable.=.
38d00 22 3f 3f 22 20 45 78 70 72 65 73 73 69 6f 6e 0a 0a 55 6e 77 72 61 70 45 72 72 6f 72 20 3d 20 22 "??".Expression..UnwrapError.=."
38d20 63 61 74 63 68 22 20 6f 70 74 69 6f 6e 28 22 7c 22 20 53 79 6d 62 6f 6c 20 22 7c 22 29 20 45 78 catch".option("|".Symbol."|").Ex
38d40 70 72 65 73 73 69 6f 6e 0a 0a 41 73 73 69 67 6e 6d 65 6e 74 45 78 70 72 65 73 73 69 6f 6e 20 3d pression..AssignmentExpression.=
38d60 20 55 6e 77 72 61 70 45 78 70 72 65 73 73 69 6f 6e 20 41 73 73 69 67 6e 6d 65 6e 74 4f 70 65 72 .UnwrapExpression.AssignmentOper
38d80 61 74 6f 72 20 55 6e 77 72 61 70 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 55 6e 77 72 61 70 45 78 ator.UnwrapExpression.|.UnwrapEx
38da0 70 72 65 73 73 69 6f 6e 0a 0a 41 73 73 69 67 6e 6d 65 6e 74 4f 70 65 72 61 74 6f 72 20 3d 20 22 pression..AssignmentOperator.=."
38dc0 3d 22 20 7c 20 22 2a 3d 22 20 7c 20 22 2f 3d 22 20 7c 20 22 25 3d 22 20 7c 20 22 2b 3d 22 20 7c =".|."*=".|."/=".|."%=".|."+=".|
38de0 20 22 2d 3d 22 20 7c 20 22 26 6c 74 3b 26 6c 74 3b 3d 22 20 7c 20 22 26 67 74 3b 26 67 74 3b 3d ."-=".|."&lt;&lt;=".|."&gt;&gt;=
38e00 22 20 7c 20 22 26 61 6d 70 3b 3d 22 20 7c 20 22 5e 3d 22 20 7c 20 22 7c 3d 22 20 7c 20 22 2a 25 ".|."&amp;=".|."^=".|."|=".|."*%
38e20 3d 22 20 7c 20 22 2b 25 3d 22 20 7c 20 22 2d 25 3d 22 0a 0a 42 6c 6f 63 6b 45 78 70 72 65 73 73 =".|."+%=".|."-%="..BlockExpress
38e40 69 6f 6e 28 62 6f 64 79 29 20 3d 20 42 6c 6f 63 6b 20 7c 20 49 66 45 78 70 72 65 73 73 69 6f 6e ion(body).=.Block.|.IfExpression
38e60 28 62 6f 64 79 29 20 7c 20 49 66 45 72 72 6f 72 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 (body).|.IfErrorExpression(body)
38e80 20 7c 20 54 65 73 74 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 20 7c 20 57 68 69 6c 65 45 .|.TestExpression(body).|.WhileE
38ea0 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 20 7c 20 46 6f 72 45 78 70 72 65 73 73 69 6f 6e 28 xpression(body).|.ForExpression(
38ec0 62 6f 64 79 29 20 7c 20 53 77 69 74 63 68 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 43 6f 6d 70 54 body).|.SwitchExpression.|.CompT
38ee0 69 6d 65 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 20 7c 20 53 75 73 70 65 6e 64 45 78 70 imeExpression(body).|.SuspendExp
38f00 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 0a 0a 43 6f 6d 70 54 69 6d 65 45 78 70 72 65 73 73 69 6f ression(body)..CompTimeExpressio
38f20 6e 28 62 6f 64 79 29 20 3d 20 22 63 6f 6d 70 74 69 6d 65 22 20 62 6f 64 79 0a 0a 53 77 69 74 63 n(body).=."comptime".body..Switc
38f40 68 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 22 73 77 69 74 63 68 22 20 22 28 22 20 45 78 70 72 65 hExpression.=."switch"."(".Expre
38f60 73 73 69 6f 6e 20 22 29 22 20 22 7b 22 20 6d 61 6e 79 28 53 77 69 74 63 68 50 72 6f 6e 67 29 20 ssion.")"."{".many(SwitchProng).
38f80 22 7d 22 0a 0a 53 77 69 74 63 68 50 72 6f 6e 67 20 3d 20 28 6c 69 73 74 28 53 77 69 74 63 68 49 "}"..SwitchProng.=.(list(SwitchI
38fa0 74 65 6d 2c 20 22 2c 22 29 20 7c 20 22 65 6c 73 65 22 29 20 22 3d 26 67 74 3b 22 20 6f 70 74 69 tem,.",").|."else")."=&gt;".opti
38fc0 6f 6e 28 22 7c 22 20 6f 70 74 69 6f 6e 28 22 2a 22 29 20 53 79 6d 62 6f 6c 20 22 7c 22 29 20 45 on("|".option("*").Symbol."|").E
38fe0 78 70 72 65 73 73 69 6f 6e 20 22 2c 22 0a 0a 53 77 69 74 63 68 49 74 65 6d 20 3d 20 45 78 70 72 xpression.","..SwitchItem.=.Expr
39000 65 73 73 69 6f 6e 20 7c 20 28 45 78 70 72 65 73 73 69 6f 6e 20 22 2e 2e 2e 22 20 45 78 70 72 65 ession.|.(Expression."...".Expre
39020 73 73 69 6f 6e 29 0a 0a 46 6f 72 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 20 3d 20 6f 70 ssion)..ForExpression(body).=.op
39040 74 69 6f 6e 28 53 79 6d 62 6f 6c 20 22 3a 22 29 20 6f 70 74 69 6f 6e 28 22 69 6e 6c 69 6e 65 22 tion(Symbol.":").option("inline"
39060 29 20 22 66 6f 72 22 20 22 28 22 20 45 78 70 72 65 73 73 69 6f 6e 20 22 29 22 20 6f 70 74 69 6f )."for"."(".Expression.")".optio
39080 6e 28 22 7c 22 20 6f 70 74 69 6f 6e 28 22 2a 22 29 20 53 79 6d 62 6f 6c 20 6f 70 74 69 6f 6e 28 n("|".option("*").Symbol.option(
390a0 22 2c 22 20 53 79 6d 62 6f 6c 29 20 22 7c 22 29 20 62 6f 64 79 20 6f 70 74 69 6f 6e 28 22 65 6c ",".Symbol)."|").body.option("el
390c0 73 65 22 20 42 6c 6f 63 6b 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 29 0a 0a 42 6f 6f 6c se".BlockExpression(body))..Bool
390e0 4f 72 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 42 6f 6f 6c 41 6e 64 45 78 70 72 65 73 73 69 6f 6e OrExpression.=.BoolAndExpression
39100 20 22 6f 72 22 20 42 6f 6f 6c 4f 72 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 42 6f 6f 6c 41 6e 64 ."or".BoolOrExpression.|.BoolAnd
39120 45 78 70 72 65 73 73 69 6f 6e 0a 0a 52 65 74 75 72 6e 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 22 Expression..ReturnExpression.=."
39140 72 65 74 75 72 6e 22 20 6f 70 74 69 6f 6e 28 45 78 70 72 65 73 73 69 6f 6e 29 0a 0a 54 72 79 45 return".option(Expression)..TryE
39160 78 70 72 65 73 73 69 6f 6e 20 3d 20 22 74 72 79 22 20 45 78 70 72 65 73 73 69 6f 6e 0a 0a 41 77 xpression.=."try".Expression..Aw
39180 61 69 74 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 22 61 77 61 69 74 22 20 45 78 70 72 65 73 73 69 aitExpression.=."await".Expressi
391a0 6f 6e 0a 0a 42 72 65 61 6b 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 22 62 72 65 61 6b 22 20 6f 70 on..BreakExpression.=."break".op
391c0 74 69 6f 6e 28 22 3a 22 20 53 79 6d 62 6f 6c 29 20 6f 70 74 69 6f 6e 28 45 78 70 72 65 73 73 69 tion(":".Symbol).option(Expressi
391e0 6f 6e 29 0a 0a 43 61 6e 63 65 6c 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 22 63 61 6e 63 65 6c 22 on)..CancelExpression.=."cancel"
39200 20 45 78 70 72 65 73 73 69 6f 6e 3b 0a 0a 52 65 73 75 6d 65 45 78 70 72 65 73 73 69 6f 6e 20 3d .Expression;..ResumeExpression.=
39220 20 22 72 65 73 75 6d 65 22 20 45 78 70 72 65 73 73 69 6f 6e 3b 0a 0a 44 65 66 65 72 28 62 6f 64 ."resume".Expression;..Defer(bod
39240 79 29 20 3d 20 28 22 64 65 66 65 72 22 20 7c 20 22 64 65 66 65 72 72 6f 72 22 29 20 62 6f 64 79 y).=.("defer".|."deferror").body
39260 0a 0a 49 66 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 20 3d 20 22 69 66 22 20 22 28 22 20 ..IfExpression(body).=."if"."(".
39280 45 78 70 72 65 73 73 69 6f 6e 20 22 29 22 20 62 6f 64 79 20 6f 70 74 69 6f 6e 28 22 65 6c 73 65 Expression.")".body.option("else
392a0 22 20 42 6c 6f 63 6b 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 29 0a 0a 53 75 73 70 65 6e ".BlockExpression(body))..Suspen
392c0 64 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 20 3d 20 22 73 75 73 70 65 6e 64 22 20 6f 70 dExpression(body).=."suspend".op
392e0 74 69 6f 6e 28 28 22 7c 22 20 53 79 6d 62 6f 6c 20 22 7c 22 20 62 6f 64 79 29 29 0a 0a 49 66 45 tion(("|".Symbol."|".body))..IfE
39300 72 72 6f 72 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 20 3d 20 22 69 66 22 20 22 28 22 20 rrorExpression(body).=."if"."(".
39320 45 78 70 72 65 73 73 69 6f 6e 20 22 29 22 20 6f 70 74 69 6f 6e 28 22 7c 22 20 6f 70 74 69 6f 6e Expression.")".option("|".option
39340 28 22 2a 22 29 20 53 79 6d 62 6f 6c 20 22 7c 22 29 20 62 6f 64 79 20 22 65 6c 73 65 22 20 22 7c ("*").Symbol."|").body."else"."|
39360 22 20 53 79 6d 62 6f 6c 20 22 7c 22 20 42 6c 6f 63 6b 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 ".Symbol."|".BlockExpression(bod
39380 79 29 0a 0a 54 65 73 74 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 20 3d 20 22 69 66 22 20 y)..TestExpression(body).=."if".
393a0 22 28 22 20 45 78 70 72 65 73 73 69 6f 6e 20 22 29 22 20 6f 70 74 69 6f 6e 28 22 7c 22 20 6f 70 "(".Expression.")".option("|".op
393c0 74 69 6f 6e 28 22 2a 22 29 20 53 79 6d 62 6f 6c 20 22 7c 22 29 20 62 6f 64 79 20 6f 70 74 69 6f tion("*").Symbol."|").body.optio
393e0 6e 28 22 65 6c 73 65 22 20 42 6c 6f 63 6b 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 29 0a n("else".BlockExpression(body)).
39400 0a 57 68 69 6c 65 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 20 3d 20 6f 70 74 69 6f 6e 28 .WhileExpression(body).=.option(
39420 53 79 6d 62 6f 6c 20 22 3a 22 29 20 6f 70 74 69 6f 6e 28 22 69 6e 6c 69 6e 65 22 29 20 22 77 68 Symbol.":").option("inline")."wh
39440 69 6c 65 22 20 22 28 22 20 45 78 70 72 65 73 73 69 6f 6e 20 22 29 22 20 6f 70 74 69 6f 6e 28 22 ile"."(".Expression.")".option("
39460 7c 22 20 6f 70 74 69 6f 6e 28 22 2a 22 29 20 53 79 6d 62 6f 6c 20 22 7c 22 29 20 6f 70 74 69 6f |".option("*").Symbol."|").optio
39480 6e 28 22 3a 22 20 22 28 22 20 45 78 70 72 65 73 73 69 6f 6e 20 22 29 22 29 20 62 6f 64 79 20 6f n(":"."(".Expression.")").body.o
394a0 70 74 69 6f 6e 28 22 65 6c 73 65 22 20 6f 70 74 69 6f 6e 28 22 7c 22 20 53 79 6d 62 6f 6c 20 22 ption("else".option("|".Symbol."
394c0 7c 22 29 20 42 6c 6f 63 6b 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 29 0a 0a 42 6f 6f 6c |").BlockExpression(body))..Bool
394e0 41 6e 64 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 43 6f 6d 70 61 72 69 73 6f 6e 45 78 70 72 65 73 AndExpression.=.ComparisonExpres
39500 73 69 6f 6e 20 22 61 6e 64 22 20 42 6f 6f 6c 41 6e 64 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 43 sion."and".BoolAndExpression.|.C
39520 6f 6d 70 61 72 69 73 6f 6e 45 78 70 72 65 73 73 69 6f 6e 0a 0a 43 6f 6d 70 61 72 69 73 6f 6e 45 omparisonExpression..ComparisonE
39540 78 70 72 65 73 73 69 6f 6e 20 3d 20 42 69 6e 61 72 79 4f 72 45 78 70 72 65 73 73 69 6f 6e 20 43 xpression.=.BinaryOrExpression.C
39560 6f 6d 70 61 72 69 73 6f 6e 4f 70 65 72 61 74 6f 72 20 42 69 6e 61 72 79 4f 72 45 78 70 72 65 73 omparisonOperator.BinaryOrExpres
39580 73 69 6f 6e 20 7c 20 42 69 6e 61 72 79 4f 72 45 78 70 72 65 73 73 69 6f 6e 0a 0a 43 6f 6d 70 61 sion.|.BinaryOrExpression..Compa
395a0 72 69 73 6f 6e 4f 70 65 72 61 74 6f 72 20 3d 20 22 3d 3d 22 20 7c 20 22 21 3d 22 20 7c 20 22 26 risonOperator.=."==".|."!=".|."&
395c0 6c 74 3b 22 20 7c 20 22 26 67 74 3b 22 20 7c 20 22 26 6c 74 3b 3d 22 20 7c 20 22 26 67 74 3b 3d lt;".|."&gt;".|."&lt;=".|."&gt;=
395e0 22 0a 0a 42 69 6e 61 72 79 4f 72 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 42 69 6e 61 72 79 58 6f "..BinaryOrExpression.=.BinaryXo
39600 72 45 78 70 72 65 73 73 69 6f 6e 20 22 7c 22 20 42 69 6e 61 72 79 4f 72 45 78 70 72 65 73 73 69 rExpression."|".BinaryOrExpressi
39620 6f 6e 20 7c 20 42 69 6e 61 72 79 58 6f 72 45 78 70 72 65 73 73 69 6f 6e 0a 0a 42 69 6e 61 72 79 on.|.BinaryXorExpression..Binary
39640 58 6f 72 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 42 69 6e 61 72 79 41 6e 64 45 78 70 72 65 73 73 XorExpression.=.BinaryAndExpress
39660 69 6f 6e 20 22 5e 22 20 42 69 6e 61 72 79 58 6f 72 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 42 69 ion."^".BinaryXorExpression.|.Bi
39680 6e 61 72 79 41 6e 64 45 78 70 72 65 73 73 69 6f 6e 0a 0a 42 69 6e 61 72 79 41 6e 64 45 78 70 72 naryAndExpression..BinaryAndExpr
396a0 65 73 73 69 6f 6e 20 3d 20 42 69 74 53 68 69 66 74 45 78 70 72 65 73 73 69 6f 6e 20 22 26 61 6d ession.=.BitShiftExpression."&am
396c0 70 3b 22 20 42 69 6e 61 72 79 41 6e 64 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 42 69 74 53 68 69 p;".BinaryAndExpression.|.BitShi
396e0 66 74 45 78 70 72 65 73 73 69 6f 6e 0a 0a 42 69 74 53 68 69 66 74 45 78 70 72 65 73 73 69 6f 6e ftExpression..BitShiftExpression
39700 20 3d 20 41 64 64 69 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 42 69 74 53 68 69 66 74 4f 70 .=.AdditionExpression.BitShiftOp
39720 65 72 61 74 6f 72 20 42 69 74 53 68 69 66 74 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 41 64 64 69 erator.BitShiftExpression.|.Addi
39740 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 0a 0a 42 69 74 53 68 69 66 74 4f 70 65 72 61 74 6f 72 tionExpression..BitShiftOperator
39760 20 3d 20 22 26 6c 74 3b 26 6c 74 3b 22 20 7c 20 22 26 67 74 3b 26 67 74 3b 22 20 7c 20 22 26 6c .=."&lt;&lt;".|."&gt;&gt;".|."&l
39780 74 3b 26 6c 74 3b 22 0a 0a 41 64 64 69 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 4d 75 t;&lt;"..AdditionExpression.=.Mu
397a0 6c 74 69 70 6c 79 45 78 70 72 65 73 73 69 6f 6e 20 41 64 64 69 74 69 6f 6e 4f 70 65 72 61 74 6f ltiplyExpression.AdditionOperato
397c0 72 20 41 64 64 69 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 4d 75 6c 74 69 70 6c 79 45 r.AdditionExpression.|.MultiplyE
397e0 78 70 72 65 73 73 69 6f 6e 0a 0a 41 64 64 69 74 69 6f 6e 4f 70 65 72 61 74 6f 72 20 3d 20 22 2b xpression..AdditionOperator.=."+
39800 22 20 7c 20 22 2d 22 20 7c 20 22 2b 2b 22 20 7c 20 22 2b 25 22 20 7c 20 22 2d 25 22 0a 0a 4d 75 ".|."-".|."++".|."+%".|."-%"..Mu
39820 6c 74 69 70 6c 79 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 43 75 72 6c 79 53 75 66 66 69 78 45 78 ltiplyExpression.=.CurlySuffixEx
39840 70 72 65 73 73 69 6f 6e 20 4d 75 6c 74 69 70 6c 79 4f 70 65 72 61 74 6f 72 20 4d 75 6c 74 69 70 pression.MultiplyOperator.Multip
39860 6c 79 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 43 75 72 6c 79 53 75 66 66 69 78 45 78 70 72 65 73 lyExpression.|.CurlySuffixExpres
39880 73 69 6f 6e 0a 0a 43 75 72 6c 79 53 75 66 66 69 78 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 54 79 sion..CurlySuffixExpression.=.Ty
398a0 70 65 45 78 70 72 20 6f 70 74 69 6f 6e 28 43 6f 6e 74 61 69 6e 65 72 49 6e 69 74 45 78 70 72 65 peExpr.option(ContainerInitExpre
398c0 73 73 69 6f 6e 29 0a 0a 4d 75 6c 74 69 70 6c 79 4f 70 65 72 61 74 6f 72 20 3d 20 22 7c 7c 22 20 ssion)..MultiplyOperator.=."||".
398e0 7c 20 22 2a 22 20 7c 20 22 2f 22 20 7c 20 22 25 22 20 7c 20 22 2a 2a 22 20 7c 20 22 2a 25 22 0a |."*".|."/".|."%".|."**".|."*%".
39900 0a 50 72 65 66 69 78 4f 70 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 50 72 65 66 69 78 4f 70 20 45 .PrefixOpExpression.=.PrefixOp.E
39920 72 72 6f 72 53 65 74 45 78 70 72 20 7c 20 53 75 66 66 69 78 4f 70 45 78 70 72 65 73 73 69 6f 6e rrorSetExpr.|.SuffixOpExpression
39940 0a 0a 53 75 66 66 69 78 4f 70 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 28 22 61 73 79 6e 63 22 20 ..SuffixOpExpression.=.("async".
39960 6f 70 74 69 6f 6e 28 22 28 22 20 45 78 70 72 65 73 73 69 6f 6e 20 22 29 22 29 20 50 72 69 6d 61 option("(".Expression.")").Prima
39980 72 79 45 78 70 72 65 73 73 69 6f 6e 20 46 6e 43 61 6c 6c 45 78 70 72 65 73 73 69 6f 6e 29 20 7c ryExpression.FnCallExpression).|
399a0 20 50 72 69 6d 61 72 79 45 78 70 72 65 73 73 69 6f 6e 20 6f 70 74 69 6f 6e 28 46 6e 43 61 6c 6c .PrimaryExpression.option(FnCall
399c0 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 41 72 72 61 79 41 63 63 65 73 73 45 78 70 72 65 73 73 69 Expression.|.ArrayAccessExpressi
399e0 6f 6e 20 7c 20 46 69 65 6c 64 41 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 53 6c 69 on.|.FieldAccessExpression.|.Sli
39a00 63 65 45 78 70 72 65 73 73 69 6f 6e 29 0a 0a 46 69 65 6c 64 41 63 63 65 73 73 45 78 70 72 65 73 ceExpression)..FieldAccessExpres
39a20 73 69 6f 6e 20 3d 20 22 2e 22 20 53 79 6d 62 6f 6c 0a 0a 46 6e 43 61 6c 6c 45 78 70 72 65 73 73 sion.=.".".Symbol..FnCallExpress
39a40 69 6f 6e 20 3d 20 22 28 22 20 6c 69 73 74 28 45 78 70 72 65 73 73 69 6f 6e 2c 20 22 2c 22 29 20 ion.=."(".list(Expression,.",").
39a60 22 29 22 0a 0a 41 72 72 61 79 41 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 22 5b 22 ")"..ArrayAccessExpression.=."["
39a80 20 45 78 70 72 65 73 73 69 6f 6e 20 22 5d 22 0a 0a 53 6c 69 63 65 45 78 70 72 65 73 73 69 6f 6e .Expression."]"..SliceExpression
39aa0 20 3d 20 22 5b 22 20 45 78 70 72 65 73 73 69 6f 6e 20 22 2e 2e 22 20 6f 70 74 69 6f 6e 28 45 78 .=."[".Expression."..".option(Ex
39ac0 70 72 65 73 73 69 6f 6e 29 20 22 5d 22 0a 0a 43 6f 6e 74 61 69 6e 65 72 49 6e 69 74 45 78 70 72 pression)."]"..ContainerInitExpr
39ae0 65 73 73 69 6f 6e 20 3d 20 22 7b 22 20 43 6f 6e 74 61 69 6e 65 72 49 6e 69 74 42 6f 64 79 20 22 ession.=."{".ContainerInitBody."
39b00 7d 22 0a 0a 43 6f 6e 74 61 69 6e 65 72 49 6e 69 74 42 6f 64 79 20 3d 20 6c 69 73 74 28 53 74 72 }"..ContainerInitBody.=.list(Str
39b20 75 63 74 4c 69 74 65 72 61 6c 46 69 65 6c 64 2c 20 22 2c 22 29 20 7c 20 6c 69 73 74 28 45 78 70 uctLiteralField,.",").|.list(Exp
39b40 72 65 73 73 69 6f 6e 2c 20 22 2c 22 29 0a 0a 53 74 72 75 63 74 4c 69 74 65 72 61 6c 46 69 65 6c ression,.",")..StructLiteralFiel
39b60 64 20 3d 20 22 2e 22 20 53 79 6d 62 6f 6c 20 22 3d 22 20 45 78 70 72 65 73 73 69 6f 6e 0a 0a 50 d.=.".".Symbol."=".Expression..P
39b80 72 65 66 69 78 4f 70 20 3d 20 22 21 22 20 7c 20 22 2d 22 20 7c 20 22 7e 22 20 7c 20 22 2a 22 20 refixOp.=."!".|."-".|."~".|."*".
39ba0 7c 20 28 22 26 61 6d 70 3b 22 20 6f 70 74 69 6f 6e 28 22 61 6c 69 67 6e 22 20 22 28 22 20 45 78 |.("&amp;".option("align"."(".Ex
39bc0 70 72 65 73 73 69 6f 6e 20 6f 70 74 69 6f 6e 28 22 3a 22 20 49 6e 74 65 67 65 72 20 22 3a 22 20 pression.option(":".Integer.":".
39be0 49 6e 74 65 67 65 72 29 20 22 29 22 20 29 20 6f 70 74 69 6f 6e 28 22 63 6f 6e 73 74 22 29 20 6f Integer).")".).option("const").o
39c00 70 74 69 6f 6e 28 22 76 6f 6c 61 74 69 6c 65 22 29 29 20 7c 20 22 3f 22 20 7c 20 22 3f 3f 22 20 ption("volatile")).|."?".|."??".
39c20 7c 20 22 2d 25 22 20 7c 20 22 74 72 79 22 20 7c 20 22 61 77 61 69 74 22 0a 0a 50 72 69 6d 61 72 |."-%".|."try".|."await"..Primar
39c40 79 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 49 6e 74 65 67 65 72 20 7c 20 46 6c 6f 61 74 20 7c 20 yExpression.=.Integer.|.Float.|.
39c60 53 74 72 69 6e 67 20 7c 20 43 68 61 72 4c 69 74 65 72 61 6c 20 7c 20 4b 65 79 77 6f 72 64 4c 69 String.|.CharLiteral.|.KeywordLi
39c80 74 65 72 61 6c 20 7c 20 47 72 6f 75 70 65 64 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 42 6c 6f 63 teral.|.GroupedExpression.|.Bloc
39ca0 6b 45 78 70 72 65 73 73 69 6f 6e 28 42 6c 6f 63 6b 4f 72 45 78 70 72 65 73 73 69 6f 6e 29 20 7c kExpression(BlockOrExpression).|
39cc0 20 53 79 6d 62 6f 6c 20 7c 20 28 22 40 22 20 53 79 6d 62 6f 6c 20 46 6e 43 61 6c 6c 45 78 70 72 .Symbol.|.("@".Symbol.FnCallExpr
39ce0 65 73 73 69 6f 6e 29 20 7c 20 41 72 72 61 79 54 79 70 65 20 7c 20 46 6e 50 72 6f 74 6f 20 7c 20 ession).|.ArrayType.|.FnProto.|.
39d00 41 73 6d 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 43 6f 6e 74 61 69 6e 65 72 44 65 63 6c 20 7c 20 AsmExpression.|.ContainerDecl.|.
39d20 28 22 63 6f 6e 74 69 6e 75 65 22 20 6f 70 74 69 6f 6e 28 22 3a 22 20 53 79 6d 62 6f 6c 29 29 20 ("continue".option(":".Symbol)).
39d40 7c 20 45 72 72 6f 72 53 65 74 44 65 63 6c 0a 0a 41 72 72 61 79 54 79 70 65 20 3a 20 22 5b 22 20 |.ErrorSetDecl..ArrayType.:."[".
39d60 6f 70 74 69 6f 6e 28 45 78 70 72 65 73 73 69 6f 6e 29 20 22 5d 22 20 6f 70 74 69 6f 6e 28 22 61 option(Expression)."]".option("a
39d80 6c 69 67 6e 22 20 22 28 22 20 45 78 70 72 65 73 73 69 6f 6e 20 6f 70 74 69 6f 6e 28 22 3a 22 20 lign"."(".Expression.option(":".
39da0 49 6e 74 65 67 65 72 20 22 3a 22 20 49 6e 74 65 67 65 72 29 20 22 29 22 29 29 20 6f 70 74 69 6f Integer.":".Integer).")")).optio
39dc0 6e 28 22 63 6f 6e 73 74 22 29 20 6f 70 74 69 6f 6e 28 22 76 6f 6c 61 74 69 6c 65 22 29 20 54 79 n("const").option("volatile").Ty
39de0 70 65 45 78 70 72 0a 0a 47 72 6f 75 70 65 64 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 22 28 22 20 peExpr..GroupedExpression.=."(".
39e00 45 78 70 72 65 73 73 69 6f 6e 20 22 29 22 0a 0a 4b 65 79 77 6f 72 64 4c 69 74 65 72 61 6c 20 3d Expression.")"..KeywordLiteral.=
39e20 20 22 74 72 75 65 22 20 7c 20 22 66 61 6c 73 65 22 20 7c 20 22 6e 75 6c 6c 22 20 7c 20 22 75 6e ."true".|."false".|."null".|."un
39e40 64 65 66 69 6e 65 64 22 20 7c 20 22 65 72 72 6f 72 22 20 7c 20 22 74 68 69 73 22 20 7c 20 22 75 defined".|."error".|."this".|."u
39e60 6e 72 65 61 63 68 61 62 6c 65 22 20 7c 20 22 73 75 73 70 65 6e 64 22 0a 0a 45 72 72 6f 72 53 65 nreachable".|."suspend"..ErrorSe
39e80 74 44 65 63 6c 20 3d 20 22 65 72 72 6f 72 22 20 22 7b 22 20 6c 69 73 74 28 53 79 6d 62 6f 6c 2c tDecl.=."error"."{".list(Symbol,
39ea0 20 22 2c 22 29 20 22 7d 22 0a 0a 43 6f 6e 74 61 69 6e 65 72 44 65 63 6c 20 3d 20 6f 70 74 69 6f .",")."}"..ContainerDecl.=.optio
39ec0 6e 28 22 65 78 74 65 72 6e 22 20 7c 20 22 70 61 63 6b 65 64 22 29 0a 20 20 28 22 73 74 72 75 63 n("extern".|."packed")...("struc
39ee0 74 22 20 6f 70 74 69 6f 6e 28 47 72 6f 75 70 65 64 45 78 70 72 65 73 73 69 6f 6e 29 20 7c 20 22 t".option(GroupedExpression).|."
39f00 75 6e 69 6f 6e 22 20 6f 70 74 69 6f 6e 28 22 65 6e 75 6d 22 20 6f 70 74 69 6f 6e 28 47 72 6f 75 union".option("enum".option(Grou
39f20 70 65 64 45 78 70 72 65 73 73 69 6f 6e 29 20 7c 20 47 72 6f 75 70 65 64 45 78 70 72 65 73 73 69 pedExpression).|.GroupedExpressi
39f40 6f 6e 29 20 7c 20 28 22 65 6e 75 6d 22 20 6f 70 74 69 6f 6e 28 47 72 6f 75 70 65 64 45 78 70 72 on).|.("enum".option(GroupedExpr
39f60 65 73 73 69 6f 6e 29 29 29 0a 20 20 22 7b 22 20 6d 61 6e 79 28 43 6f 6e 74 61 69 6e 65 72 4d 65 ession)))..."{".many(ContainerMe
39f80 6d 62 65 72 29 20 22 7d 22 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 0a 20 20 mber)."}"</code></pre>..........
39fa0 20 20 20 20 3c 68 31 20 69 64 3d 22 5a 65 6e 22 3e 5a 65 6e 3c 2f 68 31 3e 0a 0a 20 20 20 20 20 ....<h1.id="Zen">Zen</h1>.......
39fc0 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 43 6f 6d 6d 75 6e 69 63 61 74 65 20 69 6e .<ul>.........<li>Communicate.in
39fe0 74 65 6e 74 20 70 72 65 63 69 73 65 6c 79 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 tent.precisely.</li>.........<li
3a000 3e 45 64 67 65 20 63 61 73 65 73 20 6d 61 74 74 65 72 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 >Edge.cases.matter.</li>........
3a020 20 3c 6c 69 3e 46 61 76 6f 72 20 72 65 61 64 69 6e 67 20 63 6f 64 65 20 6f 76 65 72 20 77 72 69 .<li>Favor.reading.code.over.wri
3a040 74 69 6e 67 20 63 6f 64 65 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 4f 6e 6c 79 ting.code.</li>.........<li>Only
3a060 20 6f 6e 65 20 6f 62 76 69 6f 75 73 20 77 61 79 20 74 6f 20 64 6f 20 74 68 69 6e 67 73 2e 3c 2f .one.obvious.way.to.do.things.</
3a080 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 52 75 6e 74 69 6d 65 20 63 72 61 73 68 65 73 20 li>.........<li>Runtime.crashes.
3a0a0 61 72 65 20 62 65 74 74 65 72 20 74 68 61 6e 20 62 75 67 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 are.better.than.bugs.</li>......
3a0c0 20 20 20 3c 6c 69 3e 43 6f 6d 70 69 6c 65 20 65 72 72 6f 72 73 20 61 72 65 20 62 65 74 74 65 72 ...<li>Compile.errors.are.better
3a0e0 20 74 68 61 6e 20 72 75 6e 74 69 6d 65 20 63 72 61 73 68 65 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 .than.runtime.crashes.</li>.....
3a100 20 20 20 20 3c 6c 69 3e 49 6e 63 72 65 6d 65 6e 74 61 6c 20 69 6d 70 72 6f 76 65 6d 65 6e 74 73 ....<li>Incremental.improvements
3a120 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 41 76 6f 69 64 20 6c 6f 63 61 6c 20 6d .</li>.........<li>Avoid.local.m
3a140 61 78 69 6d 75 6d 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 52 65 64 75 63 65 aximums.</li>.........<li>Reduce
3a160 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 6e 65 20 6d 75 73 74 20 72 65 6d 65 6d 62 65 72 2e 3c 2f .the.amount.one.must.remember.</
3a180 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 4d 69 6e 69 6d 69 7a 65 20 65 6e 65 72 67 79 20 li>.........<li>Minimize.energy.
3a1a0 73 70 65 6e 74 20 6f 6e 20 63 6f 64 69 6e 67 20 73 74 79 6c 65 2e 3c 2f 6c 69 3e 0a 20 20 20 20 spent.on.coding.style.</li>.....
3a1c0 20 20 20 20 3c 6c 69 3e 54 6f 67 65 74 68 65 72 20 77 65 20 73 65 72 76 65 20 65 6e 64 20 75 73 ....<li>Together.we.serve.end.us
3a1e0 65 72 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 0a 20 20 20 ers.</li>.......</ul>...........
3a200 20 3c 2f 64 69 76 3e 0a 20 20 20 20 0a 20 20 20 20 0a 20 20 3c 2f 62 6f 64 79 3e 0a 3c 2f 68 74 .</div>.............</body>.</ht
3a220 6d 6c 3e 0a 0a 50 4b 01 02 14 00 14 00 00 00 00 00 00 00 21 52 6f 61 ab 2c 14 00 00 00 14 00 00 ml>..PK............!Roa.,.......
3a240 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6d 69 6d 65 74 79 70 65 50 4b 01 02 14 ...................mimetypePK...
3a260 00 14 00 00 00 00 00 00 00 21 52 6f 92 d0 0a fc 00 00 00 fc 00 00 00 16 00 00 00 00 00 00 00 00 .........!Ro....................
3a280 00 00 00 00 00 3a 00 00 00 4d 45 54 41 2d 49 4e 46 2f 63 6f 6e 74 61 69 6e 65 72 2e 78 6d 6c 50 .....:...META-INF/container.xmlP
3a2a0 4b 01 02 14 00 14 00 00 00 00 00 00 00 21 52 6a 86 4f 68 a7 02 00 00 a7 02 00 00 11 00 00 00 00 K............!Rj.Oh.............
3a2c0 00 00 00 00 00 00 00 00 00 6a 01 00 00 4f 45 42 50 53 2f 63 6f 6e 74 65 6e 74 2e 6f 70 66 50 4b .........j...OEBPS/content.opfPK
3a2e0 01 02 14 00 14 00 00 00 00 00 00 00 21 52 52 1f 07 5d 86 01 00 00 86 01 00 00 0f 00 00 00 00 00 ............!RR..]..............
3a300 00 00 00 00 00 00 00 00 40 04 00 00 4f 45 42 50 53 2f 6e 61 76 2e 78 68 74 6d 6c 50 4b 01 02 14 ........@...OEBPS/nav.xhtmlPK...
3a320 00 14 00 00 00 00 00 00 00 21 52 29 ef 77 42 03 9c 03 00 03 9c 03 00 11 00 00 00 00 00 00 00 00 .........!R).wB.................
3a340 00 00 00 00 00 f3 05 00 00 4f 45 42 50 53 2f 69 6e 64 65 78 2e 78 68 74 6d 6c 50 4b 05 06 00 00 .........OEBPS/index.xhtmlPK....
3a360 00 00 05 00 05 00 35 01 00 00 25 a2 03 00 00 00 ......5...%.....