【rust/egui】(一)从编译运行template开始

这篇具有很好参考价值的文章主要介绍了【rust/egui】(一)从编译运行template开始。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说在前面

  • rust新手,egui没啥找到啥教程,这里自己记录下学习过程
  • 环境:windows11 22H2
  • rust版本:rustc 1.71.1
  • egui版本:0.22.0
  • eframe版本:0.22.0
  • rust windows安装参考:这里
  • 本文默认读者已安装相关环境(git、vscode等)

关于egui

  • egui github
  • demo online
    【rust/egui】(一)从编译运行template开始,Rust,rust,开发语言,后端
    【rust/egui】(一)从编译运行template开始,Rust,rust,开发语言,后端
  • 关于immediate mode
    wikipedia
    microsoft learn

开始吧

  • clone下这个项目(也可以使用github提供的Use this template功能),这是官方说明中的一个template
    git clone https://github.com/emilk/eframe_template.git
    
  • 删除项目中的toolchain文件
    【rust/egui】(一)从编译运行template开始,Rust,rust,开发语言,后端
  • 编译运行(cargo换源见安装参考)
    PS E:\eframe_template-master> cargo run 
        Updating `rsproxy` index
    remote: Counting objects: 32254, done.
    remote: Compressing objects: 100% (14081/14081), done.
    remote: Total 32254 (delta 23946), reused 25317 (delta 17601)
    Receiving objects: 100% (32254/32254), 7.70 MiB | 7.47 MiB/s, done.
    Resolving deltas: 100% (23946/23946), completed with 2726 local objects.
    From https://rsproxy.cn/crates.io-index
     + 69b92ab647...84fdefbd80 HEAD       -> origin/HEAD  (forced update)
      Downloaded ...
      Downloaded 21 crates (14.4 MB) in 12.60s (largest was `windows` at 11.9 MB)
       Compiling ...
       Compiling egui-winit v0.22.0
       Compiling eframe v0.22.0
       Compiling eframe_template v0.1.0 (E:\Workspace\eframe_template-master)
        Finished dev [unoptimized + debuginfo] target(s) in 1m 12s
         Running `target\debug\eframe_template.exe`
    
    可以看到我们的应用窗口打开了
    【rust/egui】(一)从编译运行template开始,Rust,rust,开发语言,后端

小小的尝试

  • 根据readme中的内容,我们可以修改下工程的名字,现在我们的应用名称是eframe template,我们将它改成demo app
  • 修改Cargo.toml
    [package] 
    name = "demo_app" // 修改这里
    version = "0.1.0"
    authors = ["o0olele <o0o@lele.com>"] // 修改这里
    edition = "2021"
    rust-version = "1.71" // 这里可以替换成我们使用的rust版本
    
  • 修改src/main.rs
    #![warn(clippy::all, rust_2018_idioms)]
    #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release
    
    // When compiling natively:
    #[cfg(not(target_arch = "wasm32"))]
    fn main() -> eframe::Result<()> {
        env_logger::init(); // Log to stderr (if you run with `RUST_LOG=debug`).
    
        let native_options = eframe::NativeOptions::default();
        eframe::run_native(
            "demo app", // `eframe template` to `demo app`
            native_options,
            Box::new(|cc| Box::new(demo_app::TemplateApp::new(cc))), 
            // `eframe_template::TemplateApp` to `demo_app::TemplateApp`
        )
    }
    
    // When compiling to web using trunk:
    #[cfg(target_arch = "wasm32")]
    fn main() {
        // Redirect `log` message to `console.log` and friends:
        eframe::WebLogger::init(log::LevelFilter::Debug).ok();
    
        let web_options = eframe::WebOptions::default();
    
        wasm_bindgen_futures::spawn_local(async {
            eframe::WebRunner::new()
                .start(
                    "the_canvas_id", // hardcode it
                    web_options,
                    Box::new(|cc| Box::new(demo_app::TemplateApp::new(cc))), 
                    // `eframe_template::TemplateApp` to `demo_app::TemplateApp`
                )
                .await
                .expect("failed to start eframe");
        });
    }
    
  • 再次cargo run,可以看到我们的应用名称已经变成了demo app
    【rust/egui】(一)从编译运行template开始,Rust,rust,开发语言,后端
  • readme中的另外两个修改是web 应用构建相关的,后面再说

尝试下web

  • 添加wasm相关资源
    set $RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup; rustup target add wasm32-unknown-unknown 
    
  • 安装trunk(真tm吃cpu)
    cargo install --locked trunk
    
  • 开启trunk server(真tm吃cpu)
    trunk serve
    
  • 浏览器打开http://127.0.0.1:8080
    【rust/egui】(一)从编译运行template开始,Rust,rust,开发语言,后端
  • 可以看到我们的应用名称还是eframe_template,这个时候我们可以进行一些修改
  • 修改index.html
    ...
    <title>demo app</title>
    ...
    
  • 修改assets/sw.js
    var cacheName = 'egui-template-pwa';
    var filesToCache = [
      './',
      './index.html',
      './demo_app.js',
      './demo_app_bg.wasm',
    ];
    
    /* Start the service worker and cache all of the app's content */
    self.addEventListener('install', function (e) {
      e.waitUntil(
        caches.open(cacheName).then(function (cache) {
          return cache.addAll(filesToCache);
        })
      );
    });
    
    /* Serve cached content when offline */
    self.addEventListener('fetch', function (e) {
      e.respondWith(
        caches.match(e.request).then(function (response) {
          return response || fetch(e.request);
        })
      );
    });
    
    【rust/egui】(一)从编译运行template开始,Rust,rust,开发语言,后端

一些相关数据

  • 该桌面应用内存占用(cargo run --release),有点高啊
    【rust/egui】(一)从编译运行template开始,Rust,rust,开发语言,后端
  • 可执行程序大小(.eframe_template-master\target\release目录下)
    【rust/egui】(一)从编译运行template开始,Rust,rust,开发语言,后端

文章来源地址https://www.toymoban.com/news/detail-644831.html

到了这里,关于【rust/egui】(一)从编译运行template开始的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【rust/egui】(四)看看template的app.rs:update以及组件TopBottomPanel&Button

    rust新手,egui没啥找到啥教程,这里自己记录下学习过程 环境:windows11 22H2 rust版本:rustc 1.71.1 egui版本:0.22.0 eframe版本:0.22.0 上一篇:这里 update 实际上还是 eframe::App 的特征,并非 egui 的内容。其官方注解如下: update 函数会在需要重绘ui(或者其他)的时候被调用,一秒可能

    2024年02月11日
    浏览(44)
  • 【rust/egui】(二)看看template的main函数:日志输出以及eframe run_native

    rust新手,egui没啥找到啥教程,这里自己记录下学习过程 环境:windows11 22H2 rust版本:rustc 1.71.1 egui版本:0.22.0 eframe版本:0.22.0 上一篇:这里 首先让我们看看 main.rs 中有些什么 在 eframe 中使用的日志库为 log 以及 env_logger ,其日志等级有5个: 我们可以在main函数中添加测试一

    2024年02月13日
    浏览(40)
  • Rust图形界面:从零开始创建eGUi项目

    egui系列:初步 首先,用cargo创建一个新项目,并添加eframe 尽管默认创建的项目只实现了输出Hello world功能,但添加了eframe库,所以下载需要一点时间。 创建成功后,直接把下面的代码写入main.rs文件中,这些代码来自egui的hello_world示例。 然后运行cargo run,结果如下所示 在e

    2024年02月01日
    浏览(56)
  • 【rust/bevy】从game template开始

    操作系统:win11 rust版本:rustc 1.77.0-nightly bevy版本:0.12 rust安装 这里 windows 下建议使用 msvc 版本 bevy 安装 这里 clone代码 运行 结果 template中的例子是2d的,我们稍微修改下 首先增加一个 CameraController ,代码在 bevy 的例程中也可以找到 再添加一个 SceneSetup ,用于初始化场景和相

    2024年01月18日
    浏览(55)
  • RUST egui部署到github

    接上文,当用trunk serve编译部署后,工程目录下就会有一个dist目录,这个目录就是用来部署用的。 :) 创建一个github repo,这个repo的名称有固定格式要求,就是你自己的用户名+github.io,比如我的用户名是crazyskady,那么这个repo就叫crazyskady.github.io 部署就简单了,先把自己的

    2024年03月21日
    浏览(50)
  • [Rust GUI]eframe(egui框架)代码示例

    你可以使用egui的其他绑定,例如:egui-miniquad,bevy_egui,egui_sdl2_gl 等。 egui库相当于核心库,需要借助eframe框架写界面。 eframe使用egui_glow渲染,而egui_glow需要opengl2.0+。 1、访问微软官网下载生成工具 2、勾选这个 3、对比勾选细节 4、点击安装 5、安装完成 6、关闭 Visual Studio

    2024年02月08日
    浏览(45)
  • 【Rust日报】2023-02-14 Rust GUI 框架对比: Tauri vs Iced vs egui

    Rust GUI 框架对比: Tauri vs Iced vs egui Tauri:使用系统的 webview 来渲染 HTML/JS 的前端。你可以选择任何前端框架。后台是用Rust编写的,可以通过内置的方法与前台通信。 Iced: 受 Elm 启发的(响应式)GUI库。在桌面上使用 wgpu 进行渲染;实验性的web后端创建DOM进行渲染。所有代码

    2024年02月02日
    浏览(32)
  • 【rust/egui】(十)使用painter绘制一些图形—connections

    rust新手,egui没啥找到啥教程,这里自己记录下学习过程 环境:windows11 22H2 rust版本:rustc 1.71.1 egui版本:0.22.0 eframe版本:0.22.0 上一篇:这里 在上一节我们使用 painter 绘制了一个可以拖拽的小方块,现在我们来用 painter 将两个小方块连接起来,类似这种: 首先我们需要在我们

    2024年02月09日
    浏览(39)
  • 【rust/egui】(八)使用panels给你的应用划分功能区块

    rust新手,egui没啥找到啥教程,这里自己记录下学习过程 环境:windows11 22H2 rust版本:rustc 1.71.1 egui版本:0.22.0 eframe版本:0.22.0 上一篇:这里 panel 是ui上的一块区域,比如我们打开CSDN的markdown编辑器,它大致上可以划分成四(五)块 (当然实际实现上这四块区域可能不是并列的

    2024年02月09日
    浏览(41)
  • 【从零开始的rust web开发之路 一】axum学习使用

    第一章 axum学习使用 本职java开发,兼架构设计。空闲时间学习了rust,目前还不熟练掌握。想着用urst开发个web服务,正好熟悉一下rust语言开发。 目前rust 语言web开发相关的框架已经有很多,但还是和java,go语言比不了。 这个系列想完整走一遍web开发,后续有时间就出orm,还

    2024年02月12日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包