【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中有些什么#![warn(clippy::all, rust_2018_idioms)] #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // 在release模式中隐藏控制台窗口(实际上我怎么试也没找到这个窗口) 本文放弃关注// 非wasm架构 #[cfg(not(target_arch = "wasm32"))] fn main() -> eframe::Result<()> {env_logger::init(); // 初始化log参数,debug模式下仅会打印error日志let native_options = eframe::NativeOptions::default(); // 初始化eframe默认参数eframe::run_native("demo app",native_options,Box::new(|cc| Box::new(demo_app::TemplateApp::new(cc))),)// 启动eframe }// When compiling to web using trunk: #[cfg(target_arch = "wasm32")] // ... 本文暂不关注wasm相关内容
日志输出
- 在
eframe中使用的日志库为log以及env_logger,其日志等级有5个:pub enum Level {Error,Warn,Info,Debug,Trace, } - 我们可以在main函数中添加测试一下:
fn main() -> eframe::Result<()> {env_logger::init(); // Log to stderr (if you run with `RUST_LOG=debug`).log::info!("1");log::warn!("2");log::error!("3");log::trace!("4");log::debug!("5");// ... } - 执行
cargo run,只能看到error输出;使用cargo run --release的话什么日志都没有了[2023-08-13T09:20:59Z ERROR demo_app] 3 env_logger可以指定日志输出的级别以及目标,当我们在cmd下执行(注意powershell的设置环境变量的语法不一样):
这会将我们的项目(demo_app)下所有的级别的log进行输出,现在我们能看到所有级别的日志了set RUST_LOG=demo_app cargo run[2023-08-13T09:27:18Z INFO demo_app] 1 [2023-08-13T09:27:18Z WARN demo_app] 2 [2023-08-13T09:27:18Z ERROR demo_app] 3 [2023-08-13T09:27:18Z TRACE demo_app] 4 [2023-08-13T09:27:18Z DEBUG demo_app] 5- 现在我们尝试下将
eframe的日志都输出:
可以看到大量的日志输出:set RUST_LOG=eframe cargo run[2023-08-13T09:31:29Z DEBUG eframe] Using the glow renderer [2023-08-13T09:31:29Z DEBUG eframe::native::run] Entering the winit event loop (run_return)…
eframe初始化参数
-
在main函数中调用
eframe::run_native()时使用到了一个native_options,让我们看看这里面有些什么:always_on_top: bool Sets whether or not the window will always be on top of other windows at initialization.maximized: bool Show window in maximized modedecorated: bool On desktop: add window decorations (i.e. a frame around your app)? If false it will be difficult to move and resize the app.fullscreen: bool Start in (borderless) fullscreen?... -
我们可以试着改几个看看效果
- always_on_top
let mut native_options = eframe::NativeOptions::default(); native_options.always_on_top = true;
- decorated
let mut native_options = eframe::NativeOptions::default();native_options.always_on_top = true;native_options.decorated = false;
毫无灵魂了,甚至和背景融为一体了 - transparent
let mut native_options = eframe::NativeOptions::default();native_options.transparent = true; // 同时注释掉app.rs中 egui::CentralPanel::default() 代码
- always_on_top
-
其他详细参数见这里,大家可以自己试试
eframe::run_native
- 调用该函数创建我们的应用窗口,其定义为:
pub fn run_native(app_name: &str, // 应用名native_options: NativeOptions, // 初始化选项app_creator: AppCreator // 应用主逻辑 ) -> Result<()> - app_name
应用名称,在我们的例子中为demo app;同时该值也是我们的窗口显示的名称,同时也是持久化存储(下一节看看)目录的名称;


相关参考
- log
- env_logger
- log无法单独使用
相关文章:
【rust/egui】(二)看看template的main函数:日志输出以及eframe run_native
说在前面 rust新手,egui没啥找到啥教程,这里自己记录下学习过程环境:windows11 22H2rust版本:rustc 1.71.1egui版本:0.22.0eframe版本:0.22.0上一篇:这里 开始 首先让我们看看main.rs中有些什么…...
Eigen在QT中的配置
Eigen简介 Eigen支持包括固定大小、任意大小的所有矩阵操作,甚至是稀疏矩阵;支持所有标准的数值类型,并且可以扩展为自定义的数值类型;支持多种矩阵分解及其几何特征的求解;它不支持的模块生态系统提供了许多专门的功能…...
微服务04-elasticsearch
1、es概念 1.1 文档和字段 elasticsearch是面向**文档(Document)**存储的,可以是数据库中的一条商品数据,一个订单信息。文档数据会被序列化为json格式后存储在elasticsearch中: 而Json文档中往往包含很多的字段(Field),类似于数据库中的列。 1.2 索引和映射 索引(…...
uniapp 微信小程序 订阅消息
第一步,需要先去小程序官方挑选一下订阅模板拿到模板id 订阅按钮在头部导航上,所以 <u-navbar :bgColor"bgColor"><view class"u-nav-slot" slot"left" click"goSubscribe"><image :src"g…...
JDK8日期时间工具类
此文章为笔记,为阅读其他文章的感受、补充、记录、练习、汇总,非原创,感谢每个知识分享者。 文章目录 1. 旧版日期时间的问题2. 新日期时间API介绍3. 日期时间的常见操作4. 日期时间的修改和比较5. 格式化和解析操作6. Instant类7. 计算日期…...
智汇云舟入选IDC《中国智慧城市数字孪生技术评估,2023》报告
8月7日,国际数据公司(IDC)发布了《中国智慧城市数字孪生技术评估,2023》报告。智汇云舟凭借在数字孪生领域的创新技术与产品,入选《2023中国数字孪生城市技术提供商图谱》。 报告通过公开征集的形式进行申报&am…...
《Zookeeper》源码分析(九)之选举通信网络
在上一篇文章中讲到QuorumCnxManager,它负责zookeeper服务器在选举期间最底层的网络通信,整个网络涉及到的类如下: 整个网络建立的过程如下: 选举前创建好QuorumCnxManager实例,并在QuorumCnxManager构造函数中创建好…...
JVM——栈和堆概述,以及有什么区别?
方法栈 方法栈并不是某一个 JVM 的内存空间,而是我们描述方法被调用过程的一个逻辑概念。 在同一个线程内,T1()调用T2(): T1()先开始,T2()后开始;T2()先结束,T1()后结束。 堆和栈概述 从英文单词角度来…...
恒盛策略:沪指冲高回落跌0.26%,酿酒、汽车等板块走弱,燃气股拉升
10日早盘,两市股指盘中冲高回落,半日成交约4200亿元,北向资金净卖出超20亿元。 到午间收盘,沪指跌0.26%报3235.9点,深成指跌0.54%,创业板指跌0.28%;两市算计成交4202亿元,北向资金净…...
Mongodb 常用操作
// 查询 user_id 是否存在 db.getCollection("t_mongo_user").find({"user_id" : { $exists: true }}) // 查询 user_id 10 的记录 db.getCollection("t_mongo_user").find({"user_id" : 10}) // 排序 -1,按照 _id 倒…...
【python】-【】
文章目录 转义字符和原字符二进制与字符编码标识符和保留字变量的定义和使用变量字符串列表for 一、print会输出①数字②字符串(必须加引号)③含有运算符的表达式(例如 31 其中3,1是操作数,是运算符)&#…...
基于Elman神经网络的电力负荷预测
1 案例背景 1.1 Elman神经网络概述 根据神经网络运行过程中的信息流向,可将神经网络可分为前馈式和反馈式两种基本类型。前馈式网络通过引入隐藏层以及非线性转移函数可以实现复杂的非线性映射功能。但前馈式网络的输出仅由当前输人和权矩阵决定,而与网络先前的输出结果无关。…...
LeetCode 0088. 合并两个有序数组
【LetMeFly】88.合并两个有序数组:O(m 1) O(1)的做法 力扣题目链接:https://leetcode.cn/problems/merge-sorted-array/ 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2…...
定义行业新标准?谷歌:折叠屏手机可承受20万次折叠
根据Patreon账户上的消息,Android专家Mishaal Rahman透露,谷歌计划推出新的硬件质量标准,以满足可折叠手机市场的需求。Android原始设备制造商(OEM)将需要完成谷歌提供的问卷调查,并提交样品设备进行严格审…...
在vscode中配置C/C++环境GCC on Linux
https://code.visualstudio.com/docs/cpp/config-linux 官方文档 准备工作 为了能够在vs code中编译运行C/C程序,需要下载: Visual Studio Code C扩展插件,cuda,,, 对于该扩展插件,打开vs c…...
windows执行完LoadLibrary()后,可以删除源动态库文件,函数不会锁库文件
windows执行完LoadLibrary()后,可以删除源动态库文件,函数不会锁库文件。 #include <iostream> #include <Windows.h>int main() {char path[MAX_PATH]{};GetCurrentDirectoryA(sizeof(path), path);HMODULE lib LoadLibraryA("testd…...
ios 知识
IOS 类文件.h和.m中interface的区别 大家都知道我们在创建类文件时会发现: #import <UIKit/UIKit.h>interface ViewController : UIViewControllerend和 #import "ViewController.h"interface ViewController ()end那么他们之间有何区别呢&#x…...
8 | 美国航班数据分析
"在现代快节奏的生活中,航空旅行已经成为人们出行的重要方式之一。然而,航班的准时性一直以来都是旅客和航空公司关注的焦点。无论是商务出差还是休闲度假,乘客们都希望能够在既定的时间内安全、准时地到达目的地。而对于航空公司而言,准点运营不仅关乎乘客体验,还涉…...
app.use(express.json()) 使用
Express内置的中间件 自 Express 4.16.0 版本开始,Express 内置了 3 个常用的中间件,极大的提高了 Express 项目的开发效率和体验 express.static 快速托管静态资源的内置中间件,例如: HTML 文件、图片、CSS 样式等(无…...
基于PyTorch的图像识别
前言 图像识别是计算机视觉领域的一个重要方向,具有广泛的应用场景,如医学影像诊断、智能驾驶、安防监控等。在本项目中,我们将使用PyTorch来开发一个基于卷积神经网络的图像识别模型,用来识别图像中的物体。下面是要识别的四种物…...
Qwen3-14B代码解释效果:将100行Python重构为可读注释+优化建议
Qwen3-14B代码解释效果:将100行Python重构为可读注释优化建议 1. 模型能力展示:代码解释与重构 Qwen3-14B作为一款强大的大语言模型,在代码理解与重构方面展现出惊人的能力。我们测试了它对100行复杂Python代码的解释与重构效果,…...
【SITS2026独家数据】:主流大模型长文本任务准确率断崖分析(Llama-3-70B vs Qwen2-72B vs Claude-3.5),附基准测试代码包
第一章:SITS2026分享:大模型长上下文处理 2026奇点智能技术大会(https://ml-summit.org) 长上下文带来的核心挑战 当大语言模型需处理超长输入(如128K tokens以上)时,传统注意力机制面临显存爆炸与二次时间复杂度瓶颈…...
本地验证:构建、单元测试与集成测试的自动化执行策略
本地验证:构建、单元测试与集成测试的自动化执行策略 从一次深夜调试说起 上周排查一个内存泄漏问题,花了两小时才发现是单元测试根本没跑起来——CMakeLists里add_test写错了目录路径,但本地make test居然返回了成功。这种“假绿灯”比编译失败更可怕,代码合进主线后CI才…...
[具身智能-353]:大模型如何提供服务?MCP Client如何调用大模型的服务?
在MCP架构中,大模型(LLM)并不是一个被动等待调用的“函数库”,而是一个拥有推理能力的“智能体”。因此,MCP Client 调用大模型的方式,不是简单的“调用服务”,而是“发起一次决策请求”。这就像…...
CTF实战:手把手教你用在线工具解密JSFuck编码(LitCTF 2023真题复盘)
CTF实战:从JSFuck编码到Flag获取的全流程解析 在CTF竞赛的Web安全赛道上,JavaScript混淆技术一直是高频考点。去年LitCTF的一道JSFuck编码题目让不少选手印象深刻——页面源码中那串看似乱码的[][(![][])[[]]...字符,实则是用6个特定字符编写…...
高效解密网易云音乐NCM格式的专业解决方案
高效解密网易云音乐NCM格式的专业解决方案 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 在数字音乐版权保护的背景下,网易云音乐采用的NCM加密格式为用户带来了跨平台播放的挑战。这种专有格式虽然有效保护了音乐版权&…...
通义千问1.5-1.8B-Chat-GPTQ-Int4实战:Java面试题智能解答助手
通义千问1.5-1.8B-Chat-GPTQ-Int4实战:Java面试题智能解答助手 最近在帮团队筛选Java开发,也顺便辅导了几个准备跳槽的朋友,发现大家准备面试的方式还挺“复古”的。要么是抱着厚厚的面试宝典死记硬背,要么是在网上搜罗各种零散的…...
幻境·流金多场景应用:自媒体配图、游戏原画草稿、PPT视觉素材生成
幻境流金多场景应用:自媒体配图、游戏原画草稿、PPT视觉素材生成 1. 引言:当创意不再等待 你有没有过这样的经历?深夜赶稿,急需一张配图来点亮文章,翻遍图库却找不到合适的;游戏项目会上,想快…...
Omni-Vision Sanctuary视觉化展示:利用Visio绘制系统架构与流程图
Omni-Vision Sanctuary视觉化展示:利用Visio绘制系统架构与流程图 1. 开篇:当文字描述遇上可视化表达 在日常技术文档撰写和系统设计工作中,我们经常遇到一个典型困境:如何将复杂的系统架构或业务流程清晰地传达给团队成员或客户…...
基于Qwen3-ASR-1.7B的语音搜索系统:Elasticsearch集成方案
基于Qwen3-ASR-1.7B的语音搜索系统:Elasticsearch集成方案 语音搜索正在改变我们获取信息的方式,但如何让机器准确理解语音内容并快速返回相关结果?本文将带你构建一个高效的语音搜索系统,结合Qwen3-ASR-1.7B的语音识别能力和Elas…...
