encoding_rs การใช้งานของ (ไม่ใช่ส่วนที่ไม่ใช่ javascript ของ) มาตรฐานการเข้ารหัสที่เขียนในสนิม
มาตรฐานการเข้ารหัสกำหนดชุดการเข้ารหัสอักขระที่เข้ากันได้กับเว็บซึ่งหมายความว่าลังนี้สามารถใช้ในการถอดรหัสเนื้อหาเว็บ encoding_rs ใช้ในตุ๊กแกเริ่มต้นด้วย Firefox 56 เนื่องจากการทับซ้อนที่โดดเด่นระหว่างการเข้ารหัสมรดกบนเว็บและการเข้ารหัสแบบดั้งเดิมที่ใช้กับ Windows ลังนี้อาจใช้สำหรับสถานการณ์ที่ไม่เกี่ยวข้องกับ WEB เช่นกัน ดูด้านล่างสำหรับลิงก์ไปยังลังที่อยู่ติดกัน
นอกจากนี้โมดูล mem ยังมีการดำเนินการต่าง ๆ สำหรับการจัดการกับข้อความใน RAM (ตรงข้ามกับข้อมูลที่มาจากหรือไปที่ขอบเขต IO) โมดูล mem เป็นโมดูลแทนลังแยกต่างหากเนื่องจากประสิทธิภาพการใช้งานภายใน
เนื่องจากกรณีการใช้ตุ๊กแกการเข้ารหัส encoding_RS รองรับการถอดรหัสและเข้ารหัสจาก UTF-16 นอกเหนือจากการสนับสนุนกรณีการใช้สนิมตามปกติของการถอดรหัสและเข้ารหัสจาก UTF-8 นอกจากนี้ API ได้รับการออกแบบให้เป็นมิตรกับ FFI เพื่อรองรับด้าน C ++ ของตุ๊กแก
โดยเฉพาะการเข้ารหัส _RS ทำดังต่อไปนี้:
u16 / char16_t )u16 / char16_t ) เป็นลำดับของไบต์ในการเข้ารหัสอักขระมาตรฐานที่เข้ารหัสราวกับว่าตัวละครตัวเดียวถูกแทนที่ด้วยตัวละครที่เปลี่ยนก่อนทำการเข้ารหัส (UTF-16 ของ Gecko อาจไม่ถูกต้อง)document.characterSet นอกจากนี้ encoding_rs::mem ทำสิ่งต่อไปนี้:
std::io โดยเฉพาะอย่างยิ่งรายการคุณสมบัติข้างต้นไม่รวมถึงความสามารถในการห่อ std::io::Read ถอดรหัสลงใน UTF-8 และนำเสนอผลลัพธ์ผ่าน std::io::Read ลัง encoding_rs_io ให้ความสามารถนั้น
no_std ลังทำงานในสภาพแวดล้อม no_std โดยค่าเริ่มต้นคุณลักษณะ alloc ซึ่งถือว่ามีการเปิดใช้งานการจัดสรรจะเปิดใช้งาน สำหรับสภาพแวดล้อมที่ไม่มีการจัดสรรคุณสมบัติคุณลักษณะเริ่มต้น (เช่น alloc ) สามารถปิดได้ สิ่งนี้ทำให้ส่วนหนึ่งของ API ที่ส่งคืน Vec / String / Cow ไม่พร้อมใช้งาน
สำหรับการถอดรหัสการเข้ารหัสอักขระที่เกิดขึ้นในอีเมลให้ใช้ charset CRATE แทนการใช้สิ่งนี้โดยตรง (มันห่อลังนี้และเพิ่มการถอดรหัส UTF-7)
สำหรับการแมปไปและกลับจากตัวระบุหน้ารหัส Windows ให้ใช้ codepage Crate
ลังนี้ไม่รองรับการเข้ารหัส DOS แบบไบต์เดียวที่ไม่จำเป็นต้องใช้กับแพลตฟอร์มเว็บ แต่ลัง oem_cp ทำ
การทำให้ข้อความเป็นมาตรฐานในรูปแบบการทำให้เป็นมาตรฐานของ Unicode C ก่อนที่จะเข้ารหัสข้อความลงในการเข้ารหัสแบบดั้งเดิมช่วยลดอักขระที่ไม่สามารถใช้งานได้ ข้อความสามารถทำให้เป็นมาตรฐานในรูปแบบการทำให้เป็นมาตรฐาน Unicode C โดยใช้ Crate icu_normalizer
ข้อยกเว้นคือ Windows-1258 ซึ่งหลังจากการทำให้เป็นปกติในรูปแบบการทำให้เป็นมาตรฐาน Unicode C ต้องใช้เครื่องหมายเสียงที่จะย่อยสลายเพื่อลดอักขระที่ไม่สามารถใช้ได้ เครื่องหมายโทนสีเวียดนามสามารถย่อยสลายได้โดยใช้ detone Crate
TL; DR: (Apache-2.0 OR MIT) AND BSD-3-Clause สำหรับรหัสและการรวมกันของข้อมูล
โปรดดูไฟล์ชื่อลิขสิทธิ์
รหัสที่ไม่ใช่การทดสอบที่ไม่ได้สร้างจากข้อมูล whatwg ในลังนี้อยู่ภายใต้ apache-2.0 หรือ MIT รหัสทดสอบอยู่ภายใต้ CC0
ลังนี้มีรหัส/ข้อมูลที่สร้างขึ้นจากข้อมูลที่จัดสรรแบบ whatwg Whatwg upstream เปลี่ยนใบอนุญาตสำหรับบางส่วนของรายละเอียดที่รวมอยู่ในซอร์สโค้ดจาก CC0 เป็น BSD-3-clause ระหว่างการเปิดตัวครั้งแรกของลังนี้และเวอร์ชันปัจจุบันของลังนี้ ตำนานการออกใบอนุญาตในแหล่งข้อมูลได้รับการอัปเดตสำหรับส่วนต่าง ๆ ของรหัสที่สร้างขึ้นซึ่งมีการเปลี่ยนแปลงตั้งแต่การเปลี่ยนแปลงใบอนุญาตต้นน้ำ
เอกสาร API ที่สร้างขึ้นพร้อมใช้งานออนไลน์
มีการเขียนแบบยาวเกี่ยวกับการออกแบบและภายในของลัง
เลเยอร์ FFI สำหรับ encoding_RS มีให้บริการเป็นลังแยก ลังมาพร้อมกับการสาธิต c ++ wrapper โดยใช้ไลบรารีมาตรฐาน C ++ และประเภท GSL
การผูกสำหรับโมดูล mem อยู่ในลัง encoding_c_mem
สำหรับบริบทตุ๊กแกมี wrapper C ++ โดยใช้ประเภท MFBT/XPCOM
มีการเขียนเกี่ยวกับ wrappers C ++
ขณะนี้มีคุณสมบัติการขนส่งสินค้าเสริมเหล่านี้:
simd-accel เปิดใช้งานการเร่งความเร็วของ SIMD โดยใช้คุณสมบัติ Library Standard portable_simd ที่ขึ้นกับทุกคืน
นี่เป็นคุณสมบัติการเลือกใช้เนื่องจากการเปิดใช้งานคุณสมบัตินี้ ไม่ได้รับการ รับรองจากการรับประกันของคอมไพเลอร์ในอนาคตที่รวบรวมรหัสเก่า (aka. "Stability Story")
ปัจจุบันสิ่งนี้ยังไม่ได้รับการทดสอบว่าเป็นการปรับปรุงยกเว้นเป้าหมายเหล่านี้และการเปิดใช้งานคุณสมบัติ simd-accel คาดว่าจะทำลายการสร้างบนเป้าหมายอื่น ๆ :
หากคุณใช้สนิมทุกคืนคุณใช้เป้าหมายที่ส่วนประกอบแรกเป็นหนึ่งในหนึ่งในข้างต้นและคุณพร้อม ที่จะแก้ไขการกำหนดค่าของคุณเมื่ออัปเดตสนิม คุณควรเปิดใช้งานคุณสมบัตินี้ มิฉะนั้นโปรด อย่า เปิดใช้งานคุณสมบัตินี้
ใช้โดย Firefox
serde เปิดใช้งานการสนับสนุนสำหรับการทำให้เป็นอนุกรมและ deserializing &'static Encoding ฟิลด์ struct -typed struct โดยใช้ Serde
ไม่ได้ใช้โดย Firefox
fast-legacy-encodeตัวเลือกการจับทั้งหมดสำหรับการเปิดใช้งานตัวเลือกการเข้ารหัสแบบดั้งเดิมที่เร็วที่สุด ไม่ส่งผลกระทบต่อความเร็วในการถอดรหัสหรือความเร็วในการเข้ารหัส UTF-8
ในปัจจุบันตัวเลือกนี้เทียบเท่ากับการเปิดใช้งานตัวเลือกต่อไปนี้:
fast-hangul-encodefast-hanja-encodefast-kanji-encodefast-gb-hanzi-encodefast-big5-hanzi-encodeเพิ่ม 176 kb ให้กับขนาดไบนารี
ไม่ได้ใช้โดย Firefox
fast-hangul-encodeการเปลี่ยนแปลงการเข้ารหัสพยางค์ hangul precomposed เป็น EUC-KR จากการค้นหาแบบไบนารีผ่านตารางถอดรหัสที่ปรับให้เหมาะสมเพื่อค้นหาโดยดัชนีการเข้ารหัสข้อความธรรมดาเกาหลีเข้ารหัสเร็วประมาณ 4 เท่าโดยไม่มีตัวเลือกนี้
เพิ่ม 20 kb ให้กับขนาดไบนารี
ไม่ ส่งผลกระทบต่อความเร็วในการถอดรหัส
ไม่ได้ใช้โดย Firefox
fast-hanja-encodeการเปลี่ยนแปลงการเข้ารหัสของ Hanja เป็น EUC-KR จากการค้นหาเชิงเส้นผ่านตารางถอดรหัสที่ปรับให้เหมาะกับการค้นหาตามดัชนี เนื่องจาก Hanja ขาดหายไปในข้อความเกาหลีสมัยใหม่ตัวเลือกนี้ไม่ส่งผลกระทบต่อ perfomance ในกรณีทั่วไปและส่วนใหญ่เหมาะสมถ้าคุณต้องการทำให้แอปพลิเคชันของคุณมีความยืดหยุ่นในการปฏิเสธการบริการโดยใครบางคนโดยเจตนา
เพิ่ม 40 kb ให้กับขนาดไบนารี
ไม่ ส่งผลกระทบต่อความเร็วในการถอดรหัส
ไม่ได้ใช้โดย Firefox
fast-kanji-encode การเปลี่ยนแปลงการเข้ารหัสของคันจิเป็น shift_jis, EUC-JP และ ISO-20122-JP จากการค้นหาเชิงเส้นเหนือตารางถอดรหัสที่ปรับให้เหมาะสมเพื่อค้นหาโดยดัชนีทำให้การเข้ารหัสข้อความธรรมดาของญี่ปุ่นเข้ารหัสไปสู่การเข้ารหัส less-slow-kanji-encode 30 ถึง 50 เท่าโดยไม่มีตัวเลือกนี้ (ประมาณ 2 เท่า
มีความสำคัญเหนือกว่า less-slow-kanji-encode
เพิ่ม 36 kb ให้กับขนาดไบนารี (24 kb เมื่อเทียบกับ less-slow-kanji-encode )
ไม่ ส่งผลกระทบต่อความเร็วในการถอดรหัส
ไม่ได้ใช้โดย Firefox
less-slow-kanji-encodeทำให้ Jis X 0208 ระดับ 1 คันจิ (คันจิที่พบมากที่สุดใน Shift_jis, EUC-JP และ ISO-20122-JP) เข้ารหัสช้าลง (การค้นหาแบบไบนารีแทนการค้นหาเชิงเส้น) ทำให้การเข้ารหัสข้อความธรรมดาของญี่ปุ่นเข้ารหัส
เพิ่ม 12 kb ให้กับขนาดไบนารี
ไม่ ส่งผลกระทบต่อความเร็วในการถอดรหัส
ไม่ได้ใช้โดย Firefox
fast-gb-hanzi-encode การเปลี่ยนแปลงการเข้ารหัสของ Hanzi ใน CJK Unified Unified Ideographs บล็อกลงใน GBK และ GB18030 จากการค้นหาเชิงเส้นเหนือส่วนที่มีการถอดรหัสที่ดีที่สุดตามด้วยการค้นหาแบบไบนารีในอีกส่วนหนึ่งของการถอดรหัสที่ดีที่สุด less-slow-gb-hanzi-encode )
มีความสำคัญกว่า less-slow-gb-hanzi-encode
เพิ่ม 36 kb ให้กับขนาดไบนารี (24 kb เมื่อเทียบกับ less-slow-gb-hanzi-encode )
ไม่ ส่งผลกระทบต่อความเร็วในการถอดรหัส
ไม่ได้ใช้โดย Firefox
less-slow-gb-hanzi-encodeทำให้ GB2312 ระดับ 1 Hanzi (Hanzi ที่พบมากที่สุดใน GB18030 และ GBK) เข้ารหัสช้าลง (การค้นหาแบบไบนารีแทนการค้นหาเชิงเส้น) ทำให้การเข้ารหัสข้อความธรรมดาจีนง่ายขึ้นไปยังการเข้ารหัสแบบดั้งเดิมประมาณ 40 เท่าโดยไม่มีตัวเลือกนี้
เพิ่ม 12 kb ให้กับขนาดไบนารี
ไม่ ส่งผลกระทบต่อความเร็วในการถอดรหัส
ไม่ได้ใช้โดย Firefox
fast-big5-hanzi-encode การเปลี่ยนแปลงการเข้ารหัสของ Hanzi ใน CJK Unified Unified Ideographs บล็อกเป็น BIG5 จากการค้นหาเชิงเส้นเหนือส่วนที่มีการถอดรหัสที่ less-slow-big5-hanzi-encode ถึง 125 เท่าโดยไม่มีตัวเลือกนี้ (ประมาณ 3 เท่า
มีความสำคัญกว่า less-slow-big5-hanzi-encode
เพิ่ม 40 kb ให้กับขนาดไบนารี (20 kb เมื่อเทียบกับ less-slow-big5-hanzi-encode )
ไม่ ส่งผลกระทบต่อความเร็วในการถอดรหัส
ไม่ได้ใช้โดย Firefox
less-slow-big5-hanzi-encodeทำให้ Big5 ระดับ 1 Hanzi (Hanzi ที่พบมากที่สุดใน BIG5) เข้ารหัสช้าลงน้อยลง (การค้นหาไบนารีแทนการค้นหาเชิงเส้น) ทำให้การเข้ารหัสข้อความธรรมดาจีนแบบดั้งเดิมเป็น BIG5 ประมาณ 36 เท่าโดยไม่มีตัวเลือกนี้
เพิ่ม 20 kb ให้กับขนาดไบนารี
ไม่ ส่งผลกระทบต่อความเร็วในการถอดรหัส
ไม่ได้ใช้โดย Firefox
สำหรับการถอดรหัสไปยัง UTF-16 เป้าหมายคือการดำเนินการอย่างน้อยและ UCONV เก่าของ Gecko สำหรับการถอดรหัสไปยัง UTF-8 เป้าหมายคือการดำเนินการอย่างน้อยและการเข้ารหัสสนิม เป้าหมายเหล่านี้ประสบความสำเร็จ
การเข้ารหัสเป็น UTF-8 ควรเร็ว (การเข้ารหัส UTF-8 ถึง UTF-8 ควรเทียบเท่ากับ memcpy และ UTF-16 ถึง UTF-8 ควรเร็ว)
ความเร็วไม่ใช่เป้าหมายเมื่อเข้ารหัสไปยังการเข้ารหัสมรดก โดยค่าเริ่มต้นการเข้ารหัสไปยังการเข้ารหัสแบบดั้งเดิมไม่ควรปรับให้เหมาะสมสำหรับความเร็วด้วยค่าใช้จ่ายของขนาดรหัสตราบใดที่การส่งแบบฟอร์มและการแยกวิเคราะห์ URL ในตุ๊กแกไม่ได้ช้าเกินไปอย่างเห็นได้ชัดในการใช้จริงในโลกแห่งความเป็นจริง
ในความสนใจของขนาดไบนารีโดยค่าเริ่มต้นการเข้ารหัส _RS ไม่มีตารางข้อมูลเฉพาะเข้ารหัสเกิน 32 บิตของข้อมูลเฉพาะเข้ารหัสสำหรับการเข้ารหัสไบต์แต่ละตัว ดังนั้นตัวเข้ารหัสจะค้นหาตารางข้อมูลที่ดีที่สุด นี่คือการค้นหาเชิงเส้นในกรณีส่วนใหญ่ เป็นผลให้โดยค่าเริ่มต้นเข้ารหัสไปยังการเข้ารหัสแบบดั้งเดิมนั้นแตกต่างกันไปตั้งแต่ช้าไปจนถึงช้ามากเมื่อเทียบกับไลบรารีอื่น ๆ ถึงกระนั้นด้วยการทำงานที่สมจริงสิ่งนี้ดูเหมือนจะเร็วพอที่จะไม่ช้าผู้ใช้ใน Raspberry Pi 3 (ซึ่งยืนอยู่ในโทรศัพท์สำหรับการทดสอบ) ในกรณีการใช้งานเข้ารหัสเว็บที่สัมผัสได้
ดูคุณสมบัติการขนส่งสินค้าด้านบนสำหรับการสร้าง CJK Legacy ENCODE อย่างรวดเร็ว
เฟรมเวิร์กสำหรับการวัดประสิทธิภาพมีให้แยกกัน
มันเป็นเป้าหมายที่จะสนับสนุนการเกิดสนิมที่มั่นคงล่าสุดสนิมยามค่ำคืนล่าสุดและเวอร์ชันของสนิมที่ใช้สำหรับ Firefox ทุกคืน
ในเวลานี้ไม่มีความมุ่งมั่นที่จะสนับสนุนเวอร์ชันที่เก่ากว่าที่ Firefox ต้องการและไม่มีความมุ่งมั่นที่จะรักษาการเปลี่ยนแปลง MSRV เป็นการทำลาย semver เนื่องจากลังนี้ขึ้นอยู่กับ cfg-if ซึ่งไม่ได้เป็นการเปลี่ยนแปลง MSRV
ตั้งแต่ปี 2024-11-01 MSRV ดูเหมือนจะเป็นสนิม 1.40.0 สำหรับการใช้ลังและ 1.42.0 สำหรับการทดสอบ DOC ที่จะผ่านโดยไม่มีข้อผิดพลาดเกี่ยวกับตัวจัดสรรทั่วโลก ด้วยคุณสมบัติ simd-accel MSRV จะสูงขึ้น
เลเยอร์ความเข้ากันได้ที่ใช้ API การเข้ารหัสสนิมที่ด้านบนของ encoding_RS นั้นมีให้เป็นลังแยก (ไม่สามารถอัปโหลดไปยัง Cute.io) ชั้นความเข้ากันได้นั้นถูกเขียนขึ้นด้วยการถูกระงับที่ Firefox ต้องการ แต่ไม่ได้ใช้ใน Firefox ในปัจจุบัน
เพื่อสร้างรหัสที่สร้างขึ้นใหม่:
https://github.com/hsivonen/encoding_c ถัดจากไดเรกทอรี encoding_rshttps://github.com/hsivonen/codepage ถัดจากไดเรกทอรี encoding_rshttps://github.com/whatwg/encoding ถัดจากไดเรกทอรี encoding_rs1d519bf8e5555cef64cf3a712485f41cd1a6a990 ของ encoding repo (หมายเหตุ: f381389 คือการแก้ไข encoding ที่ใช้ก่อนการเปลี่ยนแปลงใบอนุญาต repo encoding )encoding_rs เป็นไดเรกทอรีการทำงานให้เรียกใช้ python generate-encoding-data.py usize แทน u8 ในแต่ละครั้ง) alloc (มีพื้นผิว API น้อยกว่า) std::simdunsafe โดยประเภทที่ใหญ่กว่า u8 / u16 ไปยัง align_to portable_simd ทุกคืนของไลบรารีมาตรฐานแทนลัง packed_simd มีผลต่อคุณสมบัติทุกคืนที่เป็นตัวเลือกของ simd-accel เท่านั้นunsaferust-version ให้กับ Cargo.tomlpacked_simd แทน packed_simd_2 อีกครั้งตอนนี้การอัปเดตกลับมาภายใต้ชื่อ packed_simd มีผลต่อคุณสมบัติทุกคืนที่เป็นตัวเลือกของ simd-accel เท่านั้นbuild.rs (การลบนี้ควรแก้ไขข้อดีที่ผิดพลาดที่รายงานโดยผลิตภัณฑ์ป้องกันไวรัสบางชนิดซึ่งอาจทำลายการกำหนดค่าการสร้างบางอย่างที่เลือกไม่ออกจากการค้ำประกันของ Rust กับการแตกของการสร้างในอนาคต)no_stdno_std (พร้อม alloc )simd-accelpacked_simd เป็น packed_simd_2cfg-if เป็น 1.0cfg-if อัปเดตเป็น Edition 2018 โดยไม่ต้องหยุดการแข่งขันDecoder::latin1_byte_compatible_up_to RETURN None ในบางกรณีเพื่อให้วิธีการที่มีประโยชน์จริง แม้ว่าสิ่งนี้อาจเป็นที่ถกเถียงกันอยู่ว่าเป็นการเปลี่ยนแปลงที่เกิดขึ้นเนื่องจากการแก้ไขข้อผิดพลาดการเปลี่ยนความหมาย แต่ก็ไม่ได้ทำลายผู้โทรที่ต้องจัดการกับกรณี None เหตุผลconvert_str_to_utf16mem::convert_utf8_to_utf16_without_replacementmem::utf8_latin1_up_to และ mem::str_latin1_up_toDecoder::latin1_byte_compatible_up_tobincode (Dev Dependency) เป็น 1.0simd เป็น packed_simdsimd-accel (ReadMe-Oonly Release)clippy:: จากชื่อผ้าสำลี Clippystatic เมื่อกำหนด static อื่น)is_single_byte() ใน Encodingmem::decode_latin1() และ mem::encode_latin1_lossy()--features simd-accel ทำงานร่วมกับคอมไพเลอร์ช่องเสียบที่มีเสถียรภาพเพื่อลดความซับซ้อนของระบบ Firefox Buildis_foo_bidi() ไม่ปฏิบัติต่อ U+FEFF (ศูนย์ความกว้างไม่มีช่องว่าง AKA. เครื่องหมายคำสั่ง BYTE) เป็นขวาไปซ้ายis_foo_bidi() รายงาน true ถ้าอินพุตมีรูปแบบการนำเสนอภาษาฮีบรู (ซึ่งอยู่ทางซ้ายไปซ้าย แต่ไม่อยู่ในบล็อกขวาไปซ้าย)convert_utf16_to_latin1_lossymem ยืนยันว่าอินพุตอยู่ในช่วง U+0000 ... U+00FF (รวม)mem ให้การแปลงจาก LATIN1 และ UTF-16 เป็น UTF-8 ที่สามารถจัดการกับพื้นที่เอาต์พุตไม่เพียงพอ ความคิดคือการใช้มันก่อนด้วยการจัดสรรปัดเศษขนาดถัง Jemalloc และทำการจัดสรรกรณีที่เลวร้ายที่สุดเฉพาะในกรณีที่การปัดเศษ Jemalloc ไม่เพียงพอเป็นครั้งแรกsimd-accel -specific ที่แนะนำในเวอร์ชัน 0.8.1 ในการแปลงระหว่าง UTF-16 และ LATIN1 ในโมดูล mem#[inline(never)] คำอธิบายประกอบที่ไม่ได้มีไว้สำหรับการปล่อยmem เพื่อเพิ่มประสิทธิภาพเมื่อแปลงบัฟเฟอร์ยาวmemmemreplacement ฉลากของการเข้ารหัสทดแทน (การเปลี่ยนแปลงข้อมูลจำเพาะ)Encoding::for_name() ( Encoding::for_label(foo).unwrap() ตอนนี้ใกล้พอหลังจากเปลี่ยนฉลากข้างต้น)parallel-utf8&'static EncodingEncoder::has_pending_state() สาธารณะsimd เป็น 0.2.07F อย่างถูกต้องใน ISO-20122-JPHash สำหรับ EncodingInputEmpty ที่ถูกต้องมากกว่า OutputFull เมื่อเข้ารหัสด้วยการเปลี่ยนและบัฟเฟอร์เอาต์พุตที่ส่งผ่านนั้นสั้นเกินไปหรือพื้นที่ที่เหลือในบัฟเฟอร์เอาท์พุทมีขนาดเล็กเกินไปหลังจากเปลี่ยนPartialEq และ Eq สำหรับประเภท CoderResult , DecoderResult และ EncoderResultEncoder::encode_from_utf16 (เนื่องจากการกำกับดูแลมันขาดการแก้ไขที่ Encoder::encode_from_utf8 แล้ว)#[must_use]parallel-utf8 )simd-accelEncoding จาก const เป็น static เพื่อให้ผู้อ้างอิงไม่ซ้ำกันข้ามลังที่ใช้การอ้างอิงFOO_INIT ที่ไม่ได้อ้างอิงถึง Encoding เพื่อให้ลังต่าง ๆ ในการเริ่มต้นอาร์เรย์ static ที่ด้วยการอ้างอิงถึงอินสแตนซ์ Encoding แม้ภายใต้ข้อ จำกัด ของสนิมที่ห้ามการเริ่มต้นของรายการอาร์เรย์ที่มีการเข้ารหัส &'static Encoding &'static Encoding staticsconst ทำงานเพื่อให้การใช้งานข้ามวิกฤตช่วยให้ผู้อ้างอิงไม่ซ้ำกันCow S จากวิธีการที่ไม่ใช่การสตรีมที่เป็นสนิมอย่างเดียวสำหรับการเข้ารหัสและถอดรหัสEncoding::for_bom() ส่งคืนความยาวของ BOMsimd-accel (ต้องใช้สนิมทุกคืน)Encoder.encode_from_utf8_to_vec_without_replacement() เพิ่ม Encoding.is_ascii_compatible()
เพิ่ม Encoding::for_bom()
Make == สำหรับ Encoding การเปรียบเทียบชื่อการใช้แทนการเปรียบเทียบตัวชี้เนื่องจากการใช้ค่าคงที่การเข้ารหัสในลังต่าง ๆ ส่งผลให้อยู่ที่อยู่ต่างกันและค่าคงที่ไม่สามารถเปลี่ยนเป็นสถิติได้โดยไม่ทำลายสิ่งอื่น
การเปิดตัวครั้งแรก