istomyang 最近的时间轴更新
istomyang

istomyang

V2EX 第 566057 号会员,加入于 2021-12-19 13:35:22 +08:00
istomyang 最近回复了
3 天前
回复了 istomyang 创建的主题 Rust 请教关于 Rust 异步编程软件设计思路
@nebkad 明白了,谢谢指点!

对于 golang ,我是直接用接口做抽象,用 rust 的时候,由于 trait 的一些限制,ChatGPT 建议我多用泛型做抽象,所以一个模块向外暴露的就是 struct ,至于网络协议,我也用泛型,只是把 trait 作为泛型约束,尽量减少利用 trait object 动态分发。
6 天前
回复了 istomyang 创建的主题 Rust 请教关于 Rust 异步编程软件设计思路
@nebkad 谢谢回复。

我明白了,谢谢!

怎么写比较顺手?一个正确的思维逻辑是什么样子的?
如果是你做软件设计,你也会知道计算跟存储分离,链仅仅是作为存储系统保存状态,至于中心式还是分布式,业务层不关心。
16 天前
回复了 istomyang 创建的主题 Rust 请教关于 Rust 异步编程软件设计思路
@nagisaushio 非常感谢!算是权宜之计了。

主要我不太明白,为什么我告诉编译器这个 Trait 是 Send 还是不放心?哪怕我脱钩,T: Async_Trait + Send; 都不行,语义上这就不是 Trait 的问题了。
16 天前
回复了 istomyang 创建的主题 Rust 请教关于 Rust 异步编程软件设计思路
@nagisaushio
@my3157
@nebkad 感谢回复!

我主要写 Go ,一般都是先写抽象系统,然后写实现代码,到 Rust 这边就磕磕碰碰。
比如,一个父级大模块有个 async run 方法,里面包含多个独立小模块,各自包含 async run 方法,然后在父模块做组合编排。这个操作在 Rust 的 async 系统就很糟心,而且很不优雅,情感上特别难受。

就下面这个还报错,还得让我改成 Future 形式,编译器过于保守了。所以我研究好几种方式,比如不用 async ,用 nonblocking_run 。

你们是怎么做的?赐教!感谢🙏

```rust
trait A: Send {
- async fn run(&mut self);
+ fn run(&mut self) -> impl std::future::Future<Output = ()> + Send
}

struct B<T>
where
T: A + 'static,
{
core: Option<T>,
}

impl<T> B<T>
where
T: A + 'static,
{
async fn run(&mut self) -> Result<()> {
let mut core = self.core.take().unwrap();
tokio::spawn(async move { core.run().await });
Ok(())
}
}
```
90 天前
回复了 cxwht 创建的主题 远程工作 招兼职 RN 前端 和 golang 后端 remote 18-26k
@GTim 热更新跟审核期没关系,跟用户什么时候更新软件有关系。
158 天前
回复了 TcDhl 创建的主题 Visual Studio Code 关于 Vscode 工作区/多窗口的问题
225 天前
回复了 xh205 创建的主题 远程工作 [全职远程]资深软件工程师 - 英国
电商用 JS 做后端,技术怎么选型的?
评论区什么玩意,法律跟讲道理有关系吗?你拉屎这个事情,我跟你说,公司之前有警告过吗?没有警告那你等着辞退通知书然后去 2N 。
你这个级别的找远程工作不应该啊,你都这么不顺那我咋办?
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   944 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 15ms · UTC 20:31 · PVG 04:31 · LAX 13:31 · JFK 16:31
Developed with CodeLauncher
♥ Do have faith in what you're doing.