steins2628

steins2628

V2EX 第 565583 号会员,加入于 2021-12-15 16:33:02 +08:00
两次 move 以后怎样保证 tokio channel 有足够长的生命周期?
Rust  •  steins2628  •  2023-08-12 22:09:38 PM  •  最后回复来自 steins2628
8
有没有推荐的运行在服务器上的文件服务?
问与答  •  steins2628  •  2023-04-10 14:13:57 PM  •  最后回复来自 niji
13
有没有 c# WPF 程序员来帮帮这个可怜的前端
问与答  •  steins2628  •  2022-12-26 21:22:33 PM  •  最后回复来自 ysc3839
8
有备-基于 Tauri 的本地备份软件
分享创造  •  steins2628  •  2022-10-03 10:00:46 AM  •  最后回复来自 steins2628
12
vitepress 部署项目文档到 Github pages 丢失样式与路由问题
问与答  •  steins2628  •  2023-02-04 22:39:23 PM  •  最后回复来自 jiang24gdufs
3
steins2628 最近回复了
197 天前
回复了 programMrxu 创建的主题 分享创造 自动备份小工具
写过一个类似的, pyqt 没那么好用,可以参考下

[mission-backup]( https://github.com/Hellager/mission-backup/tree/pyqt)
2023-08-12 22:09:38 +08:00
回复了 steins2628 创建的主题 Rust 两次 move 以后怎样保证 tokio channel 有足够长的生命周期?
@araraloren Great thanks for your help, now it works!
2023-08-10 22:18:05 +08:00
回复了 steins2628 创建的主题 Rust 两次 move 以后怎样保证 tokio channel 有足够长的生命周期?
@fakeshadow 我分类尝试了十种情况,发现只要是把 wacher 放结构体里,然后初始化和 rx 分开处理,就不会有 events 发出来,感觉和 notify 本体关系可能更大一点
[Test template for rust notify]( https://gist.github.com/Hellager/6bc77d610ff20932ccec379e20599083)


@araraloren 感谢回答,handler::spawn 是 std::thread::spawn 吗?我最开始是 std handle block send 的,就像这样,但这样也是不行的,具体过程在 StackOverflow 那个问题里

```rust

fn get_runtime_handle() -> (Handle, Option<Runtime>) {
match Handle::try_current() {
Ok(h) => (h, None),
Err(_) => {
let rt = Runtime::new().unwrap();
(rt.handle().clone(), Some(rt))
}
}
}

...
let debouncer = new_debouncer(Duration::from_secs(3), None, move |result: DebounceEventResult| {
let (handle, _rt) = get_runtime_handle();
handle.block_on(async {
tx.send(result).await.unwrap();
})
});
...
```
2023-08-09 22:41:32 +08:00
回复了 steins2628 创建的主题 Rust 两次 move 以后怎样保证 tokio channel 有足够长的生命周期?
@araraloren 感谢回答,倒是能通过编译了,但是 watcher 的 event 完全不会触发

```rust
let sapwn_tx = tx.clone();
let test_ts = tx.clone();
self.sender = Som(test_ts);

tokio::spawn(async move {
if let Err(e) = sapwn_tx.send(result).await {
println!("Error sending event result: {:?}", e);
}
})

...

loop {
...
if let Some(tx) = notifier.sender.take() {
tx.send(Err(notify::error(notify::ErrorKind::PathNotfoundError))).await;
}
}
```

然后我尝试把代码改成这样子,在 main loop 里手动发 error event 是正常接收的,但 watcher 的 event 是完全没有的,
我查了下相关问题比如 [Alternative to cloning tokio channel's sender for futures' closures]( https://stackoverflow.com/questions/54552165/alternative-to-cloning-tokio-channels-sender-for-futures-closures), 理论上 sender clone 不会对原对象有什么影响,这是不是能说明 debouncer_watcher 就是不能这么改?
2023-04-07 22:39:55 +08:00
回复了 steins2628 创建的主题 问与答 有没有推荐的运行在服务器上的文件服务?
@SenLief woc 这个好,就是想要这种效果,我也是觉得上面两个太重了所以来问问的,十分感谢


@byte10 有空试试,谢谢帮助


@totoro625 这个看着也不错,有空试试,谢谢帮助
@crysislinux 我就是觉得这样太痛苦了,作为一个前端,js 不太在乎类型我还可以直接 json 转 obj ,ts 我也可以用 any ,rust 这个类型安全我是实在没办法了, 谢谢指点


@israinbow 一开始的方案就是 migration ,但配置项一多就写的痛苦了,deprecate 是个好方法,谢谢指点
2023-01-11 13:35:29 +08:00
回复了 user667788 创建的主题 问与答 请问 react-native-windows 和 tauri 哪个更好一些?
tauri 资料少,文档和生态都只能说未来可期,你问我不推荐,我用我真用
可以看看我写的笔记了解下 tauri
https://www.hellagur.com/tags/Tauri/
2022-12-26 21:21:11 +08:00
回复了 steins2628 创建的主题 问与答 有没有 c# WPF 程序员来帮帮这个可怜的前端
@ysc3839 我知道我知道,只是我对桌面端软件最推崇的形态就是 portable 。
很多人 win7 估计也不怎么会装 webview2 ,最好使用起来这种多余的步骤少一点。
Edge WebView2 和 CEF 我也会了解下,谢谢指点。
2022-12-26 13:26:17 +08:00
回复了 steins2628 创建的主题 问与答 有没有 c# WPF 程序员来帮帮这个可怜的前端
@wizzer 大部分问题确实靠搜索解决完了,第一个还是有点不懂,剩下两个可以算是求推荐,因为完全没有这方面相关的经验

@ysc3839 写过 Tauri ,WPF 是为了兼容 win7 才打算写的

@lzj724 electron 还是太大了,win10 及以上会用 Tauri 实现

@youyouyou0123456 谢谢指点,我去看看
没解决的话我还会猜一个绝对路径问题,写 Tauri 的时候遇到过,也是进 contents 直接命令行可以,双击就是不行,在 Linux 就会直接报错 Readonly System
原因就是一开始用了相对路径,这在 windows 下是没问题的,但在 Unix 下由于程序安装和运行的不同,不能用相对路径创建文件,只能用存在的绝对路径
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3079 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 20ms · UTC 12:53 · PVG 20:53 · LAX 04:53 · JFK 07:53
Developed with CodeLauncher
♥ Do have faith in what you're doing.