[{"data":1,"prerenderedAt":1775},["ShallowReactive",2],{"page-\u002Frust\u002F04-data-types":3},{"id":4,"title":5,"body":6,"description":150,"extension":1768,"meta":1769,"navigation":1770,"path":1771,"seo":1772,"stem":1773,"__hash__":1774},"content\u002Frust\u002F04-data-types.md","04 — Data Types",{"type":7,"value":8,"toc":1743},"minimark",[9,13,18,23,141,292,297,340,457,461,479,590,617,621,647,655,664,719,756,760,764,767,875,909,913,916,1027,1059,1069,1072,1076,1097,1180,1184,1260,1275,1282,1300,1367,1371,1411,1414,1418,1456,1459,1465,1470,1568,1584,1588,1729,1733,1739],[10,11,5],"h1",{"id":12},"_04-data-types",[14,15,17],"h2",{"id":16},"scalar-types","Scalar Types",[19,20,22],"h3",{"id":21},"integers","Integers",[24,25,26,42],"table",{},[27,28,29],"thead",{},[30,31,32,36,39],"tr",{},[33,34,35],"th",{},"Type",[33,37,38],{},"Bits",[33,40,41],{},"Signed\u002FUnsigned",[43,44,45,64,79,95,110,125],"tbody",{},[30,46,47,58,61],{},[48,49,50,54,55],"td",{},[51,52,53],"code",{},"i8"," ",[51,56,57],{},"u8",[48,59,60],{},"8",[48,62,63],{},"signed\u002Funsigned",[30,65,66,74,77],{},[48,67,68,54,71],{},[51,69,70],{},"i16",[51,72,73],{},"u16",[48,75,76],{},"16",[48,78],{},[30,80,81,89,92],{},[48,82,83,54,86],{},[51,84,85],{},"i32",[51,87,88],{},"u32",[48,90,91],{},"32",[48,93,94],{},"(default integer)",[30,96,97,105,108],{},[48,98,99,54,102],{},[51,100,101],{},"i64",[51,103,104],{},"u64",[48,106,107],{},"64",[48,109],{},[30,111,112,120,123],{},[48,113,114,54,117],{},[51,115,116],{},"i128",[51,118,119],{},"u128",[48,121,122],{},"128",[48,124],{},[30,126,127,135,138],{},[48,128,129,54,132],{},[51,130,131],{},"isize",[51,133,134],{},"usize",[48,136,137],{},"ptr-width (platform)",[48,139,140],{},"index\u002Fsizes",[142,143,145],"code-wrapper",{"language":144},"rust",[146,147,151],"pre",{"className":148,"code":149,"language":144,"meta":150,"style":150},"language-rust shiki shiki-themes github-light github-dark","let a: i32 = -5;\nlet b: u8 = 255;\nlet hex = 0xff;\nlet oct = 0o17;\nlet bin = 0b1010;\nlet byte = b'A';        \u002F\u002F u8 from byte literal -> 65\nlet big = 1_000_000;    \u002F\u002F underscores for readability\n","",[51,152,153,186,206,222,237,252,273],{"__ignoreMap":150},[154,155,158,162,166,169,173,176,179,183],"span",{"class":156,"line":157},"line",1,[154,159,161],{"class":160},"svdQ7","let",[154,163,165],{"class":164},"ssxIu"," a",[154,167,168],{"class":160},":",[154,170,172],{"class":171},"sIsaT"," i32",[154,174,175],{"class":160}," =",[154,177,178],{"class":160}," -",[154,180,182],{"class":181},"snvgF","5",[154,184,185],{"class":164},";\n",[154,187,189,191,194,196,199,201,204],{"class":156,"line":188},2,[154,190,161],{"class":160},[154,192,193],{"class":164}," b",[154,195,168],{"class":160},[154,197,198],{"class":171}," u8",[154,200,175],{"class":160},[154,202,203],{"class":181}," 255",[154,205,185],{"class":164},[154,207,209,211,214,217,220],{"class":156,"line":208},3,[154,210,161],{"class":160},[154,212,213],{"class":164}," hex ",[154,215,216],{"class":160},"=",[154,218,219],{"class":181}," 0xff",[154,221,185],{"class":164},[154,223,225,227,230,232,235],{"class":156,"line":224},4,[154,226,161],{"class":160},[154,228,229],{"class":164}," oct ",[154,231,216],{"class":160},[154,233,234],{"class":181}," 0o17",[154,236,185],{"class":164},[154,238,240,242,245,247,250],{"class":156,"line":239},5,[154,241,161],{"class":160},[154,243,244],{"class":164}," bin ",[154,246,216],{"class":160},[154,248,249],{"class":181}," 0b1010",[154,251,185],{"class":164},[154,253,255,257,260,262,266,269],{"class":156,"line":254},6,[154,256,161],{"class":160},[154,258,259],{"class":164}," byte ",[154,261,216],{"class":160},[154,263,265],{"class":264},"sJ6F3"," b'A'",[154,267,268],{"class":164},";        ",[154,270,272],{"class":271},"sdCPZ","\u002F\u002F u8 from byte literal -> 65\n",[154,274,276,278,281,283,286,289],{"class":156,"line":275},7,[154,277,161],{"class":160},[154,279,280],{"class":164}," big ",[154,282,216],{"class":160},[154,284,285],{"class":181}," 1_000_000",[154,287,288],{"class":164},";    ",[154,290,291],{"class":271},"\u002F\u002F underscores for readability\n",[293,294,296],"h4",{"id":295},"integer-overflow","Integer Overflow",[298,299,300,309,315],"ul",{},[301,302,303,304,308],"li",{},"In ",[305,306,307],"strong",{},"debug"," builds: overflow panics.",[301,310,303,311,314],{},[305,312,313],{},"release"," builds: wraps silently (two's complement).",[301,316,317,318,321,322,325,326,329,330,325,333,329,336,339],{},"Explicit methods: ",[51,319,320],{},"wrapping_add",", ",[51,323,324],{},"checked_add"," (returns ",[51,327,328],{},"Option","), ",[51,331,332],{},"overflowing_add",[51,334,335],{},"(value, overflowed)",[51,337,338],{},"saturating_add",".",[142,341,342],{"language":144},[146,343,345],{"className":148,"code":344,"language":144,"meta":150,"style":150},"let (val, ovf) = 255u8.overflowing_add(1); \u002F\u002F (0, true)\nlet safe = 255u8.checked_add(1);          \u002F\u002F None\nlet sat = 255u8.saturating_add(1);        \u002F\u002F 255\nlet wrap = 255u8.wrapping_add(1);         \u002F\u002F 0\n",[51,346,347,376,403,430],{"__ignoreMap":150},[154,348,349,351,354,356,358,360,362,364,367,370,373],{"class":156,"line":157},[154,350,161],{"class":160},[154,352,353],{"class":164}," (val, ovf) ",[154,355,216],{"class":160},[154,357,203],{"class":181},[154,359,57],{"class":171},[154,361,339],{"class":160},[154,363,332],{"class":171},[154,365,366],{"class":164},"(",[154,368,369],{"class":181},"1",[154,371,372],{"class":164},"); ",[154,374,375],{"class":271},"\u002F\u002F (0, true)\n",[154,377,378,380,383,385,387,389,391,393,395,397,400],{"class":156,"line":188},[154,379,161],{"class":160},[154,381,382],{"class":164}," safe ",[154,384,216],{"class":160},[154,386,203],{"class":181},[154,388,57],{"class":171},[154,390,339],{"class":160},[154,392,324],{"class":171},[154,394,366],{"class":164},[154,396,369],{"class":181},[154,398,399],{"class":164},");          ",[154,401,402],{"class":271},"\u002F\u002F None\n",[154,404,405,407,410,412,414,416,418,420,422,424,427],{"class":156,"line":208},[154,406,161],{"class":160},[154,408,409],{"class":164}," sat ",[154,411,216],{"class":160},[154,413,203],{"class":181},[154,415,57],{"class":171},[154,417,339],{"class":160},[154,419,338],{"class":171},[154,421,366],{"class":164},[154,423,369],{"class":181},[154,425,426],{"class":164},");        ",[154,428,429],{"class":271},"\u002F\u002F 255\n",[154,431,432,434,437,439,441,443,445,447,449,451,454],{"class":156,"line":224},[154,433,161],{"class":160},[154,435,436],{"class":164}," wrap ",[154,438,216],{"class":160},[154,440,203],{"class":181},[154,442,57],{"class":171},[154,444,339],{"class":160},[154,446,320],{"class":171},[154,448,366],{"class":164},[154,450,369],{"class":181},[154,452,453],{"class":164},");         ",[154,455,456],{"class":271},"\u002F\u002F 0\n",[19,458,460],{"id":459},"floats","Floats",[462,463,464,321,467,470,471,474,475,478],"p",{},[51,465,466],{},"f32",[51,468,469],{},"f64"," (default). IEEE 754. No ",[51,472,473],{},"f16","\u002F",[51,476,477],{},"f128"," in std.",[142,480,481],{"language":144},[146,482,484],{"className":148,"code":483,"language":144,"meta":150,"style":150},"let f = 2.0;        \u002F\u002F f64\nlet g: f32 = 3.0;\nlet inf = f64::INFINITY;\nlet nan = f64::NAN;\nnan == nan          \u002F\u002F false! NaN never equals itself\nnan.is_nan()        \u002F\u002F true\n",[51,485,486,503,522,542,560,574],{"__ignoreMap":150},[154,487,488,490,493,495,498,500],{"class":156,"line":157},[154,489,161],{"class":160},[154,491,492],{"class":164}," f ",[154,494,216],{"class":160},[154,496,497],{"class":181}," 2.0",[154,499,268],{"class":164},[154,501,502],{"class":271},"\u002F\u002F f64\n",[154,504,505,507,510,512,515,517,520],{"class":156,"line":188},[154,506,161],{"class":160},[154,508,509],{"class":164}," g",[154,511,168],{"class":160},[154,513,514],{"class":171}," f32",[154,516,175],{"class":160},[154,518,519],{"class":181}," 3.0",[154,521,185],{"class":164},[154,523,524,526,529,531,534,537,540],{"class":156,"line":208},[154,525,161],{"class":160},[154,527,528],{"class":164}," inf ",[154,530,216],{"class":160},[154,532,533],{"class":171}," f64",[154,535,536],{"class":160},"::",[154,538,539],{"class":181},"INFINITY",[154,541,185],{"class":164},[154,543,544,546,549,551,553,555,558],{"class":156,"line":224},[154,545,161],{"class":160},[154,547,548],{"class":164}," nan ",[154,550,216],{"class":160},[154,552,533],{"class":171},[154,554,536],{"class":160},[154,556,557],{"class":181},"NAN",[154,559,185],{"class":164},[154,561,562,565,568,571],{"class":156,"line":239},[154,563,564],{"class":164},"nan ",[154,566,567],{"class":160},"==",[154,569,570],{"class":164}," nan          ",[154,572,573],{"class":271},"\u002F\u002F false! NaN never equals itself\n",[154,575,576,579,581,584,587],{"class":156,"line":254},[154,577,578],{"class":164},"nan",[154,580,339],{"class":160},[154,582,583],{"class":171},"is_nan",[154,585,586],{"class":164},"()        ",[154,588,589],{"class":271},"\u002F\u002F true\n",[462,591,592,593,596,597,600,601,604,605,608,609,612,613,616],{},"Floats implement ",[51,594,595],{},"PartialOrd"," (not ",[51,598,599],{},"Ord",") because NaN has no total ordering. ",[51,602,603],{},"f64::NAN.partial_cmp(&f64::NAN)"," returns ",[51,606,607],{},"None",". Sorting floats requires ",[51,610,611],{},"sort_by(|a, b| a.partial_cmp(b).unwrap_or(Ordering::Equal))"," or ",[51,614,615],{},"total_cmp"," (1.62+, gives total ordering).",[19,618,620],{"id":619},"booleans","Booleans",[462,622,623,626,627,474,630,633,634,637,638,641,642,646],{},[51,624,625],{},"bool",", values ",[51,628,629],{},"true",[51,631,632],{},"false",", one byte. Cast with ",[51,635,636],{},"as"," to integer: ",[51,639,640],{},"true as u8 == 1",". Booleans are ",[643,644,645],"em",{},"not"," integers (no implicit conversion in conditions or arithmetic).",[19,648,650,651,654],{"id":649},"characters-char","Characters (",[51,652,653],{},"char",")",[462,656,657,659,660,663],{},[51,658,653],{}," is a ",[305,661,662],{},"4-byte Unicode scalar value"," (not UTF-8 bytes, not a byte):",[142,665,666],{"language":144},[146,667,669],{"className":148,"code":668,"language":144,"meta":150,"style":150},"let c = 'z';\nlet emoji = '🦀';\nlet heart = '\\u{2764}';\n",[51,670,671,685,699],{"__ignoreMap":150},[154,672,673,675,678,680,683],{"class":156,"line":157},[154,674,161],{"class":160},[154,676,677],{"class":164}," c ",[154,679,216],{"class":160},[154,681,682],{"class":264}," 'z'",[154,684,185],{"class":164},[154,686,687,689,692,694,697],{"class":156,"line":188},[154,688,161],{"class":160},[154,690,691],{"class":164}," emoji ",[154,693,216],{"class":160},[154,695,696],{"class":264}," '🦀'",[154,698,185],{"class":164},[154,700,701,703,706,708,711,714,717],{"class":156,"line":208},[154,702,161],{"class":160},[154,704,705],{"class":164}," heart ",[154,707,216],{"class":160},[154,709,710],{"class":264}," '",[154,712,713],{"class":181},"\\u{2764}",[154,715,716],{"class":264},"'",[154,718,185],{"class":164},[298,720,721,736,742],{},[301,722,723,726,727,730,731,733,734,339],{},[51,724,725],{},"'A'"," vs ",[51,728,729],{},"b'A'",": the first is ",[51,732,653],{}," (4 bytes), the second is ",[51,735,57],{},[301,737,738,739,741],{},"Surrogates (D800–DFFF) are not valid ",[51,740,653],{},"s.",[301,743,744,745,748,749,751,752,755],{},"Iterating ",[51,746,747],{},"&str"," yields ",[51,750,653],{},"s (decodes UTF-8); indexing ",[51,753,754],{},"s[0]"," panics (UTF-8 bytes don't align with chars).",[14,757,759],{"id":758},"compound-types","Compound Types",[19,761,763],{"id":762},"tuples","Tuples",[462,765,766],{},"Fixed-length, heterogeneous:",[142,768,769],{"language":144},[146,770,772],{"className":148,"code":771,"language":144,"meta":150,"style":150},"let t: (i32, f64, &str) = (1, 2.0, \"three\");\nlet (a, b, c) = t;          \u002F\u002F destructuring\nlet first = t.0;\nlet unit: () = ();           \u002F\u002F unit type, zero-sized\n",[51,773,774,822,837,855],{"__ignoreMap":150},[154,775,776,778,781,783,786,788,790,792,794,797,800,803,805,807,809,811,814,816,819],{"class":156,"line":157},[154,777,161],{"class":160},[154,779,780],{"class":164}," t",[154,782,168],{"class":160},[154,784,785],{"class":164}," (",[154,787,85],{"class":171},[154,789,321],{"class":164},[154,791,469],{"class":171},[154,793,321],{"class":164},[154,795,796],{"class":160},"&",[154,798,799],{"class":171},"str",[154,801,802],{"class":164},") ",[154,804,216],{"class":160},[154,806,785],{"class":164},[154,808,369],{"class":181},[154,810,321],{"class":164},[154,812,813],{"class":181},"2.0",[154,815,321],{"class":164},[154,817,818],{"class":264},"\"three\"",[154,820,821],{"class":164},");\n",[154,823,824,826,829,831,834],{"class":156,"line":188},[154,825,161],{"class":160},[154,827,828],{"class":164}," (a, b, c) ",[154,830,216],{"class":160},[154,832,833],{"class":164}," t;          ",[154,835,836],{"class":271},"\u002F\u002F destructuring\n",[154,838,839,841,844,846,848,850,853],{"class":156,"line":208},[154,840,161],{"class":160},[154,842,843],{"class":164}," first ",[154,845,216],{"class":160},[154,847,780],{"class":164},[154,849,339],{"class":160},[154,851,852],{"class":181},"0",[154,854,185],{"class":164},[154,856,857,859,862,864,867,869,872],{"class":156,"line":224},[154,858,161],{"class":160},[154,860,861],{"class":164}," unit",[154,863,168],{"class":160},[154,865,866],{"class":164}," () ",[154,868,216],{"class":160},[154,870,871],{"class":164}," ();           ",[154,873,874],{"class":271},"\u002F\u002F unit type, zero-sized\n",[298,876,877,883,894],{},[301,878,879,880,339],{},"Single-element tuple: ",[51,881,882],{},"(x,)",[301,884,885,886,889,890,893],{},"The empty tuple ",[51,887,888],{},"()"," is the unit type (represents \"no meaningful value\", e.g., ",[51,891,892],{},"main","'s return type).",[301,895,896,898,899,901,902,904,905,908],{},[51,897,852],{},"-tuple ",[51,900,888],{}," is inhabited by exactly one value ",[51,903,888],{},". Useful as a ",[51,906,907],{},"HashMap"," value when you want a set.",[19,910,912],{"id":911},"arrays","Arrays",[462,914,915],{},"Fixed length, same type, stack-allocated:",[142,917,918],{"language":144},[146,919,921],{"className":148,"code":920,"language":144,"meta":150,"style":150},"let arr: [i32; 3] = [1, 2, 3];\nlet zeros = [0; 100];        \u002F\u002F 100 zeros\nlet first = arr[0];\nlet slice = &arr[1..3];\n",[51,922,923,964,988,1003],{"__ignoreMap":150},[154,924,925,927,930,932,935,937,940,943,946,948,950,952,954,957,959,961],{"class":156,"line":157},[154,926,161],{"class":160},[154,928,929],{"class":164}," arr",[154,931,168],{"class":160},[154,933,934],{"class":164}," [",[154,936,85],{"class":171},[154,938,939],{"class":164},"; ",[154,941,942],{"class":181},"3",[154,944,945],{"class":164},"] ",[154,947,216],{"class":160},[154,949,934],{"class":164},[154,951,369],{"class":181},[154,953,321],{"class":164},[154,955,956],{"class":181},"2",[154,958,321],{"class":164},[154,960,942],{"class":181},[154,962,963],{"class":164},"];\n",[154,965,966,968,971,973,975,977,979,982,985],{"class":156,"line":188},[154,967,161],{"class":160},[154,969,970],{"class":164}," zeros ",[154,972,216],{"class":160},[154,974,934],{"class":164},[154,976,852],{"class":181},[154,978,939],{"class":164},[154,980,981],{"class":181},"100",[154,983,984],{"class":164},"];        ",[154,986,987],{"class":271},"\u002F\u002F 100 zeros\n",[154,989,990,992,994,996,999,1001],{"class":156,"line":208},[154,991,161],{"class":160},[154,993,843],{"class":164},[154,995,216],{"class":160},[154,997,998],{"class":164}," arr[",[154,1000,852],{"class":181},[154,1002,963],{"class":164},[154,1004,1005,1007,1010,1012,1015,1018,1020,1023,1025],{"class":156,"line":224},[154,1006,161],{"class":160},[154,1008,1009],{"class":164}," slice ",[154,1011,216],{"class":160},[154,1013,1014],{"class":160}," &",[154,1016,1017],{"class":164},"arr[",[154,1019,369],{"class":181},[154,1021,1022],{"class":160},"..",[154,1024,942],{"class":181},[154,1026,963],{"class":164},[298,1028,1029,1039,1046,1052],{},[301,1030,1031,1032,1035,1036,339],{},"Length is part of the type: ",[51,1033,1034],{},"[i32; 3]"," != ",[51,1037,1038],{},"[i32; 4]",[301,1040,1041,1042,1045],{},"Out-of-bounds indexing ",[305,1043,1044],{},"panics"," at runtime with bounds checking.",[301,1047,1048,1051],{},[51,1049,1050],{},"arr.len()"," is a compile-time constant for arrays.",[301,1053,1054,1055,1058],{},"Arrays implement ",[51,1056,1057],{},"IntoIterator"," since edition 2021 (by value).",[19,1060,1062,1063,321,1066,654],{"id":1061},"slices-t-mut-t","Slices (",[51,1064,1065],{},"&[T]",[51,1067,1068],{},"&mut [T]",[462,1070,1071],{},"Dynamically-sized view into a contiguous sequence (covered in the Slices chapter). The fat-pointer representation: (pointer, length).",[14,1073,1075],{"id":1074},"strings-preview","Strings (preview)",[298,1077,1078,1083,1089],{},[301,1079,1080,1082],{},[51,1081,747],{}," — borrowed string slice, UTF-8, immutable view, fat pointer (ptr+len).",[301,1084,1085,1088],{},[51,1086,1087],{},"String"," — owned, growable UTF-8 string (heap).",[301,1090,1091,726,1094,1096],{},[51,1092,1093],{},"&[u8]",[51,1095,747],{},": bytes vs decoded text.",[142,1098,1099],{"language":144},[146,1100,1102],{"className":148,"code":1101,"language":144,"meta":150,"style":150},"let s: &str = \"hello\";\nlet owned: String = String::from(\"hello\");\nlet bytes: &[u8] = b\"hello\";        \u002F\u002F &[u8; 5] \u002F &[u8]\n",[51,1103,1104,1124,1152],{"__ignoreMap":150},[154,1105,1106,1108,1111,1113,1115,1117,1119,1122],{"class":156,"line":157},[154,1107,161],{"class":160},[154,1109,1110],{"class":164}," s",[154,1112,168],{"class":160},[154,1114,1014],{"class":160},[154,1116,799],{"class":171},[154,1118,175],{"class":160},[154,1120,1121],{"class":264}," \"hello\"",[154,1123,185],{"class":164},[154,1125,1126,1128,1131,1133,1136,1138,1140,1142,1145,1147,1150],{"class":156,"line":188},[154,1127,161],{"class":160},[154,1129,1130],{"class":164}," owned",[154,1132,168],{"class":160},[154,1134,1135],{"class":171}," String",[154,1137,175],{"class":160},[154,1139,1135],{"class":171},[154,1141,536],{"class":160},[154,1143,1144],{"class":171},"from",[154,1146,366],{"class":164},[154,1148,1149],{"class":264},"\"hello\"",[154,1151,821],{"class":164},[154,1153,1154,1156,1159,1161,1163,1166,1168,1170,1172,1175,1177],{"class":156,"line":208},[154,1155,161],{"class":160},[154,1157,1158],{"class":164}," bytes",[154,1160,168],{"class":160},[154,1162,1014],{"class":160},[154,1164,1165],{"class":164},"[",[154,1167,57],{"class":171},[154,1169,945],{"class":164},[154,1171,216],{"class":160},[154,1173,1174],{"class":264}," b\"hello\"",[154,1176,268],{"class":164},[154,1178,1179],{"class":271},"\u002F\u002F &[u8; 5] \u002F &[u8]\n",[14,1181,1183],{"id":1182},"function-types","Function Types",[142,1185,1186],{"language":144},[146,1187,1189],{"className":148,"code":1188,"language":144,"meta":150,"style":150},"fn add(a: i32, b: i32) -> i32 { a + b }\nlet f: fn(i32, i32) -> i32 = add;\n",[51,1190,1191,1229],{"__ignoreMap":150},[154,1192,1193,1196,1199,1202,1204,1206,1209,1211,1213,1215,1218,1220,1223,1226],{"class":156,"line":157},[154,1194,1195],{"class":160},"fn",[154,1197,1198],{"class":171}," add",[154,1200,1201],{"class":164},"(a",[154,1203,168],{"class":160},[154,1205,172],{"class":171},[154,1207,1208],{"class":164},", b",[154,1210,168],{"class":160},[154,1212,172],{"class":171},[154,1214,802],{"class":164},[154,1216,1217],{"class":160},"->",[154,1219,172],{"class":171},[154,1221,1222],{"class":164}," { a ",[154,1224,1225],{"class":160},"+",[154,1227,1228],{"class":164}," b }\n",[154,1230,1231,1233,1236,1238,1241,1243,1245,1247,1249,1251,1253,1255,1257],{"class":156,"line":188},[154,1232,161],{"class":160},[154,1234,1235],{"class":164}," f",[154,1237,168],{"class":160},[154,1239,1240],{"class":171}," fn",[154,1242,366],{"class":164},[154,1244,85],{"class":171},[154,1246,321],{"class":164},[154,1248,85],{"class":171},[154,1250,802],{"class":164},[154,1252,1217],{"class":160},[154,1254,172],{"class":171},[154,1256,175],{"class":160},[154,1258,1259],{"class":164}," add;\n",[462,1261,1262,1263,1266,1267,1270,1271,1274],{},"Function pointers (",[51,1264,1265],{},"fn(...) -> ...",") are zero-sized, ",[51,1268,1269],{},"Copy",", and implement ",[51,1272,1273],{},"Fn",". Closures have unnameable types (see Closures chapter).",[14,1276,1278,1279,654],{"id":1277},"never-type","Never Type (",[51,1280,1281],{},"!",[462,1283,1284,1286,1287,321,1290,321,1293,1296,1297,1299],{},[51,1285,1281],{}," is the never type (diverges). Functions like ",[51,1288,1289],{},"panic!",[51,1291,1292],{},"loop {}",[51,1294,1295],{},"std::process::exit"," return ",[51,1298,1281],{},". It coerces to any type:",[142,1301,1302],{"language":144},[146,1303,1305],{"className":148,"code":1304,"language":144,"meta":150,"style":150},"let x: i32 = match opt {\n    Some(v) => v,\n    None => panic!(\"missing\"),   \u002F\u002F ! coerces to i32\n};\n",[51,1306,1307,1326,1340,1362],{"__ignoreMap":150},[154,1308,1309,1311,1314,1316,1318,1320,1323],{"class":156,"line":157},[154,1310,161],{"class":160},[154,1312,1313],{"class":164}," x",[154,1315,168],{"class":160},[154,1317,172],{"class":171},[154,1319,175],{"class":160},[154,1321,1322],{"class":160}," match",[154,1324,1325],{"class":164}," opt {\n",[154,1327,1328,1331,1334,1337],{"class":156,"line":188},[154,1329,1330],{"class":171},"    Some",[154,1332,1333],{"class":164},"(v) ",[154,1335,1336],{"class":160},"=>",[154,1338,1339],{"class":164}," v,\n",[154,1341,1342,1345,1348,1351,1353,1356,1359],{"class":156,"line":208},[154,1343,1344],{"class":171},"    None",[154,1346,1347],{"class":160}," =>",[154,1349,1350],{"class":171}," panic!",[154,1352,366],{"class":164},[154,1354,1355],{"class":264},"\"missing\"",[154,1357,1358],{"class":164},"),   ",[154,1360,1361],{"class":271},"\u002F\u002F ! coerces to i32\n",[154,1363,1364],{"class":156,"line":224},[154,1365,1366],{"class":164},"};\n",[14,1368,1370],{"id":1369},"type-aliases","Type Aliases",[142,1372,1373],{"language":144},[146,1374,1376],{"className":148,"code":1375,"language":144,"meta":150,"style":150},"type Kilometers = i32;\ntype IntPair = (i32, i32);\n",[51,1377,1378,1392],{"__ignoreMap":150},[154,1379,1380,1383,1386,1388,1390],{"class":156,"line":157},[154,1381,1382],{"class":160},"type",[154,1384,1385],{"class":171}," Kilometers",[154,1387,175],{"class":160},[154,1389,172],{"class":171},[154,1391,185],{"class":164},[154,1393,1394,1396,1399,1401,1403,1405,1407,1409],{"class":156,"line":188},[154,1395,1382],{"class":160},[154,1397,1398],{"class":171}," IntPair",[154,1400,175],{"class":160},[154,1402,785],{"class":164},[154,1404,85],{"class":171},[154,1406,321],{"class":164},[154,1408,85],{"class":171},[154,1410,821],{"class":164},[462,1412,1413],{},"Aliases are purely nominal — no new type, no methods, just a shorthand.",[14,1415,1417],{"id":1416},"newtype-pattern-real-distinct-type","Newtype Pattern (real distinct type)",[142,1419,1420],{"language":144},[146,1421,1423],{"className":148,"code":1422,"language":144,"meta":150,"style":150},"struct Kilometers(i32);\nstruct Miles(i32);\n\u002F\u002F Kilometers and Miles are different types — no accidental mixing\n",[51,1424,1425,1438,1451],{"__ignoreMap":150},[154,1426,1427,1430,1432,1434,1436],{"class":156,"line":157},[154,1428,1429],{"class":160},"struct",[154,1431,1385],{"class":171},[154,1433,366],{"class":164},[154,1435,85],{"class":171},[154,1437,821],{"class":164},[154,1439,1440,1442,1445,1447,1449],{"class":156,"line":188},[154,1441,1429],{"class":160},[154,1443,1444],{"class":171}," Miles",[154,1446,366],{"class":164},[154,1448,85],{"class":171},[154,1450,821],{"class":164},[154,1452,1453],{"class":156,"line":208},[154,1454,1455],{"class":271},"\u002F\u002F Kilometers and Miles are different types — no accidental mixing\n",[462,1457,1458],{},"This is the idiomatic way to prevent unit confusion.",[14,1460,1462,1463,654],{"id":1461},"casting-as","Casting (",[51,1464,636],{},[462,1466,1467,1469],{},[51,1468,636],{}," is a coarse numeric conversion (truncates, may wrap):",[142,1471,1472],{"language":144},[146,1473,1475],{"className":148,"code":1474,"language":144,"meta":150,"style":150},"let a = 1_000_000_000u32 as u8;     \u002F\u002F truncates -> 192 (low byte)\nlet f = 3.9_f32 as i32;             \u002F\u002F truncates toward zero -> 3\nlet b = true as u8;                 \u002F\u002F 1\nlet p = 42 as *const i32;\n",[51,1476,1477,1502,1525,1547],{"__ignoreMap":150},[154,1478,1479,1481,1484,1486,1489,1491,1494,1496,1499],{"class":156,"line":157},[154,1480,161],{"class":160},[154,1482,1483],{"class":164}," a ",[154,1485,216],{"class":160},[154,1487,1488],{"class":181}," 1_000_000_000",[154,1490,88],{"class":171},[154,1492,1493],{"class":160}," as",[154,1495,198],{"class":171},[154,1497,1498],{"class":164},";     ",[154,1500,1501],{"class":271},"\u002F\u002F truncates -> 192 (low byte)\n",[154,1503,1504,1506,1508,1510,1513,1515,1517,1519,1522],{"class":156,"line":188},[154,1505,161],{"class":160},[154,1507,492],{"class":164},[154,1509,216],{"class":160},[154,1511,1512],{"class":181}," 3.9_",[154,1514,466],{"class":171},[154,1516,1493],{"class":160},[154,1518,172],{"class":171},[154,1520,1521],{"class":164},";             ",[154,1523,1524],{"class":271},"\u002F\u002F truncates toward zero -> 3\n",[154,1526,1527,1529,1532,1534,1537,1539,1541,1544],{"class":156,"line":208},[154,1528,161],{"class":160},[154,1530,1531],{"class":164}," b ",[154,1533,216],{"class":160},[154,1535,1536],{"class":181}," true",[154,1538,1493],{"class":160},[154,1540,198],{"class":171},[154,1542,1543],{"class":164},";                 ",[154,1545,1546],{"class":271},"\u002F\u002F 1\n",[154,1548,1549,1551,1554,1556,1559,1561,1564,1566],{"class":156,"line":224},[154,1550,161],{"class":160},[154,1552,1553],{"class":164}," p ",[154,1555,216],{"class":160},[154,1557,1558],{"class":181}," 42",[154,1560,1493],{"class":160},[154,1562,1563],{"class":160}," *const",[154,1565,172],{"class":171},[154,1567,185],{"class":164},[462,1569,1570,1571,474,1574,474,1577,474,1580,1583],{},"Use ",[51,1572,1573],{},"From",[51,1575,1576],{},"Into",[51,1578,1579],{},"TryFrom",[51,1581,1582],{},"TryInto"," for safe, explicit conversions.",[14,1585,1587],{"id":1586},"edge-cases","Edge Cases",[298,1589,1590,1607,1617,1638,1663,1680,1694,1707,1718],{},[301,1591,1592,1595,1596,1599,1600,1602,1603,1606],{},[305,1593,1594],{},"Default int",": ",[51,1597,1598],{},"let x = 1;"," → ",[51,1601,85],{},". In a ",[51,1604,1605],{},"match"," arm that returns an integer, the inferred type can leak across arms.",[301,1608,1609,1595,1612,1599,1615,339],{},[305,1610,1611],{},"Default float",[51,1613,1614],{},"let x = 1.0;",[51,1616,469],{},[301,1618,1619,1595,1622,1625,1626,1628,1629,1631,1632,325,1635,1637],{},[305,1620,1621],{},"Char to int",[51,1623,1624],{},"'A' as u32"," → 65 (Unicode code point). ",[51,1627,88],{}," to ",[51,1630,653],{}," needs ",[51,1633,1634],{},"char::from_u32",[51,1636,328],{},", since not all u32 are valid chars).",[301,1639,1640,1595,1646,1649,1650,1653,1654,1656,1657,1659,1660,1662],{},[305,1641,1642,1645],{},[51,1643,1644],{},"Vec"," of arrays",[51,1647,1648],{},"vec![[0; 3]; 4]"," works; ",[51,1651,1652],{},"vec![[1,2,3]; 4]"," requires ",[51,1655,1269],{}," (arrays of ",[51,1658,1269],{}," are ",[51,1661,1269],{},").",[301,1664,1665,1595,1668,321,1670,321,1673,1675,1676,1679],{},[305,1666,1667],{},"Zero-sized types (ZSTs)",[51,1669,888],{},[51,1671,1672],{},"struct Empty;",[51,1674,1672],{}," occupy 0 bytes; ",[51,1677,1678],{},"Vec\u003C()>"," is effectively a counter.",[301,1681,1682,1688,1689,474,1691,1693],{},[305,1683,1684,474,1686],{},[51,1685,131],{},[51,1687,134],{}," change with platform — don't rely on width in serialized data; use ",[51,1690,101],{},[51,1692,104],{}," explicitly.",[301,1695,1696,1595,1699,1702,1703,1706],{},[305,1697,1698],{},"Integer literals overflow in source",[51,1700,1701],{},"let x: u8 = 255;"," is fine, but ",[51,1704,1705],{},"let x: u8 = 256;"," is a compile error.",[301,1708,1709,1714,1715,1717],{},[305,1710,1711,1713],{},[51,1712,653],{}," size",": always 4 bytes even for ASCII; for ASCII use ",[51,1716,57],{}," if memory matters.",[301,1719,1720,1728],{},[305,1721,1722,1724,1725],{},[51,1723,636],{}," with ",[51,1726,1727],{},"f64::NAN as i32"," → 0 (platform-defined, not reliable).",[14,1730,1732],{"id":1731},"summary","Summary",[462,1734,1735,1736,1738],{},"You know the primitives, integers\u002Foverflow, floats\u002FNaN, tuples, arrays, and the distinction between ",[51,1737,653],{}," and bytes. Next: functions.",[1740,1741,1742],"style",{},"html pre.shiki code .svdQ7, html code.shiki .svdQ7{--shiki-default:#D73A49;--shiki-github-dark:#F97583}html pre.shiki code .ssxIu, html code.shiki .ssxIu{--shiki-default:#24292E;--shiki-github-dark:#E1E4E8}html pre.shiki code .sIsaT, html code.shiki .sIsaT{--shiki-default:#6F42C1;--shiki-github-dark:#B392F0}html pre.shiki code .snvgF, html code.shiki .snvgF{--shiki-default:#005CC5;--shiki-github-dark:#79B8FF}html pre.shiki code .sJ6F3, html code.shiki .sJ6F3{--shiki-default:#032F62;--shiki-github-dark:#9ECBFF}html pre.shiki code .sdCPZ, html code.shiki .sdCPZ{--shiki-default:#6A737D;--shiki-github-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .github-dark .shiki span {color: var(--shiki-github-dark);background: var(--shiki-github-dark-bg);font-style: var(--shiki-github-dark-font-style);font-weight: var(--shiki-github-dark-font-weight);text-decoration: var(--shiki-github-dark-text-decoration);}html.github-dark .shiki span {color: var(--shiki-github-dark);background: var(--shiki-github-dark-bg);font-style: var(--shiki-github-dark-font-style);font-weight: var(--shiki-github-dark-font-weight);text-decoration: var(--shiki-github-dark-text-decoration);}",{"title":150,"searchDepth":188,"depth":188,"links":1744},[1745,1752,1758,1759,1760,1762,1763,1764,1766,1767],{"id":16,"depth":188,"text":17,"children":1746},[1747,1748,1749,1750],{"id":21,"depth":208,"text":22},{"id":459,"depth":208,"text":460},{"id":619,"depth":208,"text":620},{"id":649,"depth":208,"text":1751},"Characters (char)",{"id":758,"depth":188,"text":759,"children":1753},[1754,1755,1756],{"id":762,"depth":208,"text":763},{"id":911,"depth":208,"text":912},{"id":1061,"depth":208,"text":1757},"Slices (&[T], &mut [T])",{"id":1074,"depth":188,"text":1075},{"id":1182,"depth":188,"text":1183},{"id":1277,"depth":188,"text":1761},"Never Type (!)",{"id":1369,"depth":188,"text":1370},{"id":1416,"depth":188,"text":1417},{"id":1461,"depth":188,"text":1765},"Casting (as)",{"id":1586,"depth":188,"text":1587},{"id":1731,"depth":188,"text":1732},"md",{},true,"\u002Frust\u002F04-data-types",{"title":5,"description":150},"rust\u002F04-data-types","rU6wbKjDsgizdyW-X38tHPc9iSnvWtPaqVXv6PG9Ri4",1785944093191]