diff --git a/src/libstd_unicode/tables.rs b/src/libstd_unicode/tables.rs
index 0938738b52c..1e8a0be8096 100644
--- a/src/libstd_unicode/tables.rs
+++ b/src/libstd_unicode/tables.rs
@@ -12,9 +12,32 @@
#![allow(missing_docs, non_upper_case_globals, non_snake_case)]
-/// The version of [Unicode](http://www.unicode.org/)
-/// that the unicode parts of `CharExt` and `UnicodeStrPrelude` traits are based on.
-pub const UNICODE_VERSION: (u64, u64, u64) = (10, 0, 0);
+/// Represents a Unicode Version.
+///
+/// See also:
+#[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
+pub struct UnicodeVersion {
+ /// Major version.
+ pub major: u32,
+
+ /// Minor version.
+ pub minor: u32,
+
+ /// Micro (or Update) version.
+ pub micro: u32,
+
+ // Private field to keep struct expandable.
+ _priv: (),
+}
+
+/// The version of [Unicode](http://www.unicode.org/) that the Unicode parts of
+/// `CharExt` and `UnicodeStrPrelude` traits are based on.
+pub const UNICODE_VERSION: UnicodeVersion = UnicodeVersion {
+ major: 10,
+ minor: 0,
+ micro: 0,
+ _priv: (),
+};
// BoolTrie is a trie for representing a set of Unicode codepoints. It is
diff --git a/src/libstd_unicode/unicode.py b/src/libstd_unicode/unicode.py
index 5f9def02c7d..1fac859242e 100755
--- a/src/libstd_unicode/unicode.py
+++ b/src/libstd_unicode/unicode.py
@@ -560,9 +560,32 @@ if __name__ == "__main__":
pattern = "for Version (\d+)\.(\d+)\.(\d+) of the Unicode"
unicode_version = re.search(pattern, readme.read()).groups()
rf.write("""
-/// The version of [Unicode](http://www.unicode.org/)
-/// that the unicode parts of `CharExt` and `UnicodeStrPrelude` traits are based on.
-pub const UNICODE_VERSION: (u64, u64, u64) = (%s, %s, %s);
+/// Represents a Unicode Version.
+///
+/// See also:
+#[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
+pub struct UnicodeVersion {
+ /// Major version.
+ pub major: u32,
+
+ /// Minor version.
+ pub minor: u32,
+
+ /// Micro (or Update) version.
+ pub micro: u32,
+
+ // Private field to keep struct expandable.
+ _priv: (),
+}
+
+/// The version of [Unicode](http://www.unicode.org/) that the Unicode parts of
+/// `CharExt` and `UnicodeStrPrelude` traits are based on.
+pub const UNICODE_VERSION: UnicodeVersion = UnicodeVersion {
+ major: %s,
+ minor: %s,
+ micro: %s,
+ _priv: (),
+};
""" % unicode_version)
(canon_decomp, compat_decomp, gencats, combines,
to_upper, to_lower, to_title) = load_unicode_data("UnicodeData.txt")