File tree Expand file tree Collapse file tree 2 files changed +63
-0
lines changed Expand file tree Collapse file tree 2 files changed +63
-0
lines changed Original file line number Diff line number Diff line change 1+ use std:: env;
2+ use std:: process:: Command ;
3+ use std:: str:: { self , FromStr } ;
4+
5+ // This build script is adapted from serde.
6+ // See https://github.com/serde-rs/serde/blob/9c39115f827170f7adbdfa4115f5916c5979393c/serde/build.rs
7+ fn main ( ) {
8+ let minor = match rustc_minor_version ( ) {
9+ Some ( minor) => minor,
10+ None => return ,
11+ } ;
12+
13+ let target = env:: var ( "TARGET" ) . unwrap ( ) ;
14+ let emscripten = target == "asmjs-unknown-emscripten" || target == "wasm32-unknown-emscripten" ;
15+
16+ // 128-bit integers stabilized in Rust 1.26:
17+ // https://blog.rust-lang.org/2018/05/10/Rust-1.26.html
18+ //
19+ // Disabled on Emscripten targets as Emscripten doesn't
20+ // currently support integers larger than 64 bits.
21+ if minor >= 26 && !emscripten {
22+ println ! ( "cargo:rustc-cfg=integer128" ) ;
23+ }
24+ }
25+
26+ fn rustc_minor_version ( ) -> Option < u32 > {
27+ let rustc = match env:: var_os ( "RUSTC" ) {
28+ Some ( rustc) => rustc,
29+ None => return None ,
30+ } ;
31+
32+ let output = match Command :: new ( rustc) . arg ( "--version" ) . output ( ) {
33+ Ok ( output) => output,
34+ Err ( _) => return None ,
35+ } ;
36+
37+ let version = match str:: from_utf8 ( & output. stdout ) {
38+ Ok ( version) => version,
39+ Err ( _) => return None ,
40+ } ;
41+
42+ let mut pieces = version. split ( '.' ) ;
43+ if pieces. next ( ) != Some ( "rustc 1" ) {
44+ return None ;
45+ }
46+
47+ let next = match pieces. next ( ) {
48+ Some ( next) => next,
49+ None => return None ,
50+ } ;
51+
52+ u32:: from_str ( next) . ok ( )
53+ }
Original file line number Diff line number Diff line change @@ -144,6 +144,16 @@ impl Serializer for ToSendSerializer {
144144 take ( & mut self . kv , |kv| Box :: new ( ( kv, SingleKV ( key, val) ) ) ) ;
145145 Ok ( ( ) )
146146 }
147+ #[ cfg( integer128) ]
148+ fn emit_u128 ( & mut self , key : Key , val : u128 ) -> slog:: Result {
149+ take ( & mut self . kv , |kv| Box :: new ( ( kv, SingleKV ( key, val) ) ) ) ;
150+ Ok ( ( ) )
151+ }
152+ #[ cfg( integer128) ]
153+ fn emit_i128 ( & mut self , key : Key , val : i128 ) -> slog:: Result {
154+ take ( & mut self . kv , |kv| Box :: new ( ( kv, SingleKV ( key, val) ) ) ) ;
155+ Ok ( ( ) )
156+ }
147157 fn emit_usize ( & mut self , key : Key , val : usize ) -> slog:: Result {
148158 take ( & mut self . kv , |kv| Box :: new ( ( kv, SingleKV ( key, val) ) ) ) ;
149159 Ok ( ( ) )
You can’t perform that action at this time.
0 commit comments