Largest Prime factor (Project Euler in Rust)
I think
    for p in sieve((600851475143_f32.sqrt()) as usize).iter().rev() {

should be
    for p in sieve(((n as f32).sqrt()) as usize).iter().rev() {

Alternative approach
You could chain an iterator in runtime:
#[test]
fn main_playground() {
    // Sieve iterator-style
    let number: u128 = 600851475143;
    let upper_limit: u128 = (number as f32).sqrt().floor() as _;

    let mut sieve: Box&lt;dyn Iterator&lt;Item = _&gt;&gt; = Box::new(2..=upper_limit);

    while let Some(prime_number) = sieve.next() {
        sieve = Box::new(sieve.filter(move |&amp;x| x % prime_number != 0));
        if number % (prime_number as u128) == 0 {
            dbg!(prime_number);
        }
    }
}

The answer is still 6857. But output is
running 1 test
[src\problem_003.rs:12] prime_number = 71  
[src\problem_003.rs:12] prime_number = 839 
[src\problem_003.rs:12] prime_number = 1471
[src\problem_003.rs:12] prime_number = 6857

I can think of many more approaches to this. I'd actually build a Sieve iterator
if I were you.