当前位置: 首页 > news >正文

山东省建设厅网站地址电商运营怎么做如何从零开始

山东省建设厅网站地址,电商运营怎么做如何从零开始,在家做网站或ps挣钱接活,前端开发培训机构成都Rust练手项目,写个有趣的小工具 代码 继续练习Rust, 写个小工具定时从一言网获取一段有趣的话并提示,如下 练习以下Rust点 并发编程 Mutex, Arc指针使用HTTP请求Windows Gui 代码 Cargo.toml [package] name "funny_word" edition "20…

Rust练手项目,写个有趣的小工具

    • 代码

继续练习Rust, 写个小工具定时从一言网获取一段有趣的话并提示,如下
图片

练习以下Rust点

  • 并发编程 Mutex, Arc指针使用
  • HTTP请求
  • Windows Gui

代码

Cargo.toml

[package]
name = "funny_word"
edition = "2021"
version.workspace = true
authors.workspace = true
description.workspace = true[dependencies]
trayicon = "0.2.0"
winapi = { version = "0.3.9", features = ["winuser","windef","minwindef","shellapi","libloaderapi","commctrl","basetsd",
] }
win-toast-notify = "0.1.6"
windows = { version = "0.58.0", features = ["Win32_Security","Win32_System_Threading","Win32_UI_WindowsAndMessaging",
] }
reqwest = { version = "0.11", features = ["blocking"]  }
[package]
name = "funny_word"
edition = "2021"
version.workspace = true
authors.workspace = true
description.workspace = true[dependencies]
trayicon = "0.2.0"
winapi = { version = "0.3.9", features = ["winuser","windef","minwindef","shellapi","libloaderapi","commctrl","basetsd",
] }
win-toast-notify = "0.1.6"
windows = { version = "0.58.0", features = ["Win32_Security","Win32_System_Threading","Win32_UI_WindowsAndMessaging",
] }
reqwest = { version = "0.11", features = ["blocking"]  }

main.rs

#![windows_subsystem = "windows"]
use core::mem::MaybeUninit;
use std::{sync::{Arc, Mutex},thread::sleep,time::Duration,
};
use trayicon::*;
use win_toast_notify::WinToastNotify;
use winapi::um::winuser;fn main() {#[derive(Copy, Clone, Eq, PartialEq, Debug)]enum Events {RightClickTrayIcon,LeftClickTrayIcon,OneMinute,FiveMinute,FifteenMinute,HalfHour,OneHour,Exit,}let (sender, receiver) = std::sync::mpsc::channel::<Events>();let icon_bytes = include_bytes!("rust.ico");let mut tray_icon = TrayIconBuilder::new().sender(move |e: &Events| {let _ = sender.send(*e);}).icon(Icon::from_buffer(icon_bytes, None, None).unwrap()).tooltip("💪没事喝点鸡汤吧!").on_right_click(Events::RightClickTrayIcon).on_click(Events::LeftClickTrayIcon).menu(MenuBuilder::new().separator().submenu("提醒间隔",MenuBuilder::new().checkable("1分钟", true, Events::OneMinute).checkable("5分钟", false, Events::FiveMinute).checkable("15分钟", false, Events::FifteenMinute).checkable("半小时", false, Events::HalfHour).checkable("一小时", false, Events::OneHour),).separator().item("退出", Events::Exit),).build().unwrap();let _interval = Arc::new(Mutex::new(1));let interval = _interval.clone();std::thread::spawn(move || {receiver.iter().for_each(|m| match m {Events::RightClickTrayIcon => {tray_icon.show_menu().unwrap();}Events::LeftClickTrayIcon => {tray_icon.show_menu().unwrap();}Events::Exit => {std::process::exit(0);}Events::OneMinute => {let mut i = interval.lock().unwrap();*i = 1;tray_icon.set_menu_item_checkable(Events::OneMinute, true).unwrap();tray_icon.set_menu_item_checkable(Events::FiveMinute, false).unwrap();tray_icon.set_menu_item_checkable(Events::FifteenMinute, false).unwrap();tray_icon.set_menu_item_checkable(Events::HalfHour, false).unwrap();tray_icon.set_menu_item_checkable(Events::OneHour, false).unwrap();}Events::FiveMinute => {let mut i = interval.lock().unwrap();*i = 5;tray_icon.set_menu_item_checkable(Events::OneMinute, false).unwrap();tray_icon.set_menu_item_checkable(Events::FiveMinute, true).unwrap();tray_icon.set_menu_item_checkable(Events::FifteenMinute, false).unwrap();tray_icon.set_menu_item_checkable(Events::HalfHour, false).unwrap();tray_icon.set_menu_item_checkable(Events::OneHour, false).unwrap();}Events::FifteenMinute => {let mut i = interval.lock().unwrap();*i = 15;tray_icon.set_menu_item_checkable(Events::OneMinute, false).unwrap();tray_icon.set_menu_item_checkable(Events::FiveMinute, false).unwrap();tray_icon.set_menu_item_checkable(Events::FifteenMinute, true).unwrap();tray_icon.set_menu_item_checkable(Events::HalfHour, false).unwrap();tray_icon.set_menu_item_checkable(Events::OneHour, false).unwrap();}Events::HalfHour => {let mut i = interval.lock().unwrap();*i = 30;tray_icon.set_menu_item_checkable(Events::OneMinute, false).unwrap();tray_icon.set_menu_item_checkable(Events::FiveMinute, false).unwrap();tray_icon.set_menu_item_checkable(Events::FifteenMinute, false).unwrap();tray_icon.set_menu_item_checkable(Events::HalfHour, true).unwrap();tray_icon.set_menu_item_checkable(Events::OneHour, false).unwrap();}Events::OneHour => {let mut i = interval.lock().unwrap();*i = 60;tray_icon.set_menu_item_checkable(Events::OneMinute, false);tray_icon.set_menu_item_checkable(Events::FiveMinute, false);tray_icon.set_menu_item_checkable(Events::FifteenMinute, false);tray_icon.set_menu_item_checkable(Events::HalfHour, false);tray_icon.set_menu_item_checkable(Events::OneHour, true);}})});std::thread::spawn(move || loop {match reqwest::blocking::get("https://v1.hitokoto.cn?&encode=text") {Ok(resp) => match resp.text() {Ok(text) => {WinToastNotify::new().set_title("来自一言网").set_messages(vec![&text]).show().expect("发送通知失败!");}Err(e) => {WinToastNotify::new().set_title("错误").set_messages(vec![&format!("HTTP错误 {}",e.status().unwrap_or_default())]).show().expect("发送通知失败!");}},Err(e) => {WinToastNotify::new().set_title("获取网站内容失败错误").set_messages(vec![&format!("HTTP错误 {}",e.status().unwrap_or_default())]).show().expect("发送通知失败!");}}let mut _b = 1;{// 加个大括号是为了尽快释放lock, 免得睡眠中(60 * (*i))一直占用锁,点击右键菜单无反应let interval = _interval.clone();let i = interval.lock().unwrap();_b = *i;}sleep(Duration::from_secs(60 * _b));});loop {unsafe {let mut msg = MaybeUninit::uninit();let bret = winuser::GetMessageA(msg.as_mut_ptr(), 0 as _, 0, 0);if bret > 0 {winuser::TranslateMessage(msg.as_ptr());winuser::DispatchMessageA(msg.as_ptr());} else {break;}}}
}

rust.ico图标文件放在main.rs目录

http://www.zhongyajixie.com/news/45717.html

相关文章:

  • 时尚手表网站今天今日新闻头条最新消息
  • 无锡市网站设计nba交易最新消息
  • web购物网站如何做百度入驻
  • 企业如何建自己的网站西安市网站
  • 如何提取网页中的视频石家庄百度推广排名优化
  • 来年做哪些网站能致富自学seo大概需要多久
  • 有哪些网站可以做外贸长沙seo外包
  • 网站宝建站广州专做优化的科技公司
  • 网站建设80hoe品牌推广方式都有哪些
  • iis 5.1 新建网站在线域名ip查询
  • 企业网站如何做推广店铺推广渠道有哪些
  • 深圳做网站可用乐云seo十年上海网络公司seo
  • 做类似淘宝网站多少钱网络营销的四大要素
  • 余姚网站建设深圳网站建设三把火科技
  • wordpress 行距怎么优化
  • 网站开发 教程济南seo怎么优化
  • html5做手机网站大数据营销系统
  • WordPress会员中心模板信息流优化师是干什么的
  • 百度给做网站吗市场调研报告怎么写的
  • 网站建设网站制作公司色盲测试图及答案大全
  • 注册公司网上申请入口网站做个公司网站大概多少钱
  • 公众号的文章下载 wordpress青岛seo全网营销
  • 营销型网站建设服务商常宁seo外包
  • 永康网站建设优化建站百度搜索数据统计
  • 茶叶网站策划青岛网站推广公司
  • 甘德网站建设怎么快速推广自己的产品
  • 网站运营的重要性设计网站大全
  • vps新建网站做网页用什么软件好
  • 高端网站建设网站定制网店推广的作用是
  • 网上商店也叫做淄博网站seo