Converting between extprim::u128::u128 and primitive u128 in Rust?

Multi tool use
Multi tool use








up vote
1
down vote

favorite












I'm working with an old Rust module that uses the extprim crate to provide a u128 type.



I'm trying to use this with a newer crate that uses Rust's primitive u128 type (available since Rust 1.26).



What's an efficient way to convert back and forth between these two types?










share|improve this question



















  • 2




    I would suggest opening an issue or providing a pull request and remove that type in that crate completly ;)
    – hellow
    Nov 8 at 12:56






  • 2




    Maybe as_built_in? (docs.rs/extprim/1.6.0/src/extprim/u128.rs.html#178)
    – phimuemue
    Nov 8 at 13:02










  • @phimuemue that looks like a great option - I didn't find it in the public docs, I guess because it's only conditionally available?
    – Dave Challis
    Nov 8 at 13:31






  • 1




    @phimuemue look at my answer, it is even easier than that, thanks for the hint! ;)
    – hellow
    Nov 8 at 13:42














up vote
1
down vote

favorite












I'm working with an old Rust module that uses the extprim crate to provide a u128 type.



I'm trying to use this with a newer crate that uses Rust's primitive u128 type (available since Rust 1.26).



What's an efficient way to convert back and forth between these two types?










share|improve this question



















  • 2




    I would suggest opening an issue or providing a pull request and remove that type in that crate completly ;)
    – hellow
    Nov 8 at 12:56






  • 2




    Maybe as_built_in? (docs.rs/extprim/1.6.0/src/extprim/u128.rs.html#178)
    – phimuemue
    Nov 8 at 13:02










  • @phimuemue that looks like a great option - I didn't find it in the public docs, I guess because it's only conditionally available?
    – Dave Challis
    Nov 8 at 13:31






  • 1




    @phimuemue look at my answer, it is even easier than that, thanks for the hint! ;)
    – hellow
    Nov 8 at 13:42












up vote
1
down vote

favorite









up vote
1
down vote

favorite











I'm working with an old Rust module that uses the extprim crate to provide a u128 type.



I'm trying to use this with a newer crate that uses Rust's primitive u128 type (available since Rust 1.26).



What's an efficient way to convert back and forth between these two types?










share|improve this question















I'm working with an old Rust module that uses the extprim crate to provide a u128 type.



I'm trying to use this with a newer crate that uses Rust's primitive u128 type (available since Rust 1.26).



What's an efficient way to convert back and forth between these two types?







rust






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 8 at 13:50

























asked Nov 8 at 12:42









Dave Challis

1,4401336




1,4401336







  • 2




    I would suggest opening an issue or providing a pull request and remove that type in that crate completly ;)
    – hellow
    Nov 8 at 12:56






  • 2




    Maybe as_built_in? (docs.rs/extprim/1.6.0/src/extprim/u128.rs.html#178)
    – phimuemue
    Nov 8 at 13:02










  • @phimuemue that looks like a great option - I didn't find it in the public docs, I guess because it's only conditionally available?
    – Dave Challis
    Nov 8 at 13:31






  • 1




    @phimuemue look at my answer, it is even easier than that, thanks for the hint! ;)
    – hellow
    Nov 8 at 13:42












  • 2




    I would suggest opening an issue or providing a pull request and remove that type in that crate completly ;)
    – hellow
    Nov 8 at 12:56






  • 2




    Maybe as_built_in? (docs.rs/extprim/1.6.0/src/extprim/u128.rs.html#178)
    – phimuemue
    Nov 8 at 13:02










  • @phimuemue that looks like a great option - I didn't find it in the public docs, I guess because it's only conditionally available?
    – Dave Challis
    Nov 8 at 13:31






  • 1




    @phimuemue look at my answer, it is even easier than that, thanks for the hint! ;)
    – hellow
    Nov 8 at 13:42







2




2




I would suggest opening an issue or providing a pull request and remove that type in that crate completly ;)
– hellow
Nov 8 at 12:56




I would suggest opening an issue or providing a pull request and remove that type in that crate completly ;)
– hellow
Nov 8 at 12:56




2




2




Maybe as_built_in? (docs.rs/extprim/1.6.0/src/extprim/u128.rs.html#178)
– phimuemue
Nov 8 at 13:02




Maybe as_built_in? (docs.rs/extprim/1.6.0/src/extprim/u128.rs.html#178)
– phimuemue
Nov 8 at 13:02












@phimuemue that looks like a great option - I didn't find it in the public docs, I guess because it's only conditionally available?
– Dave Challis
Nov 8 at 13:31




@phimuemue that looks like a great option - I didn't find it in the public docs, I guess because it's only conditionally available?
– Dave Challis
Nov 8 at 13:31




1




1




@phimuemue look at my answer, it is even easier than that, thanks for the hint! ;)
– hellow
Nov 8 at 13:42




@phimuemue look at my answer, it is even easier than that, thanks for the hint! ;)
– hellow
Nov 8 at 13:42












1 Answer
1






active

oldest

votes

















up vote
3
down vote



accepted










Update:



When your rustc version is greater than 1.26.0 the From trait is implemented and you can use into respectively from easily.



For a lower version than that see below.




As a note: "The most efficient way" is very subjective.



I would use the low64() and high64() methods to generate a rust u128.



extern crate extprim; // 1.6.0

use extprim::u128;

fn main() u128::from(number.low64());
println!(":?", number);
assert_eq!(number.to_string(), real_number.to_string());

// and back
let old_number = u128::u128::from_parts((real_number >> 64) as u64, (real_number) as u64);
assert_eq!(number, old_number);



(playground)



Since you can't compare both directly, I used the to_string() function to convert them to a string and compare those.






share|improve this answer


















  • 1




    You could convert the extprim::u128 to a string and then parse a u128 out of the string, that would be a way too, but not very efficient :D
    – hellow
    Nov 8 at 13:32










  • yup, that's the implementation I wanted to avoid :)
    – Dave Challis
    Nov 8 at 13:51











Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













 

draft saved


draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53207980%2fconverting-between-extprimu128u128-and-primitive-u128-in-rust%23new-answer', 'question_page');

);

Post as a guest






























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes








up vote
3
down vote



accepted










Update:



When your rustc version is greater than 1.26.0 the From trait is implemented and you can use into respectively from easily.



For a lower version than that see below.




As a note: "The most efficient way" is very subjective.



I would use the low64() and high64() methods to generate a rust u128.



extern crate extprim; // 1.6.0

use extprim::u128;

fn main() u128::from(number.low64());
println!(":?", number);
assert_eq!(number.to_string(), real_number.to_string());

// and back
let old_number = u128::u128::from_parts((real_number >> 64) as u64, (real_number) as u64);
assert_eq!(number, old_number);



(playground)



Since you can't compare both directly, I used the to_string() function to convert them to a string and compare those.






share|improve this answer


















  • 1




    You could convert the extprim::u128 to a string and then parse a u128 out of the string, that would be a way too, but not very efficient :D
    – hellow
    Nov 8 at 13:32










  • yup, that's the implementation I wanted to avoid :)
    – Dave Challis
    Nov 8 at 13:51















up vote
3
down vote



accepted










Update:



When your rustc version is greater than 1.26.0 the From trait is implemented and you can use into respectively from easily.



For a lower version than that see below.




As a note: "The most efficient way" is very subjective.



I would use the low64() and high64() methods to generate a rust u128.



extern crate extprim; // 1.6.0

use extprim::u128;

fn main() u128::from(number.low64());
println!(":?", number);
assert_eq!(number.to_string(), real_number.to_string());

// and back
let old_number = u128::u128::from_parts((real_number >> 64) as u64, (real_number) as u64);
assert_eq!(number, old_number);



(playground)



Since you can't compare both directly, I used the to_string() function to convert them to a string and compare those.






share|improve this answer


















  • 1




    You could convert the extprim::u128 to a string and then parse a u128 out of the string, that would be a way too, but not very efficient :D
    – hellow
    Nov 8 at 13:32










  • yup, that's the implementation I wanted to avoid :)
    – Dave Challis
    Nov 8 at 13:51













up vote
3
down vote



accepted







up vote
3
down vote



accepted






Update:



When your rustc version is greater than 1.26.0 the From trait is implemented and you can use into respectively from easily.



For a lower version than that see below.




As a note: "The most efficient way" is very subjective.



I would use the low64() and high64() methods to generate a rust u128.



extern crate extprim; // 1.6.0

use extprim::u128;

fn main() u128::from(number.low64());
println!(":?", number);
assert_eq!(number.to_string(), real_number.to_string());

// and back
let old_number = u128::u128::from_parts((real_number >> 64) as u64, (real_number) as u64);
assert_eq!(number, old_number);



(playground)



Since you can't compare both directly, I used the to_string() function to convert them to a string and compare those.






share|improve this answer














Update:



When your rustc version is greater than 1.26.0 the From trait is implemented and you can use into respectively from easily.



For a lower version than that see below.




As a note: "The most efficient way" is very subjective.



I would use the low64() and high64() methods to generate a rust u128.



extern crate extprim; // 1.6.0

use extprim::u128;

fn main() u128::from(number.low64());
println!(":?", number);
assert_eq!(number.to_string(), real_number.to_string());

// and back
let old_number = u128::u128::from_parts((real_number >> 64) as u64, (real_number) as u64);
assert_eq!(number, old_number);



(playground)



Since you can't compare both directly, I used the to_string() function to convert them to a string and compare those.







share|improve this answer














share|improve this answer



share|improve this answer








edited Nov 8 at 13:48

























answered Nov 8 at 13:01









hellow

3,69812041




3,69812041







  • 1




    You could convert the extprim::u128 to a string and then parse a u128 out of the string, that would be a way too, but not very efficient :D
    – hellow
    Nov 8 at 13:32










  • yup, that's the implementation I wanted to avoid :)
    – Dave Challis
    Nov 8 at 13:51













  • 1




    You could convert the extprim::u128 to a string and then parse a u128 out of the string, that would be a way too, but not very efficient :D
    – hellow
    Nov 8 at 13:32










  • yup, that's the implementation I wanted to avoid :)
    – Dave Challis
    Nov 8 at 13:51








1




1




You could convert the extprim::u128 to a string and then parse a u128 out of the string, that would be a way too, but not very efficient :D
– hellow
Nov 8 at 13:32




You could convert the extprim::u128 to a string and then parse a u128 out of the string, that would be a way too, but not very efficient :D
– hellow
Nov 8 at 13:32












yup, that's the implementation I wanted to avoid :)
– Dave Challis
Nov 8 at 13:51





yup, that's the implementation I wanted to avoid :)
– Dave Challis
Nov 8 at 13:51


















 

draft saved


draft discarded















































 


draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53207980%2fconverting-between-extprimu128u128-and-primitive-u128-in-rust%23new-answer', 'question_page');

);

Post as a guest














































































iOSRgyR1wYikBvUJWbjsqp3E62 J iI rlAJ,mcRrLi9j,5WJ1Z6 MPP,y 3apHJGWfk,wMxLbk1C 25 xOGRh7BnA
n0Kq8zkveuQIHjDon5nPMhNO,P

Popular posts from this blog

Old paper Canadian currency

𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

ữḛḳṊẴ ẋ,Ẩṙ,ỹḛẪẠứụỿṞṦ,Ṉẍừ,ứ Ị,Ḵ,ṏ ṇỪḎḰṰọửḊ ṾḨḮữẑỶṑỗḮṣṉẃ Ữẩụ,ṓ,ḹẕḪḫỞṿḭ ỒṱṨẁṋṜ ḅẈ ṉ ứṀḱṑỒḵ,ḏ,ḊḖỹẊ Ẻḷổ,ṥ ẔḲẪụḣể Ṱ ḭỏựẶ Ồ Ṩ,ẂḿṡḾồ ỗṗṡịṞẤḵṽẃ ṸḒẄẘ,ủẞẵṦṟầṓế