1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
// Copyright 2017 The UNIC Project Developers. // // See the COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your // option. This file may not be copied, modified, or distributed // except according to those terms. #![forbid(unsafe_code, missing_docs)] //! # UNIC — UCD — Core //! //! A component of [`unic`: Unicode and Internationalization Crates for Rust](/unic/). //! //! Core create indicating the version of Unicode Character Database. /// Type of `UNICODE_VERSION` value: #[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Eq, Ord)] pub struct UnicodeVersion( pub u32, // Major version pub u32, // Minor version pub u32 // Micro (or Update) version ); impl UnicodeVersion { /// Major version pub fn major(&self) -> u32 { self.0 } /// Minor version pub fn minor(&self) -> u32 { self.1 } /// Micro (or Update) version pub fn micro(&self) -> u32 { self.2 } } /// The [Unicode version](http://www.unicode.org/versions/) of data pub const UNICODE_VERSION: UnicodeVersion = include!("tables/unicode_version.rsv"); #[cfg(test)] mod tests { use super::*; #[test] fn valid_versions() { assert!(UNICODE_VERSION.major() > 0); // Current release schedule of Unicode is to have one Major version update each year, with // no Minor updates. We hard-code this internal policy while it stans. assert!(UNICODE_VERSION.minor() == 0); } }