lexical_util/
feature_format.rs1#![cfg(feature = "format")]
18
19use crate::error::Error;
697use crate::format_builder::NumberFormatBuilder;
698use crate::format_flags as flags;
699use core::num;
700
701use static_assertions::const_assert;
702
703macro_rules! from_flag {
705 ($format:ident, $flag:ident) => {{
706 $format & flags::$flag != 0
707 }};
708}
709
710#[doc(hidden)]
715pub struct NumberFormat<const FORMAT: u128>;
716
717#[rustfmt::skip]
718impl<const FORMAT: u128> NumberFormat<FORMAT> {
719 pub const fn new() -> Self {
723 Self {}
724 }
725
726 pub const fn is_valid(&self) -> bool {
730 self.error().is_success()
731 }
732
733 #[allow(clippy::if_same_then_else)]
735 pub const fn error(&self) -> Error {
736 if !flags::is_valid_radix(self.mantissa_radix()) {
737 Error::InvalidMantissaRadix
738 } else if !flags::is_valid_radix(self.exponent_base()) {
739 Error::InvalidExponentBase
740 } else if !flags::is_valid_radix(self.exponent_radix()) {
741 Error::InvalidExponentRadix
742 } else if !flags::is_valid_digit_separator(FORMAT) {
743 Error::InvalidDigitSeparator
744 } else if !flags::is_valid_base_prefix(FORMAT) {
745 Error::InvalidBasePrefix
746 } else if !flags::is_valid_base_suffix(FORMAT) {
747 Error::InvalidBaseSuffix
748 } else if !flags::is_valid_punctuation(FORMAT) {
749 Error::InvalidPunctuation
750 } else if !flags::is_valid_exponent_flags(FORMAT) {
751 Error::InvalidExponentFlags
752 } else if self.no_positive_mantissa_sign() && self.required_mantissa_sign() {
753 Error::InvalidMantissaSign
754 } else if self.no_positive_exponent_sign() && self.required_exponent_sign() {
755 Error::InvalidExponentSign
756 } else if self.no_special() && self.case_sensitive_special() {
757 Error::InvalidSpecial
758 } else if self.no_special() && self.special_digit_separator() {
759 Error::InvalidSpecial
760 } else if self.integer_digit_separator_flags() == flags::INTEGER_CONSECUTIVE_DIGIT_SEPARATOR {
761 Error::InvalidConsecutiveIntegerDigitSeparator
762 } else if self.fraction_digit_separator_flags() == flags::FRACTION_CONSECUTIVE_DIGIT_SEPARATOR {
763 Error::InvalidConsecutiveFractionDigitSeparator
764 } else if self.exponent_digit_separator_flags() == flags::EXPONENT_CONSECUTIVE_DIGIT_SEPARATOR {
765 Error::InvalidConsecutiveExponentDigitSeparator
766 } else {
767 Error::Success
768 }
769 }
770
771 pub const REQUIRED_INTEGER_DIGITS: bool = from_flag!(FORMAT, REQUIRED_INTEGER_DIGITS);
775
776 #[inline(always)]
778 pub const fn required_integer_digits(&self) -> bool {
779 Self::REQUIRED_INTEGER_DIGITS
780 }
781
782 pub const REQUIRED_FRACTION_DIGITS: bool = from_flag!(FORMAT, REQUIRED_FRACTION_DIGITS);
784
785 #[inline(always)]
787 pub const fn required_fraction_digits(&self) -> bool {
788 Self::REQUIRED_FRACTION_DIGITS
789 }
790
791 pub const REQUIRED_EXPONENT_DIGITS: bool = from_flag!(FORMAT, REQUIRED_EXPONENT_DIGITS);
793
794 #[inline(always)]
796 pub const fn required_exponent_digits(&self) -> bool {
797 Self::REQUIRED_EXPONENT_DIGITS
798 }
799
800 pub const REQUIRED_MANTISSA_DIGITS: bool = from_flag!(FORMAT, REQUIRED_MANTISSA_DIGITS);
802
803 #[inline(always)]
805 pub const fn required_mantissa_digits(&self) -> bool {
806 Self::REQUIRED_MANTISSA_DIGITS
807 }
808
809 pub const REQUIRED_DIGITS: bool = from_flag!(FORMAT, REQUIRED_DIGITS);
811
812 #[inline(always)]
814 pub const fn required_digits(&self) -> bool {
815 Self::REQUIRED_DIGITS
816 }
817
818 pub const NO_POSITIVE_MANTISSA_SIGN: bool = from_flag!(FORMAT, NO_POSITIVE_MANTISSA_SIGN);
820
821 #[inline(always)]
823 pub const fn no_positive_mantissa_sign(&self) -> bool {
824 Self::NO_POSITIVE_MANTISSA_SIGN
825 }
826
827 pub const REQUIRED_MANTISSA_SIGN: bool = from_flag!(FORMAT, REQUIRED_MANTISSA_SIGN);
829
830 #[inline(always)]
832 pub const fn required_mantissa_sign(&self) -> bool {
833 Self::REQUIRED_MANTISSA_SIGN
834 }
835
836 pub const NO_EXPONENT_NOTATION: bool = from_flag!(FORMAT, NO_EXPONENT_NOTATION);
838
839 #[inline(always)]
841 pub const fn no_exponent_notation(&self) -> bool {
842 Self::NO_EXPONENT_NOTATION
843 }
844
845 pub const NO_POSITIVE_EXPONENT_SIGN: bool = from_flag!(FORMAT, NO_POSITIVE_EXPONENT_SIGN);
847
848 #[inline(always)]
850 pub const fn no_positive_exponent_sign(&self) -> bool {
851 Self::NO_POSITIVE_EXPONENT_SIGN
852 }
853
854 pub const REQUIRED_EXPONENT_SIGN: bool = from_flag!(FORMAT, REQUIRED_EXPONENT_SIGN);
856
857 #[inline(always)]
859 pub const fn required_exponent_sign(&self) -> bool {
860 Self::REQUIRED_EXPONENT_SIGN
861 }
862
863 pub const NO_EXPONENT_WITHOUT_FRACTION: bool = from_flag!(FORMAT, NO_EXPONENT_WITHOUT_FRACTION);
865
866 #[inline(always)]
868 pub const fn no_exponent_without_fraction(&self) -> bool {
869 Self::NO_EXPONENT_WITHOUT_FRACTION
870 }
871
872 pub const NO_SPECIAL: bool = from_flag!(FORMAT, NO_SPECIAL);
874
875 #[inline(always)]
877 pub const fn no_special(&self) -> bool {
878 Self::NO_SPECIAL
879 }
880
881 pub const CASE_SENSITIVE_SPECIAL: bool = from_flag!(FORMAT, CASE_SENSITIVE_SPECIAL);
883
884 #[inline(always)]
886 pub const fn case_sensitive_special(&self) -> bool {
887 Self::CASE_SENSITIVE_SPECIAL
888 }
889
890 pub const NO_INTEGER_LEADING_ZEROS: bool = from_flag!(FORMAT, NO_INTEGER_LEADING_ZEROS);
892
893 #[inline(always)]
895 pub const fn no_integer_leading_zeros(&self) -> bool {
896 Self::NO_INTEGER_LEADING_ZEROS
897 }
898
899 pub const NO_FLOAT_LEADING_ZEROS: bool = from_flag!(FORMAT, NO_FLOAT_LEADING_ZEROS);
901
902 #[inline(always)]
904 pub const fn no_float_leading_zeros(&self) -> bool {
905 Self::NO_FLOAT_LEADING_ZEROS
906 }
907
908 pub const REQUIRED_EXPONENT_NOTATION: bool = from_flag!(FORMAT, REQUIRED_EXPONENT_NOTATION);
910
911 #[inline(always)]
913 pub const fn required_exponent_notation(&self) -> bool {
914 Self::REQUIRED_EXPONENT_NOTATION
915 }
916
917 pub const CASE_SENSITIVE_EXPONENT: bool = from_flag!(FORMAT, CASE_SENSITIVE_EXPONENT);
919
920 #[inline(always)]
922 pub const fn case_sensitive_exponent(&self) -> bool {
923 Self::CASE_SENSITIVE_EXPONENT
924 }
925
926 pub const CASE_SENSITIVE_BASE_PREFIX: bool = from_flag!(FORMAT, CASE_SENSITIVE_BASE_PREFIX);
928
929 #[inline(always)]
931 pub const fn case_sensitive_base_prefix(&self) -> bool {
932 Self::CASE_SENSITIVE_BASE_PREFIX
933 }
934
935 pub const CASE_SENSITIVE_BASE_SUFFIX: bool = from_flag!(FORMAT, CASE_SENSITIVE_BASE_SUFFIX);
937
938 #[inline(always)]
940 pub const fn case_sensitive_base_suffix(&self) -> bool {
941 Self::CASE_SENSITIVE_BASE_SUFFIX
942 }
943
944 pub const INTEGER_INTERNAL_DIGIT_SEPARATOR: bool = from_flag!(FORMAT, INTEGER_INTERNAL_DIGIT_SEPARATOR);
948
949 #[inline(always)]
951 pub const fn integer_internal_digit_separator(&self) -> bool {
952 Self::INTEGER_INTERNAL_DIGIT_SEPARATOR
953 }
954
955 pub const FRACTION_INTERNAL_DIGIT_SEPARATOR: bool = from_flag!(FORMAT, FRACTION_INTERNAL_DIGIT_SEPARATOR);
957
958 #[inline(always)]
960 pub const fn fraction_internal_digit_separator(&self) -> bool {
961 Self::FRACTION_INTERNAL_DIGIT_SEPARATOR
962 }
963
964 pub const EXPONENT_INTERNAL_DIGIT_SEPARATOR: bool = from_flag!(FORMAT, EXPONENT_INTERNAL_DIGIT_SEPARATOR);
966
967 #[inline(always)]
969 pub const fn exponent_internal_digit_separator(&self) -> bool {
970 Self::EXPONENT_INTERNAL_DIGIT_SEPARATOR
971 }
972
973 pub const INTERNAL_DIGIT_SEPARATOR: bool = from_flag!(FORMAT, INTERNAL_DIGIT_SEPARATOR);
975
976 #[inline(always)]
978 pub const fn internal_digit_separator(&self) -> bool {
979 Self::INTERNAL_DIGIT_SEPARATOR
980 }
981
982 pub const INTEGER_LEADING_DIGIT_SEPARATOR: bool = from_flag!(FORMAT, INTEGER_LEADING_DIGIT_SEPARATOR);
984
985 #[inline(always)]
987 pub const fn integer_leading_digit_separator(&self) -> bool {
988 Self::INTEGER_LEADING_DIGIT_SEPARATOR
989 }
990
991 pub const FRACTION_LEADING_DIGIT_SEPARATOR: bool = from_flag!(FORMAT, FRACTION_LEADING_DIGIT_SEPARATOR);
993
994 #[inline(always)]
996 pub const fn fraction_leading_digit_separator(&self) -> bool {
997 Self::FRACTION_LEADING_DIGIT_SEPARATOR
998 }
999
1000 pub const EXPONENT_LEADING_DIGIT_SEPARATOR: bool = from_flag!(FORMAT, EXPONENT_LEADING_DIGIT_SEPARATOR);
1002
1003 #[inline(always)]
1005 pub const fn exponent_leading_digit_separator(&self) -> bool {
1006 Self::EXPONENT_LEADING_DIGIT_SEPARATOR
1007 }
1008
1009 pub const LEADING_DIGIT_SEPARATOR: bool = from_flag!(FORMAT, LEADING_DIGIT_SEPARATOR);
1011
1012 #[inline(always)]
1014 pub const fn leading_digit_separator(&self) -> bool {
1015 Self::LEADING_DIGIT_SEPARATOR
1016 }
1017
1018 pub const INTEGER_TRAILING_DIGIT_SEPARATOR: bool = from_flag!(FORMAT, INTEGER_TRAILING_DIGIT_SEPARATOR);
1020
1021 #[inline(always)]
1023 pub const fn integer_trailing_digit_separator(&self) -> bool {
1024 Self::INTEGER_TRAILING_DIGIT_SEPARATOR
1025 }
1026
1027 pub const FRACTION_TRAILING_DIGIT_SEPARATOR: bool = from_flag!(FORMAT, FRACTION_TRAILING_DIGIT_SEPARATOR);
1029
1030 #[inline(always)]
1032 pub const fn fraction_trailing_digit_separator(&self) -> bool {
1033 Self::FRACTION_TRAILING_DIGIT_SEPARATOR
1034 }
1035
1036 pub const EXPONENT_TRAILING_DIGIT_SEPARATOR: bool = from_flag!(FORMAT, EXPONENT_TRAILING_DIGIT_SEPARATOR);
1038
1039 #[inline(always)]
1041 pub const fn exponent_trailing_digit_separator(&self) -> bool {
1042 Self::EXPONENT_TRAILING_DIGIT_SEPARATOR
1043 }
1044
1045 pub const TRAILING_DIGIT_SEPARATOR: bool = from_flag!(FORMAT, TRAILING_DIGIT_SEPARATOR);
1047
1048 #[inline(always)]
1050 pub const fn trailing_digit_separator(&self) -> bool {
1051 Self::TRAILING_DIGIT_SEPARATOR
1052 }
1053
1054 pub const INTEGER_CONSECUTIVE_DIGIT_SEPARATOR: bool = from_flag!(FORMAT, INTEGER_CONSECUTIVE_DIGIT_SEPARATOR);
1056
1057 #[inline(always)]
1059 pub const fn integer_consecutive_digit_separator(&self) -> bool {
1060 Self::INTEGER_CONSECUTIVE_DIGIT_SEPARATOR
1061 }
1062
1063 pub const FRACTION_CONSECUTIVE_DIGIT_SEPARATOR: bool = from_flag!(FORMAT, FRACTION_CONSECUTIVE_DIGIT_SEPARATOR);
1065
1066 #[inline(always)]
1068 pub const fn fraction_consecutive_digit_separator(&self) -> bool {
1069 Self::FRACTION_CONSECUTIVE_DIGIT_SEPARATOR
1070 }
1071
1072 pub const EXPONENT_CONSECUTIVE_DIGIT_SEPARATOR: bool = from_flag!(FORMAT, EXPONENT_CONSECUTIVE_DIGIT_SEPARATOR);
1074
1075 #[inline(always)]
1077 pub const fn exponent_consecutive_digit_separator(&self) -> bool {
1078 Self::EXPONENT_CONSECUTIVE_DIGIT_SEPARATOR
1079 }
1080
1081 pub const CONSECUTIVE_DIGIT_SEPARATOR: bool = from_flag!(FORMAT, CONSECUTIVE_DIGIT_SEPARATOR);
1083
1084 #[inline(always)]
1086 pub const fn consecutive_digit_separator(&self) -> bool {
1087 Self::CONSECUTIVE_DIGIT_SEPARATOR
1088 }
1089
1090 pub const SPECIAL_DIGIT_SEPARATOR: bool = from_flag!(FORMAT, SPECIAL_DIGIT_SEPARATOR);
1092
1093 #[inline(always)]
1095 pub const fn special_digit_separator(&self) -> bool {
1096 Self::SPECIAL_DIGIT_SEPARATOR
1097 }
1098
1099 pub const DIGIT_SEPARATOR: u8 = flags::digit_separator(FORMAT);
1103
1104 #[inline(always)]
1108 pub const fn digit_separator(&self) -> u8 {
1109 Self::DIGIT_SEPARATOR
1110 }
1111
1112 pub const BASE_PREFIX: u8 = flags::base_prefix(FORMAT);
1114
1115 #[inline(always)]
1122 pub const fn base_prefix(&self) -> u8 {
1123 Self::BASE_PREFIX
1124 }
1125
1126 pub const BASE_SUFFIX: u8 = flags::base_suffix(FORMAT);
1128
1129 #[inline(always)]
1136 pub const fn base_suffix(&self) -> u8 {
1137 Self::BASE_SUFFIX
1138 }
1139
1140 pub const MANTISSA_RADIX: u32 = flags::mantissa_radix(FORMAT);
1144
1145 #[inline(always)]
1147 pub const fn mantissa_radix(&self) -> u32 {
1148 Self::MANTISSA_RADIX
1149 }
1150
1151 pub const RADIX: u32 = Self::MANTISSA_RADIX;
1154
1155 #[inline(always)]
1157 pub const fn radix(&self) -> u32 {
1158 Self::RADIX
1159 }
1160
1161 pub const EXPONENT_BASE: u32 = flags::exponent_base(FORMAT);
1163
1164 #[inline(always)]
1169 pub const fn exponent_base(&self) -> u32 {
1170 Self::EXPONENT_BASE
1171 }
1172
1173 pub const EXPONENT_RADIX: u32 = flags::exponent_radix(FORMAT);
1175
1176 #[inline(always)]
1180 pub const fn exponent_radix(&self) -> u32 {
1181 Self::EXPONENT_RADIX
1182 }
1183
1184 #[inline(always)]
1188 pub const fn flags(&self) -> u128 {
1189 FORMAT & flags::FLAG_MASK
1190 }
1191
1192 #[inline(always)]
1194 pub const fn interface_flags(&self) -> u128 {
1195 FORMAT & flags::INTERFACE_FLAG_MASK
1196 }
1197
1198 #[inline(always)]
1200 pub const fn digit_separator_flags(&self) -> u128 {
1201 FORMAT & flags::DIGIT_SEPARATOR_FLAG_MASK
1202 }
1203
1204 #[inline(always)]
1206 pub const fn exponent_flags(&self) -> u128 {
1207 FORMAT & flags::EXPONENT_FLAG_MASK
1208 }
1209
1210 #[inline(always)]
1212 pub const fn integer_digit_separator_flags(&self) -> u128 {
1213 FORMAT & flags::INTEGER_DIGIT_SEPARATOR_FLAG_MASK
1214 }
1215
1216 #[inline(always)]
1218 pub const fn fraction_digit_separator_flags(&self) -> u128 {
1219 FORMAT & flags::FRACTION_DIGIT_SEPARATOR_FLAG_MASK
1220 }
1221
1222 #[inline(always)]
1224 pub const fn exponent_digit_separator_flags(&self) -> u128 {
1225 FORMAT & flags::EXPONENT_DIGIT_SEPARATOR_FLAG_MASK
1226 }
1227
1228 #[inline]
1232 pub const fn builder() -> NumberFormatBuilder {
1233 NumberFormatBuilder::new()
1234 }
1235
1236 #[inline]
1238 pub const fn rebuild() -> NumberFormatBuilder {
1239 NumberFormatBuilder::rebuild(FORMAT)
1240 }
1241}
1242
1243#[rustfmt::skip]
1258pub const RUST_LITERAL: u128 = NumberFormatBuilder::new()
1259 .digit_separator(num::NonZeroU8::new(b'_'))
1260 .required_digits(true)
1261 .no_positive_mantissa_sign(true)
1262 .no_special(true)
1263 .internal_digit_separator(true)
1264 .trailing_digit_separator(true)
1265 .consecutive_digit_separator(true)
1266 .build();
1267
1268const_assert!(NumberFormat::<{ RUST_LITERAL }> {}.is_valid());
1269
1270#[rustfmt::skip]
1273pub const RUST_STRING: u128 = NumberFormatBuilder::new().build();
1274const_assert!(NumberFormat::<{ RUST_STRING }> {}.is_valid());
1275
1276pub const PYTHON_LITERAL: u128 = PYTHON3_LITERAL;
1278
1279pub const PYTHON_STRING: u128 = PYTHON3_STRING;
1281
1282pub const PYTHON3_LITERAL: u128 = PYTHON36_LITERAL;
1284
1285#[rustfmt::skip]
1288pub const PYTHON3_STRING: u128 = NumberFormatBuilder::new().build();
1289const_assert!(NumberFormat::<{ PYTHON3_STRING }> {}.is_valid());
1290
1291#[rustfmt::skip]
1294pub const PYTHON36_LITERAL: u128 = NumberFormatBuilder::new()
1295 .digit_separator(num::NonZeroU8::new(b'_'))
1296 .no_special(true)
1297 .no_integer_leading_zeros(true)
1298 .internal_digit_separator(true)
1299 .build();
1300
1301const_assert!(NumberFormat::<{ PYTHON36_LITERAL }> {}.is_valid());
1302
1303#[rustfmt::skip]
1306pub const PYTHON35_LITERAL: u128 = NumberFormatBuilder::new()
1307 .no_special(true)
1308 .no_integer_leading_zeros(true)
1309 .build();
1310
1311const_assert!(NumberFormat::<{ PYTHON35_LITERAL }> {}.is_valid());
1312
1313#[rustfmt::skip]
1316pub const PYTHON2_LITERAL: u128 = NumberFormatBuilder::new()
1317 .no_special(true)
1318 .build();
1319
1320const_assert!(NumberFormat::<{ PYTHON2_LITERAL }> {}.is_valid());
1321
1322#[rustfmt::skip]
1325pub const PYTHON2_STRING: u128 = NumberFormatBuilder::new().build();
1326const_assert!(NumberFormat::<{ PYTHON2_STRING }> {}.is_valid());
1327
1328pub const CXX_LITERAL: u128 = CXX20_LITERAL;
1330
1331pub const CXX_STRING: u128 = CXX20_STRING;
1333
1334#[cfg(feature = "power-of-two")]
1336pub const CXX_HEX_LITERAL: u128 = CXX20_HEX_LITERAL;
1337
1338#[cfg(feature = "power-of-two")]
1340pub const CXX_HEX_STRING: u128 = CXX20_HEX_STRING;
1341
1342#[rustfmt::skip]
1345pub const CXX20_LITERAL: u128 = NumberFormatBuilder::new()
1346 .digit_separator(num::NonZeroU8::new(b'\''))
1347 .case_sensitive_special(true)
1348 .internal_digit_separator(true)
1349 .build();
1350
1351const_assert!(NumberFormat::<{ CXX20_LITERAL }> {}.is_valid());
1352
1353#[rustfmt::skip]
1356pub const CXX20_STRING: u128 = NumberFormatBuilder::new().build();
1357const_assert!(NumberFormat::<{ CXX20_STRING }> {}.is_valid());
1358
1359#[rustfmt::skip]
1362#[cfg(feature = "power-of-two")]
1363pub const CXX20_HEX_LITERAL: u128 = NumberFormatBuilder::new()
1364 .required_exponent_notation(true)
1365 .digit_separator(num::NonZeroU8::new(b'\''))
1366 .mantissa_radix(16)
1367 .exponent_base(num::NonZeroU8::new(2))
1368 .exponent_radix(num::NonZeroU8::new(10))
1369 .case_sensitive_special(true)
1370 .internal_digit_separator(true)
1371 .build();
1372
1373#[cfg(feature = "power-of-two")]
1374const_assert!(NumberFormat::<{ CXX20_HEX_LITERAL }> {}.is_valid());
1375
1376#[rustfmt::skip]
1379#[cfg(feature = "power-of-two")]
1380pub const CXX20_HEX_STRING: u128 = NumberFormatBuilder::new()
1381 .mantissa_radix(16)
1382 .exponent_base(num::NonZeroU8::new(2))
1383 .exponent_radix(num::NonZeroU8::new(10))
1384 .build();
1385
1386#[cfg(feature = "power-of-two")]
1387const_assert!(NumberFormat::<{ CXX20_HEX_STRING }> {}.is_valid());
1388
1389#[rustfmt::skip]
1392pub const CXX17_LITERAL: u128 = NumberFormatBuilder::new()
1393 .digit_separator(num::NonZeroU8::new(b'\''))
1394 .case_sensitive_special(true)
1395 .internal_digit_separator(true)
1396 .build();
1397
1398const_assert!(NumberFormat::<{ CXX17_LITERAL }> {}.is_valid());
1399
1400#[rustfmt::skip]
1403pub const CXX17_STRING: u128 = NumberFormatBuilder::new().build();
1404const_assert!(NumberFormat::<{ CXX17_STRING }> {}.is_valid());
1405
1406#[rustfmt::skip]
1409#[cfg(feature = "power-of-two")]
1410pub const CXX17_HEX_LITERAL: u128 = NumberFormatBuilder::new()
1411 .required_exponent_notation(true)
1412 .digit_separator(num::NonZeroU8::new(b'\''))
1413 .mantissa_radix(16)
1414 .exponent_base(num::NonZeroU8::new(2))
1415 .exponent_radix(num::NonZeroU8::new(10))
1416 .case_sensitive_special(true)
1417 .internal_digit_separator(true)
1418 .build();
1419
1420#[cfg(feature = "power-of-two")]
1421const_assert!(NumberFormat::<{ CXX17_HEX_LITERAL }> {}.is_valid());
1422
1423#[rustfmt::skip]
1426#[cfg(feature = "power-of-two")]
1427pub const CXX17_HEX_STRING: u128 = NumberFormatBuilder::new()
1428 .mantissa_radix(16)
1429 .exponent_base(num::NonZeroU8::new(2))
1430 .exponent_radix(num::NonZeroU8::new(10))
1431 .build();
1432
1433#[cfg(feature = "power-of-two")]
1434const_assert!(NumberFormat::<{ CXX17_HEX_STRING }> {}.is_valid());
1435
1436#[rustfmt::skip]
1439pub const CXX14_LITERAL: u128 = NumberFormatBuilder::new()
1440 .digit_separator(num::NonZeroU8::new(b'\''))
1441 .case_sensitive_special(true)
1442 .internal_digit_separator(true)
1443 .build();
1444
1445const_assert!(NumberFormat::<{ CXX14_LITERAL }> {}.is_valid());
1446
1447#[rustfmt::skip]
1450pub const CXX14_STRING: u128 = NumberFormatBuilder::new().build();
1451const_assert!(NumberFormat::<{ CXX14_STRING }> {}.is_valid());
1452
1453#[rustfmt::skip]
1456#[cfg(feature = "power-of-two")]
1457pub const CXX14_HEX_STRING: u128 = NumberFormatBuilder::new()
1458 .mantissa_radix(16)
1459 .exponent_base(num::NonZeroU8::new(2))
1460 .exponent_radix(num::NonZeroU8::new(10))
1461 .build();
1462
1463#[cfg(feature = "power-of-two")]
1464const_assert!(NumberFormat::<{ CXX14_HEX_STRING }> {}.is_valid());
1465
1466#[rustfmt::skip]
1469pub const CXX11_LITERAL: u128 = NumberFormatBuilder::new()
1470 .case_sensitive_special(true)
1471 .build();
1472
1473const_assert!(NumberFormat::<{ CXX11_LITERAL }> {}.is_valid());
1474
1475#[rustfmt::skip]
1478pub const CXX11_STRING: u128 = NumberFormatBuilder::new().build();
1479const_assert!(NumberFormat::<{ CXX11_STRING }> {}.is_valid());
1480
1481#[rustfmt::skip]
1484#[cfg(feature = "power-of-two")]
1485pub const CXX11_HEX_STRING: u128 = NumberFormatBuilder::new()
1486 .mantissa_radix(16)
1487 .exponent_base(num::NonZeroU8::new(2))
1488 .exponent_radix(num::NonZeroU8::new(10))
1489 .build();
1490
1491#[cfg(feature = "power-of-two")]
1492const_assert!(NumberFormat::<{ CXX11_HEX_STRING }> {}.is_valid());
1493
1494#[rustfmt::skip]
1497pub const CXX03_LITERAL: u128 = NumberFormatBuilder::new()
1498 .case_sensitive_special(true)
1499 .build();
1500
1501const_assert!(NumberFormat::<{ CXX03_LITERAL }> {}.is_valid());
1502
1503#[rustfmt::skip]
1506pub const CXX03_STRING: u128 = NumberFormatBuilder::new().build();
1507const_assert!(NumberFormat::<{ CXX03_STRING }> {}.is_valid());
1508
1509#[rustfmt::skip]
1512pub const CXX98_LITERAL: u128 = NumberFormatBuilder::new()
1513 .case_sensitive_special(true)
1514 .build();
1515
1516const_assert!(NumberFormat::<{ CXX98_LITERAL }> {}.is_valid());
1517
1518#[rustfmt::skip]
1521pub const CXX98_STRING: u128 = NumberFormatBuilder::new().build();
1522const_assert!(NumberFormat::<{ CXX98_STRING }> {}.is_valid());
1523
1524pub const C_LITERAL: u128 = C18_LITERAL;
1526
1527pub const C_STRING: u128 = C18_STRING;
1529
1530#[cfg(feature = "power-of-two")]
1532pub const C_HEX_LITERAL: u128 = C18_HEX_LITERAL;
1533
1534#[cfg(feature = "power-of-two")]
1536pub const C_HEX_STRING: u128 = C18_HEX_STRING;
1537
1538#[rustfmt::skip]
1541pub const C18_LITERAL: u128 = NumberFormatBuilder::new()
1542 .case_sensitive_special(true)
1543 .build();
1544
1545const_assert!(NumberFormat::<{ C18_LITERAL }> {}.is_valid());
1546
1547#[rustfmt::skip]
1550pub const C18_STRING: u128 = NumberFormatBuilder::new().build();
1551const_assert!(NumberFormat::<{ C18_STRING }> {}.is_valid());
1552
1553#[rustfmt::skip]
1556#[cfg(feature = "power-of-two")]
1557pub const C18_HEX_LITERAL: u128 = NumberFormatBuilder::new()
1558 .case_sensitive_special(true)
1559 .required_exponent_notation(true)
1560 .mantissa_radix(16)
1561 .exponent_base(num::NonZeroU8::new(2))
1562 .exponent_radix(num::NonZeroU8::new(10))
1563 .build();
1564
1565#[cfg(feature = "power-of-two")]
1566const_assert!(NumberFormat::<{ C18_HEX_LITERAL }> {}.is_valid());
1567
1568#[rustfmt::skip]
1571#[cfg(feature = "power-of-two")]
1572pub const C18_HEX_STRING: u128 = NumberFormatBuilder::new()
1573 .mantissa_radix(16)
1574 .exponent_base(num::NonZeroU8::new(2))
1575 .exponent_radix(num::NonZeroU8::new(10))
1576 .build();
1577
1578#[cfg(feature = "power-of-two")]
1579const_assert!(NumberFormat::<{ C18_HEX_STRING }> {}.is_valid());
1580
1581#[rustfmt::skip]
1584pub const C11_LITERAL: u128 = NumberFormatBuilder::new()
1585 .case_sensitive_special(true)
1586 .build();
1587
1588const_assert!(NumberFormat::<{ C11_LITERAL }> {}.is_valid());
1589
1590#[rustfmt::skip]
1593pub const C11_STRING: u128 = NumberFormatBuilder::new().build();
1594const_assert!(NumberFormat::<{ C11_STRING }> {}.is_valid());
1595
1596#[rustfmt::skip]
1599#[cfg(feature = "power-of-two")]
1600pub const C11_HEX_LITERAL: u128 = NumberFormatBuilder::new()
1601 .case_sensitive_special(true)
1602 .required_exponent_notation(true)
1603 .mantissa_radix(16)
1604 .exponent_base(num::NonZeroU8::new(2))
1605 .exponent_radix(num::NonZeroU8::new(10))
1606 .build();
1607
1608#[cfg(feature = "power-of-two")]
1609const_assert!(NumberFormat::<{ C11_HEX_LITERAL }> {}.is_valid());
1610
1611#[rustfmt::skip]
1614#[cfg(feature = "power-of-two")]
1615pub const C11_HEX_STRING: u128 = NumberFormatBuilder::new()
1616 .mantissa_radix(16)
1617 .exponent_base(num::NonZeroU8::new(2))
1618 .exponent_radix(num::NonZeroU8::new(10))
1619 .build();
1620
1621#[cfg(feature = "power-of-two")]
1622const_assert!(NumberFormat::<{ C11_HEX_STRING }> {}.is_valid());
1623
1624#[rustfmt::skip]
1627pub const C99_LITERAL: u128 = NumberFormatBuilder::new()
1628 .case_sensitive_special(true)
1629 .build();
1630
1631const_assert!(NumberFormat::<{ C99_LITERAL }> {}.is_valid());
1632
1633#[rustfmt::skip]
1636pub const C99_STRING: u128 = NumberFormatBuilder::new().build();
1637const_assert!(NumberFormat::<{ C99_STRING }> {}.is_valid());
1638
1639#[rustfmt::skip]
1642#[cfg(feature = "power-of-two")]
1643pub const C99_HEX_LITERAL: u128 = NumberFormatBuilder::new()
1644 .case_sensitive_special(true)
1645 .required_exponent_notation(true)
1646 .mantissa_radix(16)
1647 .exponent_base(num::NonZeroU8::new(2))
1648 .exponent_radix(num::NonZeroU8::new(10))
1649 .build();
1650
1651#[cfg(feature = "power-of-two")]
1652const_assert!(NumberFormat::<{ C99_HEX_LITERAL }> {}.is_valid());
1653
1654#[rustfmt::skip]
1657#[cfg(feature = "power-of-two")]
1658pub const C99_HEX_STRING: u128 = NumberFormatBuilder::new()
1659 .mantissa_radix(16)
1660 .exponent_base(num::NonZeroU8::new(2))
1661 .exponent_radix(num::NonZeroU8::new(10))
1662 .build();
1663
1664#[cfg(feature = "power-of-two")]
1665const_assert!(NumberFormat::<{ C99_HEX_STRING }> {}.is_valid());
1666
1667#[rustfmt::skip]
1670pub const C90_LITERAL: u128 = NumberFormatBuilder::new()
1671 .no_special(true)
1672 .build();
1673
1674const_assert!(NumberFormat::<{ C90_LITERAL }> {}.is_valid());
1675
1676#[rustfmt::skip]
1679pub const C90_STRING: u128 = NumberFormatBuilder::new().build();
1680const_assert!(NumberFormat::<{ C90_STRING }> {}.is_valid());
1681
1682#[rustfmt::skip]
1685#[cfg(feature = "power-of-two")]
1686pub const C90_HEX_STRING: u128 = NumberFormatBuilder::new()
1687 .mantissa_radix(16)
1688 .exponent_base(num::NonZeroU8::new(2))
1689 .exponent_radix(num::NonZeroU8::new(10))
1690 .build();
1691
1692#[cfg(feature = "power-of-two")]
1693const_assert!(NumberFormat::<{ C90_HEX_STRING }> {}.is_valid());
1694
1695#[rustfmt::skip]
1698pub const C89_LITERAL: u128 = NumberFormatBuilder::new()
1699 .no_special(true)
1700 .build();
1701
1702const_assert!(NumberFormat::<{ C89_LITERAL }> {}.is_valid());
1703
1704#[rustfmt::skip]
1707pub const C89_STRING: u128 = NumberFormatBuilder::new().build();
1708const_assert!(NumberFormat::<{ C89_STRING }> {}.is_valid());
1709
1710#[rustfmt::skip]
1713#[cfg(feature = "power-of-two")]
1714pub const C89_HEX_STRING: u128 = NumberFormatBuilder::new()
1715 .mantissa_radix(16)
1716 .exponent_base(num::NonZeroU8::new(2))
1717 .exponent_radix(num::NonZeroU8::new(10))
1718 .build();
1719
1720#[cfg(feature = "power-of-two")]
1721const_assert!(NumberFormat::<{ C89_HEX_STRING }> {}.is_valid());
1722
1723#[rustfmt::skip]
1726pub const RUBY_LITERAL: u128 = NumberFormatBuilder::new()
1727 .digit_separator(num::NonZeroU8::new(b'_'))
1728 .required_digits(true)
1729 .no_special(true)
1730 .no_integer_leading_zeros(true)
1731 .no_float_leading_zeros(true)
1732 .internal_digit_separator(true)
1733 .build();
1734
1735const_assert!(NumberFormat::<{ RUBY_LITERAL }> {}.is_valid());
1736
1737#[rustfmt::skip]
1740#[cfg(feature = "power-of-two")]
1741pub const RUBY_OCTAL_LITERAL: u128 = NumberFormatBuilder::new()
1742 .digit_separator(num::NonZeroU8::new(b'_'))
1743 .mantissa_radix(8)
1744 .required_digits(true)
1745 .no_special(true)
1746 .internal_digit_separator(true)
1747 .build();
1748
1749#[cfg(feature = "power-of-two")]
1750const_assert!(NumberFormat::<{ RUBY_OCTAL_LITERAL }> {}.is_valid());
1751
1752#[rustfmt::skip]
1756pub const RUBY_STRING: u128 = NumberFormatBuilder::new()
1757 .digit_separator(num::NonZeroU8::new(b'_'))
1758 .no_special(true)
1759 .internal_digit_separator(true)
1760 .build();
1761
1762const_assert!(NumberFormat::<{ RUBY_STRING }> {}.is_valid());
1763
1764#[rustfmt::skip]
1767pub const SWIFT_LITERAL: u128 = NumberFormatBuilder::new()
1768 .digit_separator(num::NonZeroU8::new(b'_'))
1769 .required_digits(true)
1770 .no_special(true)
1771 .internal_digit_separator(true)
1772 .trailing_digit_separator(true)
1773 .consecutive_digit_separator(true)
1774 .build();
1775
1776const_assert!(NumberFormat::<{ SWIFT_LITERAL }> {}.is_valid());
1777
1778#[rustfmt::skip]
1781pub const SWIFT_STRING: u128 = NumberFormatBuilder::new()
1782 .required_fraction_digits(true)
1783 .build();
1784
1785const_assert!(NumberFormat::<{ SWIFT_STRING }> {}.is_valid());
1786
1787#[rustfmt::skip]
1790pub const GO_LITERAL: u128 = NumberFormatBuilder::new()
1791 .required_fraction_digits(true)
1792 .no_special(true)
1793 .build();
1794
1795const_assert!(NumberFormat::<{ GO_LITERAL }> {}.is_valid());
1796
1797#[rustfmt::skip]
1800pub const GO_STRING: u128 = NumberFormatBuilder::new()
1801 .required_fraction_digits(true)
1802 .build();
1803
1804const_assert!(NumberFormat::<{ GO_STRING }> {}.is_valid());
1805
1806#[rustfmt::skip]
1809pub const HASKELL_LITERAL: u128 = NumberFormatBuilder::new()
1810 .required_digits(true)
1811 .no_positive_mantissa_sign(true)
1812 .no_special(true)
1813 .build();
1814
1815const_assert!(NumberFormat::<{ HASKELL_LITERAL }> {}.is_valid());
1816
1817#[rustfmt::skip]
1820pub const HASKELL_STRING: u128 = NumberFormatBuilder::new()
1821 .required_digits(true)
1822 .no_positive_mantissa_sign(true)
1823 .case_sensitive_special(true)
1824 .build();
1825
1826const_assert!(NumberFormat::<{ HASKELL_STRING }> {}.is_valid());
1827
1828#[rustfmt::skip]
1831pub const JAVASCRIPT_LITERAL: u128 = NumberFormatBuilder::new()
1832 .case_sensitive_special(true)
1833 .no_float_leading_zeros(true)
1834 .build();
1835
1836const_assert!(NumberFormat::<{ JAVASCRIPT_LITERAL }> {}.is_valid());
1837
1838#[rustfmt::skip]
1841pub const JAVASCRIPT_STRING: u128 = NumberFormatBuilder::new()
1842 .required_exponent_digits(false)
1843 .case_sensitive_special(true)
1844 .build();
1845
1846const_assert!(NumberFormat::<{ JAVASCRIPT_STRING }> {}.is_valid());
1847
1848#[rustfmt::skip]
1851pub const PERL_LITERAL: u128 = NumberFormatBuilder::new()
1852 .digit_separator(num::NonZeroU8::new(b'_'))
1853 .no_special(true)
1854 .internal_digit_separator(true)
1855 .fraction_leading_digit_separator(true)
1856 .exponent_leading_digit_separator(true)
1857 .trailing_digit_separator(true)
1858 .consecutive_digit_separator(true)
1859 .build();
1860
1861const_assert!(NumberFormat::<{ PERL_LITERAL }> {}.is_valid());
1862
1863pub const PERL_STRING: u128 = PERMISSIVE;
1866
1867#[rustfmt::skip]
1870pub const PHP_LITERAL: u128 = NumberFormatBuilder::new()
1871 .case_sensitive_special(true)
1872 .build();
1873
1874const_assert!(NumberFormat::<{ PHP_LITERAL }> {}.is_valid());
1875
1876#[rustfmt::skip]
1879pub const PHP_STRING: u128 = NumberFormatBuilder::new()
1880 .required_exponent_digits(false)
1881 .no_special(true)
1882 .build();
1883
1884const_assert!(NumberFormat::<{ PHP_STRING }> {}.is_valid());
1885
1886#[rustfmt::skip]
1889pub const JAVA_LITERAL: u128 = NumberFormatBuilder::new()
1890 .digit_separator(num::NonZeroU8::new(b'_'))
1891 .no_special(true)
1892 .internal_digit_separator(true)
1893 .consecutive_digit_separator(true)
1894 .build();
1895
1896const_assert!(NumberFormat::<{ JAVA_LITERAL }> {}.is_valid());
1897
1898#[rustfmt::skip]
1901pub const JAVA_STRING: u128 = NumberFormatBuilder::new()
1902 .case_sensitive_special(true)
1903 .build();
1904
1905const_assert!(NumberFormat::<{ JAVA_STRING }> {}.is_valid());
1906
1907#[rustfmt::skip]
1910pub const R_LITERAL: u128 = NumberFormatBuilder::new()
1911 .case_sensitive_special(true)
1912 .build();
1913
1914const_assert!(NumberFormat::<{ R_LITERAL }> {}.is_valid());
1915
1916pub const R_STRING: u128 = PERMISSIVE;
1919
1920#[rustfmt::skip]
1923pub const KOTLIN_LITERAL: u128 = NumberFormatBuilder::new()
1924 .digit_separator(num::NonZeroU8::new(b'_'))
1925 .no_special(true)
1926 .no_integer_leading_zeros(true)
1927 .internal_digit_separator(true)
1928 .consecutive_digit_separator(true)
1929 .build();
1930
1931const_assert!(NumberFormat::<{ KOTLIN_LITERAL }> {}.is_valid());
1932
1933#[rustfmt::skip]
1936pub const KOTLIN_STRING: u128 = NumberFormatBuilder::new()
1937 .case_sensitive_special(true)
1938 .build();
1939
1940const_assert!(NumberFormat::<{ KOTLIN_STRING }> {}.is_valid());
1941
1942#[rustfmt::skip]
1945pub const JULIA_LITERAL: u128 = NumberFormatBuilder::new()
1946 .digit_separator(num::NonZeroU8::new(b'_'))
1947 .case_sensitive_special(true)
1948 .integer_internal_digit_separator(true)
1949 .fraction_internal_digit_separator(true)
1950 .build();
1951
1952const_assert!(NumberFormat::<{ JULIA_LITERAL }> {}.is_valid());
1953
1954#[rustfmt::skip]
1957pub const JULIA_STRING: u128 = NumberFormatBuilder::new().build();
1958const_assert!(NumberFormat::<{ JULIA_STRING }> {}.is_valid());
1959
1960#[rustfmt::skip]
1963#[cfg(feature = "power-of-two")]
1964pub const JULIA_HEX_LITERAL: u128 = NumberFormatBuilder::new()
1965 .digit_separator(num::NonZeroU8::new(b'_'))
1966 .mantissa_radix(16)
1967 .exponent_base(num::NonZeroU8::new(2))
1968 .exponent_radix(num::NonZeroU8::new(10))
1969 .case_sensitive_special(true)
1970 .integer_internal_digit_separator(true)
1971 .fraction_internal_digit_separator(true)
1972 .build();
1973
1974#[cfg(feature = "power-of-two")]
1975const_assert!(NumberFormat::<{ JULIA_HEX_LITERAL }> {}.is_valid());
1976
1977#[rustfmt::skip]
1980#[cfg(feature = "power-of-two")]
1981pub const JULIA_HEX_STRING: u128 = NumberFormatBuilder::new()
1982 .mantissa_radix(16)
1983 .exponent_base(num::NonZeroU8::new(2))
1984 .exponent_radix(num::NonZeroU8::new(10))
1985 .build();
1986
1987#[cfg(feature = "power-of-two")]
1988const_assert!(NumberFormat::<{ JULIA_HEX_STRING }> {}.is_valid());
1989
1990pub const CSHARP_LITERAL: u128 = CSHARP7_LITERAL;
1992
1993pub const CSHARP_STRING: u128 = CSHARP7_STRING;
1995
1996#[rustfmt::skip]
1999pub const CSHARP7_LITERAL: u128 = NumberFormatBuilder::new()
2000 .digit_separator(num::NonZeroU8::new(b'_'))
2001 .required_fraction_digits(true)
2002 .no_special(true)
2003 .internal_digit_separator(true)
2004 .consecutive_digit_separator(true)
2005 .build();
2006
2007const_assert!(NumberFormat::<{ CSHARP7_LITERAL }> {}.is_valid());
2008
2009#[rustfmt::skip]
2012pub const CSHARP7_STRING: u128 = NumberFormatBuilder::new()
2013 .case_sensitive_special(true)
2014 .build();
2015
2016const_assert!(NumberFormat::<{ CSHARP7_STRING }> {}.is_valid());
2017
2018#[rustfmt::skip]
2021pub const CSHARP6_LITERAL: u128 = NumberFormatBuilder::new()
2022 .required_fraction_digits(true)
2023 .no_special(true)
2024 .build();
2025
2026const_assert!(NumberFormat::<{ CSHARP6_LITERAL }> {}.is_valid());
2027
2028#[rustfmt::skip]
2031pub const CSHARP6_STRING: u128 = NumberFormatBuilder::new()
2032 .case_sensitive_special(true)
2033 .build();
2034
2035const_assert!(NumberFormat::<{ CSHARP6_STRING }> {}.is_valid());
2036
2037#[rustfmt::skip]
2040pub const CSHARP5_LITERAL: u128 = NumberFormatBuilder::new()
2041 .required_fraction_digits(true)
2042 .no_special(true)
2043 .build();
2044
2045const_assert!(NumberFormat::<{ CSHARP5_LITERAL }> {}.is_valid());
2046
2047#[rustfmt::skip]
2050pub const CSHARP5_STRING: u128 = NumberFormatBuilder::new()
2051 .case_sensitive_special(true)
2052 .build();
2053
2054const_assert!(NumberFormat::<{ CSHARP5_STRING }> {}.is_valid());
2055
2056#[rustfmt::skip]
2059pub const CSHARP4_LITERAL: u128 = NumberFormatBuilder::new()
2060 .required_fraction_digits(true)
2061 .no_special(true)
2062 .build();
2063
2064const_assert!(NumberFormat::<{ CSHARP4_LITERAL }> {}.is_valid());
2065
2066#[rustfmt::skip]
2069pub const CSHARP4_STRING: u128 = NumberFormatBuilder::new()
2070 .case_sensitive_special(true)
2071 .build();
2072
2073const_assert!(NumberFormat::<{ CSHARP4_STRING }> {}.is_valid());
2074
2075#[rustfmt::skip]
2078pub const CSHARP3_LITERAL: u128 = NumberFormatBuilder::new()
2079 .required_fraction_digits(true)
2080 .no_special(true)
2081 .build();
2082
2083const_assert!(NumberFormat::<{ CSHARP3_LITERAL }> {}.is_valid());
2084
2085#[rustfmt::skip]
2088pub const CSHARP3_STRING: u128 = NumberFormatBuilder::new()
2089 .case_sensitive_special(true)
2090 .build();
2091
2092const_assert!(NumberFormat::<{ CSHARP3_STRING }> {}.is_valid());
2093
2094#[rustfmt::skip]
2097pub const CSHARP2_LITERAL: u128 = NumberFormatBuilder::new()
2098 .required_fraction_digits(true)
2099 .no_special(true)
2100 .build();
2101
2102const_assert!(NumberFormat::<{ CSHARP2_LITERAL }> {}.is_valid());
2103
2104#[rustfmt::skip]
2107pub const CSHARP2_STRING: u128 = NumberFormatBuilder::new()
2108 .case_sensitive_special(true)
2109 .build();
2110
2111const_assert!(NumberFormat::<{ CSHARP2_STRING }> {}.is_valid());
2112
2113#[rustfmt::skip]
2116pub const CSHARP1_LITERAL: u128 = NumberFormatBuilder::new()
2117 .required_fraction_digits(true)
2118 .no_special(true)
2119 .build();
2120
2121const_assert!(NumberFormat::<{ CSHARP1_LITERAL }> {}.is_valid());
2122
2123#[rustfmt::skip]
2126pub const CSHARP1_STRING: u128 = NumberFormatBuilder::new()
2127 .case_sensitive_special(true)
2128 .build();
2129
2130const_assert!(NumberFormat::<{ CSHARP1_STRING }> {}.is_valid());
2131
2132#[rustfmt::skip]
2135pub const KAWA_LITERAL: u128 = NumberFormatBuilder::new()
2136 .no_special(true)
2137 .build();
2138
2139const_assert!(NumberFormat::<{ KAWA_LITERAL }> {}.is_valid());
2140
2141#[rustfmt::skip]
2144pub const KAWA_STRING: u128 = NumberFormatBuilder::new()
2145 .no_special(true)
2146 .build();
2147
2148const_assert!(NumberFormat::<{ KAWA_STRING }> {}.is_valid());
2149
2150#[rustfmt::skip]
2153pub const GAMBITC_LITERAL: u128 = NumberFormatBuilder::new()
2154 .no_special(true)
2155 .build();
2156
2157const_assert!(NumberFormat::<{ GAMBITC_LITERAL }> {}.is_valid());
2158
2159#[rustfmt::skip]
2162pub const GAMBITC_STRING: u128 = NumberFormatBuilder::new()
2163 .no_special(true)
2164 .build();
2165
2166const_assert!(NumberFormat::<{ GAMBITC_STRING }> {}.is_valid());
2167
2168#[rustfmt::skip]
2171pub const GUILE_LITERAL: u128 = NumberFormatBuilder::new()
2172 .no_special(true)
2173 .build();
2174
2175const_assert!(NumberFormat::<{ GUILE_LITERAL }> {}.is_valid());
2176
2177#[rustfmt::skip]
2180pub const GUILE_STRING: u128 = NumberFormatBuilder::new()
2181 .no_special(true)
2182 .build();
2183
2184const_assert!(NumberFormat::<{ GUILE_STRING }> {}.is_valid());
2185
2186#[rustfmt::skip]
2189pub const CLOJURE_LITERAL: u128 = NumberFormatBuilder::new()
2190 .required_integer_digits(true)
2191 .no_special(true)
2192 .build();
2193
2194const_assert!(NumberFormat::<{ CLOJURE_LITERAL }> {}.is_valid());
2195
2196#[rustfmt::skip]
2199pub const CLOJURE_STRING: u128 = NumberFormatBuilder::new()
2200 .case_sensitive_special(true)
2201 .build();
2202
2203const_assert!(NumberFormat::<{ CLOJURE_STRING }> {}.is_valid());
2204
2205#[rustfmt::skip]
2208pub const ERLANG_LITERAL: u128 = NumberFormatBuilder::new()
2209 .required_digits(true)
2210 .no_exponent_without_fraction(true)
2211 .case_sensitive_special(true)
2212 .build();
2213
2214const_assert!(NumberFormat::<{ ERLANG_LITERAL }> {}.is_valid());
2215
2216#[rustfmt::skip]
2219pub const ERLANG_STRING: u128 = NumberFormatBuilder::new()
2220 .required_digits(true)
2221 .no_exponent_without_fraction(true)
2222 .no_special(true)
2223 .build();
2224
2225const_assert!(NumberFormat::<{ ERLANG_STRING }> {}.is_valid());
2226
2227#[rustfmt::skip]
2230pub const ELM_LITERAL: u128 = NumberFormatBuilder::new()
2231 .required_digits(true)
2232 .no_positive_mantissa_sign(true)
2233 .no_integer_leading_zeros(true)
2234 .no_float_leading_zeros(true)
2235 .no_special(true)
2236 .build();
2237
2238const_assert!(NumberFormat::<{ ELM_LITERAL }> {}.is_valid());
2239
2240#[rustfmt::skip]
2244pub const ELM_STRING: u128 = NumberFormatBuilder::new()
2245 .case_sensitive_special(true)
2246 .build();
2247
2248const_assert!(NumberFormat::<{ ELM_STRING }> {}.is_valid());
2249
2250#[rustfmt::skip]
2253pub const SCALA_LITERAL: u128 = NumberFormatBuilder::new()
2254 .required_digits(true)
2255 .no_special(true)
2256 .no_integer_leading_zeros(true)
2257 .no_float_leading_zeros(true)
2258 .build();
2259
2260const_assert!(NumberFormat::<{ SCALA_LITERAL }> {}.is_valid());
2261
2262#[rustfmt::skip]
2265pub const SCALA_STRING: u128 = NumberFormatBuilder::new()
2266 .case_sensitive_special(true)
2267 .build();
2268
2269const_assert!(NumberFormat::<{ SCALA_STRING }> {}.is_valid());
2270
2271#[rustfmt::skip]
2274pub const ELIXIR_LITERAL: u128 = NumberFormatBuilder::new()
2275 .digit_separator(num::NonZeroU8::new(b'_'))
2276 .required_digits(true)
2277 .no_exponent_without_fraction(true)
2278 .no_special(true)
2279 .internal_digit_separator(true)
2280 .build();
2281
2282const_assert!(NumberFormat::<{ ELIXIR_LITERAL }> {}.is_valid());
2283
2284#[rustfmt::skip]
2287pub const ELIXIR_STRING: u128 = NumberFormatBuilder::new()
2288 .required_digits(true)
2289 .no_exponent_without_fraction(true)
2290 .no_special(true)
2291 .build();
2292
2293const_assert!(NumberFormat::<{ ELIXIR_STRING }> {}.is_valid());
2294
2295#[rustfmt::skip]
2298pub const FORTRAN_LITERAL: u128 = NumberFormatBuilder::new()
2299 .no_special(true)
2300 .build();
2301
2302const_assert!(NumberFormat::<{ FORTRAN_LITERAL }> {}.is_valid());
2303
2304#[rustfmt::skip]
2307pub const FORTRAN_STRING: u128 = NumberFormatBuilder::new().build();
2308const_assert!(NumberFormat::<{ FORTRAN_STRING }> {}.is_valid());
2309
2310#[rustfmt::skip]
2313pub const D_LITERAL: u128 = NumberFormatBuilder::new()
2314 .digit_separator(num::NonZeroU8::new(b'_'))
2315 .no_special(true)
2316 .no_integer_leading_zeros(true)
2317 .internal_digit_separator(true)
2318 .trailing_digit_separator(true)
2319 .consecutive_digit_separator(true)
2320 .build();
2321
2322const_assert!(NumberFormat::<{ D_LITERAL }> {}.is_valid());
2323
2324#[rustfmt::skip]
2327pub const D_STRING: u128 = NumberFormatBuilder::new()
2328 .digit_separator(num::NonZeroU8::new(b'_'))
2329 .integer_internal_digit_separator(true)
2330 .fraction_internal_digit_separator(true)
2331 .integer_trailing_digit_separator(true)
2332 .fraction_trailing_digit_separator(true)
2333 .build();
2334
2335const_assert!(NumberFormat::<{ D_STRING }> {}.is_valid());
2336
2337#[rustfmt::skip]
2340pub const COFFEESCRIPT_LITERAL: u128 = NumberFormatBuilder::new()
2341 .case_sensitive_special(true)
2342 .no_integer_leading_zeros(true)
2343 .no_float_leading_zeros(true)
2344 .build();
2345
2346const_assert!(NumberFormat::<{ COFFEESCRIPT_LITERAL }> {}.is_valid());
2347
2348#[rustfmt::skip]
2351pub const COFFEESCRIPT_STRING: u128 = NumberFormatBuilder::new()
2352 .case_sensitive_special(true)
2353 .build();
2354
2355const_assert!(NumberFormat::<{ COFFEESCRIPT_STRING }> {}.is_valid());
2356
2357#[rustfmt::skip]
2360pub const COBOL_LITERAL: u128 = NumberFormatBuilder::new()
2361 .required_fraction_digits(true)
2362 .no_exponent_without_fraction(true)
2363 .no_special(true)
2364 .build();
2365
2366const_assert!(NumberFormat::<{ COBOL_LITERAL }> {}.is_valid());
2367
2368#[rustfmt::skip]
2371pub const COBOL_STRING: u128 = NumberFormatBuilder::new()
2372 .required_exponent_sign(true)
2373 .no_special(true)
2374 .build();
2375
2376const_assert!(NumberFormat::<{ COBOL_STRING }> {}.is_valid());
2377
2378#[rustfmt::skip]
2381pub const FSHARP_LITERAL: u128 = NumberFormatBuilder::new()
2382 .digit_separator(num::NonZeroU8::new(b'_'))
2383 .required_integer_digits(true)
2384 .required_exponent_digits(true)
2385 .case_sensitive_special(true)
2386 .internal_digit_separator(true)
2387 .consecutive_digit_separator(true)
2388 .build();
2389
2390const_assert!(NumberFormat::<{ FSHARP_LITERAL }> {}.is_valid());
2391
2392#[rustfmt::skip]
2395pub const FSHARP_STRING: u128 = NumberFormatBuilder::new()
2396 .digit_separator(num::NonZeroU8::new(b'_'))
2397 .internal_digit_separator(true)
2398 .leading_digit_separator(true)
2399 .trailing_digit_separator(true)
2400 .consecutive_digit_separator(true)
2401 .special_digit_separator(true)
2402 .build();
2403
2404const_assert!(NumberFormat::<{ FSHARP_STRING }> {}.is_valid());
2405
2406#[rustfmt::skip]
2409pub const VB_LITERAL: u128 = NumberFormatBuilder::new()
2410 .required_fraction_digits(true)
2411 .no_special(true)
2412 .build();
2413
2414const_assert!(NumberFormat::<{ VB_LITERAL }> {}.is_valid());
2415
2416#[rustfmt::skip]
2420pub const VB_STRING: u128 = NumberFormatBuilder::new()
2421 .case_sensitive_special(true)
2422 .build();
2423
2424const_assert!(NumberFormat::<{ VB_STRING }> {}.is_valid());
2425
2426#[rustfmt::skip]
2429pub const OCAML_LITERAL: u128 = NumberFormatBuilder::new()
2430 .digit_separator(num::NonZeroU8::new(b'_'))
2431 .required_integer_digits(true)
2432 .required_exponent_digits(true)
2433 .no_positive_mantissa_sign(true)
2434 .case_sensitive_special(true)
2435 .internal_digit_separator(true)
2436 .fraction_leading_digit_separator(true)
2437 .trailing_digit_separator(true)
2438 .consecutive_digit_separator(true)
2439 .build();
2440
2441const_assert!(NumberFormat::<{ OCAML_LITERAL }> {}.is_valid());
2442
2443#[rustfmt::skip]
2446pub const OCAML_STRING: u128 = NumberFormatBuilder::new()
2447 .digit_separator(num::NonZeroU8::new(b'_'))
2448 .internal_digit_separator(true)
2449 .leading_digit_separator(true)
2450 .trailing_digit_separator(true)
2451 .consecutive_digit_separator(true)
2452 .special_digit_separator(true)
2453 .build();
2454
2455const_assert!(NumberFormat::<{ OCAML_STRING }> {}.is_valid());
2456
2457#[rustfmt::skip]
2460pub const OBJECTIVEC_LITERAL: u128 = NumberFormatBuilder::new()
2461 .no_special(true)
2462 .build();
2463
2464const_assert!(NumberFormat::<{ OBJECTIVEC_LITERAL }> {}.is_valid());
2465
2466#[rustfmt::skip]
2469pub const OBJECTIVEC_STRING: u128 = NumberFormatBuilder::new()
2470 .no_special(true)
2471 .build();
2472
2473const_assert!(NumberFormat::<{ OBJECTIVEC_STRING }> {}.is_valid());
2474
2475#[rustfmt::skip]
2478pub const REASONML_LITERAL: u128 = NumberFormatBuilder::new()
2479 .digit_separator(num::NonZeroU8::new(b'_'))
2480 .required_integer_digits(true)
2481 .required_exponent_digits(true)
2482 .case_sensitive_special(true)
2483 .internal_digit_separator(true)
2484 .fraction_leading_digit_separator(true)
2485 .trailing_digit_separator(true)
2486 .consecutive_digit_separator(true)
2487 .build();
2488
2489const_assert!(NumberFormat::<{ REASONML_LITERAL }> {}.is_valid());
2490
2491#[rustfmt::skip]
2494pub const REASONML_STRING: u128 = NumberFormatBuilder::new()
2495 .digit_separator(num::NonZeroU8::new(b'_'))
2496 .internal_digit_separator(true)
2497 .leading_digit_separator(true)
2498 .trailing_digit_separator(true)
2499 .consecutive_digit_separator(true)
2500 .special_digit_separator(true)
2501 .build();
2502
2503const_assert!(NumberFormat::<{ REASONML_STRING }> {}.is_valid());
2504
2505#[rustfmt::skip]
2509pub const OCTAVE_LITERAL: u128 = NumberFormatBuilder::new()
2510 .digit_separator(num::NonZeroU8::new(b'_'))
2511 .case_sensitive_special(true)
2512 .internal_digit_separator(true)
2513 .fraction_leading_digit_separator(true)
2514 .trailing_digit_separator(true)
2515 .consecutive_digit_separator(true)
2516 .build();
2517
2518const_assert!(NumberFormat::<{ OCTAVE_LITERAL }> {}.is_valid());
2519
2520#[rustfmt::skip]
2523pub const OCTAVE_STRING: u128 = NumberFormatBuilder::new()
2524 .digit_separator(num::NonZeroU8::new(b','))
2525 .internal_digit_separator(true)
2526 .leading_digit_separator(true)
2527 .trailing_digit_separator(true)
2528 .consecutive_digit_separator(true)
2529 .build();
2530
2531const_assert!(NumberFormat::<{ OCTAVE_STRING }> {}.is_valid());
2532
2533#[rustfmt::skip]
2537pub const MATLAB_LITERAL: u128 = NumberFormatBuilder::new()
2538 .digit_separator(num::NonZeroU8::new(b'_'))
2539 .case_sensitive_special(true)
2540 .internal_digit_separator(true)
2541 .fraction_leading_digit_separator(true)
2542 .trailing_digit_separator(true)
2543 .consecutive_digit_separator(true)
2544 .build();
2545
2546const_assert!(NumberFormat::<{ MATLAB_LITERAL }> {}.is_valid());
2547
2548#[rustfmt::skip]
2551pub const MATLAB_STRING: u128 = NumberFormatBuilder::new()
2552 .digit_separator(num::NonZeroU8::new(b','))
2553 .internal_digit_separator(true)
2554 .leading_digit_separator(true)
2555 .trailing_digit_separator(true)
2556 .consecutive_digit_separator(true)
2557 .build();
2558
2559const_assert!(NumberFormat::<{ MATLAB_STRING }> {}.is_valid());
2560
2561#[rustfmt::skip]
2564pub const ZIG_LITERAL: u128 = NumberFormatBuilder::new()
2565 .required_integer_digits(true)
2566 .no_positive_mantissa_sign(true)
2567 .no_special(true)
2568 .build();
2569
2570const_assert!(NumberFormat::<{ ZIG_LITERAL }> {}.is_valid());
2571
2572pub const ZIG_STRING: u128 = PERMISSIVE;
2575
2576#[rustfmt::skip]
2580pub const SAGE_LITERAL: u128 = NumberFormatBuilder::new()
2581 .case_sensitive_special(true)
2582 .build();
2583
2584const_assert!(NumberFormat::<{ SAGE_LITERAL }> {}.is_valid());
2585
2586#[rustfmt::skip]
2589pub const SAGE_STRING: u128 = NumberFormatBuilder::new()
2590 .digit_separator(num::NonZeroU8::new(b'_'))
2591 .internal_digit_separator(true)
2592 .build();
2593
2594const_assert!(NumberFormat::<{ SAGE_STRING }> {}.is_valid());
2595
2596#[rustfmt::skip]
2599pub const JSON: u128 = NumberFormatBuilder::new()
2600 .required_digits(true)
2601 .no_positive_mantissa_sign(true)
2602 .no_special(true)
2603 .no_integer_leading_zeros(true)
2604 .no_float_leading_zeros(true)
2605 .build();
2606
2607const_assert!(NumberFormat::<{ JSON }> {}.is_valid());
2608
2609#[rustfmt::skip]
2612pub const TOML: u128 = NumberFormatBuilder::new()
2613 .digit_separator(num::NonZeroU8::new(b'_'))
2614 .required_digits(false)
2615 .no_special(true)
2616 .no_integer_leading_zeros(true)
2617 .no_float_leading_zeros(true)
2618 .internal_digit_separator(true)
2619 .build();
2620
2621const_assert!(NumberFormat::<{ TOML }> {}.is_valid());
2622
2623pub const YAML: u128 = JSON;
2626
2627#[rustfmt::skip]
2630pub const XML: u128 = NumberFormatBuilder::new()
2631 .required_exponent_digits(false)
2632 .case_sensitive_special(true)
2633 .build();
2634
2635const_assert!(NumberFormat::<{ XML }> {}.is_valid());
2636
2637#[rustfmt::skip]
2640pub const SQLITE: u128 = NumberFormatBuilder::new()
2641 .no_special(true)
2642 .build();
2643
2644const_assert!(NumberFormat::<{ SQLITE }> {}.is_valid());
2645
2646#[rustfmt::skip]
2649pub const POSTGRESQL: u128 = NumberFormatBuilder::new()
2650 .no_special(true)
2651 .build();
2652
2653const_assert!(NumberFormat::<{ POSTGRESQL }> {}.is_valid());
2654
2655#[rustfmt::skip]
2658pub const MYSQL: u128 = NumberFormatBuilder::new()
2659 .no_special(true)
2660 .build();
2661
2662const_assert!(NumberFormat::<{ MYSQL }> {}.is_valid());
2663
2664#[rustfmt::skip]
2667pub const MONGODB: u128 = NumberFormatBuilder::new()
2668 .case_sensitive_special(true)
2669 .no_float_leading_zeros(true)
2670 .build();
2671
2672const_assert!(NumberFormat::<{ MONGODB }> {}.is_valid());
2673
2674#[doc(hidden)]
2678#[rustfmt::skip]
2679pub const PERMISSIVE: u128 = NumberFormatBuilder::new()
2680 .required_exponent_digits(false)
2681 .required_mantissa_digits(false)
2682 .build();
2683
2684const_assert!(NumberFormat::<{ PERMISSIVE }> {}.is_valid());
2685
2686#[doc(hidden)]
2688#[rustfmt::skip]
2689pub const IGNORE: u128 = NumberFormatBuilder::new()
2690 .digit_separator(num::NonZeroU8::new(b'_'))
2691 .digit_separator_flags(true)
2692 .required_exponent_digits(false)
2693 .required_mantissa_digits(false)
2694 .build();
2695
2696const_assert!(NumberFormat::<{ IGNORE }> {}.is_valid());