下面是用作添加图像参考的存储库:https://github.com/emilk/egui/blob/master/examples/retained_image/src/main.rs
我得到这个错误时,试图绘制一个图像到屏幕上的这行代码:
date_backdrop.show(ui);
"不匹配的类型需要可变引用&mut egui::ui::Ui
发现可变引用&mut Ui
可能使用了两个不同版本的crate egui
?"
不知道如何解决这个问题。仍然是新生 rust
下面是我代码:
use eframe::egui;
use egui_extras::RetainedImage;
struct InitView;
impl eframe::epi::App for InitView {
fn name(&self) -> &str {
"CheckIt"
}
fn update(&mut self,ctx: &eframe::egui::CtxRef,frame: &mut eframe::epi::Frame<'_>) {
let date_backdrop = RetainedImage::from_image_bytes(
"date_backdrop.png",
include_bytes!("date_backdrop.png"),
)
.unwrap();
//background color
let frame = egui::containers::Frame {
fill: egui::Color32::from_rgb(241, 233, 218),
..Default::default()
};
//main window
egui::CentralPanel::default().frame(frame).show(ctx, |ui| {
ui.heading("This is an image:");
date_backdrop.show(ui);
});
}
}
fn main(){
let app: InitView = InitView;
let win_options = eframe::NativeOptions{
initial_window_size: Some(egui::Vec2::new(386.0, 636.0)),
always_on_top: true,
resizable: false,
..Default::default()
};
eframe::run_native(Box::new(app), win_options);
}
这是我的货物。
[package]
name = "checkit"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
eframe = "0.14.0"
image = { version = "0.24", default-features = false, features = ["png"] }
egui_extras = { version = "0.20.0", features = ["image"] }
1条答案
按热度按时间tp5buhyn1#
如错误所示,依赖关系树中有两个不兼容的
egui
版本:eframe 0.14
pulls inegui 0.14
,而egui_extras 0.20
pulls inegui 0.20
。当主版本为0时,不同的次版本被视为不兼容,因此它们的类型不可互换。据我所知,
eframe
和egui_extras
都依赖于egui
的同一个次要版本作为它们自己的版本,因此必须同步这两个依赖项以使用同一个次要版本,最简单的方法可能是将eframe
迁移到0.20
。