TL; DR: puede obtener un &'static strde un Stringque en sí tiene 'statictoda la vida.
Aunque las otras respuestas son correctas y más útiles, hay un caso de borde (no tan útil), donde de hecho puede convertir Stringa en a &'static str:
La vida útil de una referencia siempre debe ser más corta o igual a la vida útil del objeto referenciado. Es decir, el objeto referenciado tiene que vivir más (o el mismo tiempo) que la referencia. Dado que 'staticsignifica toda la vida útil de un programa, no existe una vida útil más larga. Pero una vida igual será suficiente. Entonces, si Stringtiene una vida útil de 'static, puede obtener una &'static strreferencia de él.
Teóricamente, la creación de un statictipo se Stringha hecho posible con Rust 1.31 cuando const fnse lanzó la función. Desafortunadamente, la única función const que devuelve a Stringes String::new()actualmente, y todavía está detrás de una puerta de función (por lo que se requiere Rust nightly por ahora).
Entonces, el siguiente código hace la conversión deseada (usando todas las noches) ... y en realidad no tiene ningún uso práctico, excepto para mostrar que es posible en este caso de borde.
#![feature(const_string_new)]
static MY_STRING: String = String::new();
fn do_something(_: &'static str) {
}
fn main() {
do_something(&MY_STRING);
}
'staticEl tiempo de vida implicaría que la cadena nunca se desasignará, es decir, una pérdida de memoria. ¿Por qué necesitas en&'static strlugar de&'a stralgo apropiado'a?