Я хотел бы написать сервер, который изменяет размеры огромного изображения.Поскольку загрузка каждого запроса заняла бы много времени, я решил предварительно загрузить его.К сожалению, я получил следующую ошибку:
Compiling hello_world v0.0.0 (/tmp/Rocket/examples/hello_world)
error[E0015]: calls in statics are limited to constant functions, tuple structs and tuple variants
--> examples/hello_world/src/main.rs:9:35
|
9 | static img: image::DynamicImage = image::open("/home/d33tah/tmp/combined.png").unwrap();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0015]: calls in statics are limited to constant functions, tuple structs and tuple variants
--> examples/hello_world/src/main.rs:9:35
|
9 | static img: image::DynamicImage = image::open("/home/d33tah/tmp/combined.png").unwrap();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0015`.
error: Could not compile `hello_world`.
To learn more, run the command again with --verbose.
Вот код:
#![feature(proc_macro_hygiene, decl_macro)]
#[macro_use] extern crate rocket;
#[cfg(test)] mod tests;
extern crate image;
static img: image::DynamicImage = image::open("/home/d33tah/tmp/combined.png").unwrap();
#[get("/")]
fn hello() -> Vec<u8> {
"".into()
}
fn main() {
rocket::ignite().mount("/", routes![hello]).launch();
}
Чтобы скомпилировать его, вам нужно установить rocket
на основе его последней проверки Github (в настоящее время:831d8dfbe30dd69f0367a75361e027127b2100e1) и image
crate.
Возможно ли создать такую глобальную переменную?Если нет, есть ли у меня какие-либо другие варианты?
РЕДАКТИРОВАТЬ: это было помечено как дубликат этого вопроса, но, как показал Boiethios, этот конкретный случай лучше решается с помощью API Rocket.