| Crates.io | palindromeda |
| lib.rs | palindromeda |
| version | 2.1.0 |
| created_at | 2024-12-07 08:12:23.787846+00 |
| updated_at | 2025-09-12 14:55:11.847285+00 |
| description | Palindrome number generator and checker at blazing speed |
| homepage | |
| repository | https://github.com/CaelusV/palindromeda |
| max_upload_size | |
| id | 1475431 |
| size | 42,810 |
A palindrome is a letter, number or any other sequence that is the exact same forwards and backwards. This crate is specifically for palindromic numbers.
If you want to check whether an unsigned integer is a palindrome,
use the is_palindrome function:
let pal1: u64 = 8008; // This is a palindrome.
println!("Is {pal1} a palindrome? {}", pal1.is_palindrome());
let pal2: u8 = 69; // This is NOT a palindrome.
println!("Is {pal2} a palindrome? {}", pal2.is_palindrome());
Output:
Is 8008 a palindrome? true
Is 69 a palindrome? false
Generating a palindrome is as easy as using either Palindrome::le,
Palindrome::ge or Palindrome::closest for the nearest palindrome
to a number, or by retrieving it based on its palindrome-index
with Palindrome::nth:
use palindromeda::Palindrome;
let number1: u64 = 420; // This number is too high.
// Let's get a palindrome that's lower.
println!("Palindrome that's lower: {}", Palindrome::le(number1));
let number2: u64 = 1337;
// Let's get a palindrome that's higher.
println!("Palindrome that's higher: {}", Palindrome::ge(number2));
let number3: u64 = 5340; // Which palindrome is closest?
println!("Closest palindrome: {}", Palindrome::closest(number3));
let number4: usize = 1000; // 1001st palindrome (0-based indexing)
println!("1001st palindrome: {}", Palindrome::nth(number4).unwrap());
Output:
Palindrome that's lower: 414
Palindrome that's higher: 1441
Closest palindrome: 5335
1001st palindrome: 90109
And if you want, you can go from palindrome to palindrome with the
Palindrome::previous and Palindrome::next functions.
With PalindromeIter you can iterate over a large swathe of palindromes.
You can iterate over a custom range with PalindromeIter::from_u64 or
iterate over the first n palindromes with PalindromeIter::first_n.
You can also iterate over the first n palindromes after (and including)
a specific palindrome with PalindromeIter::first_n_from.
Be sure to use PalindromeIter::len for quickly determining the
length of the iterator.