I just released a paper on how to optimally find Mersenne Primes of form 2^p - 1.
It's mathematically super simple, and easy to implement in software.
The paper provides proof of concept Crystal code for a single core implementation.
Currently the GIMPS project generates them by directly computing|testing 2^p -1 by directly using candidate values of p, which my method eliminates having to do. But they already have the software to generate and do the primality tests on those large values, which are 100s of digits long.
My question: does the Rust ecosystem have the ability to perform this large number math natively, or able to took into the GIMPS apps and use them to do the math, storage, etc?
It would be interesting to have an optimized Rustified version of GIMPS, since it's taking over the world in so many other areas. 
https://www.academia.edu/178745494/Optimal_Mersenne_Primes_Search_Using_Modular_Groups
You'd have to be a bit more specific about "natively" I guess, but it does provide large number primitives like carrying_mul that LLVM should handle fine without ASM.
There's also, of course, plenty of big integer crates like num-bigint — Rust math library // Lib.rs
You shouldn't have any trouble implementing this in Rust, in short.
Thanks.
I posted the update paper|code (available at the link)
It's now orders-of-magnitude faster.
I've posted its output, which only stops because the software couldn't continue to process those larger numbers. But if that is fixed, then anyone on their laptop can generate as many Mp as their hearts|time allows.
➜ mps ./mpgs
Starting search for next Mp with known p = 3
[5, 2, 31]
Elapsed time = 00:00:00.000057178
Starting search for next Mp with known p = 5
[7, 2, 127]
Elapsed time = 00:00:00.000024556
Starting search for next Mp with known p = 7
[13, 6, 8191]
Elapsed time = 00:00:00.000020819
Starting search for next Mp with known p = 13
[17, 4, 131071]
Elapsed time = 00:00:00.000026760
Starting search for next Mp with known p = 17
[19, 2, 524287]
Elapsed time = 00:00:00.000022142
Starting search for next Mp with known p = 19
[31, 12, 2147483647]
Elapsed time = 00:00:00.000028463
Starting search for next Mp with known p = 31
[61, 30, 2305843009213693951]
Elapsed time = 00:00:00.000046226
Starting search for next Mp with known p = 61
[89, 28, 618970019642690137449562111]
Elapsed time = 00:00:00.000059962
Starting search for next Mp with known p = 89
[107, 18, 162259276829213363391578010288127]
Elapsed time = 00:00:00.000050865
Starting search for next Mp with known p = 107
[127, 20, 170141183460469231731687303715884105727]
Elapsed time = 00:00:00.000048701
Starting search for next Mp with known p = 127
[521, 394, 6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151]
Elapsed time = 00:00:00.002608888
Starting search for next Mp with known p = 521
[607, 86, 531137992816767098689588206552468627329593117727031923199444138200403559860852242739162502265229285668889329486246501015346579337652707239409519978766587351943831270835393219031728127]
Elapsed time = 00:00:00.002203116