1

I'm new to rust and I'm looking for a way to convert 1 to "1" at compile time;

pub fn foo_if_fizz(fizzish: &str) -> &str {
    if fizzish == "fizz" {
        "foo"
    } else {
        &(1.to_string()). <-- returns a reference to data owned by the current function
    }
}

this error is completely logical, I'm aware of it. But how can we manage to do (Even if it requires the use of unsafe)?

I have an idea but I don't know if it is feasible. I could allocate some memory space at compile time, like for example "0" which is an i32. Then inside the function, I could get the address then access the memory directly and change the value inside.

The questing is what is the best way

1 Answers1

1

I would assume you are looking for this one:

extern crate lazy_static;   
use lazy_static::lazy_static;

pub fn foo_if_fizz(fizzish: &str) -> &str {
    if fizzish == "fizz" {
        "foo"
    } else {
        lazy_static! {
            static ref ONE: String = 1.to_string();
        }
        &ONE
    }
}

Nevertheless, the only correct answer to the question at hand is Friedman's "1"!

Kaplan
  • 2,572
  • 13
  • 14