V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  PTLin  ›  全部回复第 19 页 / 共 27 页
回复总数  523
1 ... 11  12  13  14  15  16  17  18  19  20 ... 27  
2023-08-31 14:33:09 +08:00
回复了 Number13 创建的主题 程序员 来个大佬教教我,这个闭包体为什么是 FnOnce
我把你的代码改写成了底层形式,你看看是不是一样的错误
https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=9c32461c6ece185b284827fd296cc1c9
2023-08-31 14:13:23 +08:00
回复了 Number13 创建的主题 程序员 来个大佬教教我,这个闭包体为什么是 FnOnce
闭包可以看作一个结构体,你对闭包的使用方式决定了闭包的捕获方式,捕获方式决定了闭包实现了什么 trait 。

假设有个结构体,你这段代码将 value push 到了 vec 中,故捕获了&mut vec 。value 是所有权方式使用的,故捕获了 string 。
这时这个闭包的结构体中就有两个字段,分别是&mut vec ,value 。

调用 FnOnce 闭包在底层相当于调用了闭包结构体的 fn call_once(self, args: Args) -> Self::Output 方法。
调用 FnMut 闭包在底层相当于调用了闭包结构体的 fn call_mut(&mut self, args: Args) -> Self::Output 方法。

由此可知假设你传入的闭包实现了 FnMut ,此时将会调用 fn call_mut(&mut self, args: Args) -> Self::Output 。这时就会出现问题,代码中将 string 类型的 value ,push 到了&mut vec 中,但由于 self 是&mut ,无法对 value 转移出所有权,所以 error 的提示为[E0507]: cannot move out of `value`。
https://github.com/golang/go/issues?q=label%3Aerror-handling
看看这些数不清的提案,相信总有一个是比你这个想法优秀且被枪毙了的。
2023-08-30 09:09:21 +08:00
回复了 ysz1121 创建的主题 程序员 golang 一个很神奇的问题
@bruce0 op 这种人其实不少,我以前见过一个人碰到问题第一反应就是去论坛,issues 里提问,而不是自己尝试解决,甚至没人给他解决的话他就喷这个东西设计的有问题,喷这个东西垃圾。。。
我还记得以前有人笑过 Optional ,大概是说 Java 的 Maybe 居然有三种状态:Just ,Noting 和 NULL 。
2023-08-24 19:24:05 +08:00
回复了 Livid 创建的主题 Windows Windows XP 默认壁纸的 4K 版本
原版是 46mb 的 600dpi 的文件 13 年贴吧有人发过
2023-08-19 09:01:14 +08:00
回复了 chensuiyi 创建的主题 程序员 fnMap,更好用的 vscode 侧边栏函数列表插件
付费插件没搞头感觉
2023-08-19 08:39:17 +08:00
回复了 none 创建的主题 Rust 关于多线程初始化全局变量的问题
@none InitCell 也是只能 set 一次呀,你要是说那个 reset 的话你看看代码就知道怎么实现的了。
算了我给你写个你这种情况常用的方法吧: https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=b9dad8543dc9f982a7485d23a9a69eb1
2023-08-18 16:44:09 +08:00
回复了 realNewBee 创建的主题 Python Python 做后端,相对于 Java 或者 go 来说,到底差在哪?
可能这就是技术之外的原因了。
提到 java 就是生态丰富,spring 全家桶东西多,大企业都在用,有成熟的解决方案。
提到 go 就是 goroutine 并发能力强,生成的可执行文件小,谷歌背书,适合做中间件,适合容器化,适合微服务等等。
提到 python 大家首先会想到的标签肯定还是机器学习,数据分析,简单的脚本语言,动态类型不适合大项目开发。
实际上一般的项目用什么作为后端可能区别没那么大,语言主流框架的每秒请求数不那么重要,占用内存也不那么重要,要是这些真的至关重要的话早就换成 cpp 或者 rs 来写后端了,反正不管什么当后端不都是连接数据库 redis kafka 这些东西。这样的话从被贴满标签的三个语言里选就很好选了。
2023-08-18 16:20:57 +08:00
回复了 none 创建的主题 Rust 关于多线程初始化全局变量的问题
@none OnceLock 和 InitCell 也没区别呀?
@seeu2ex 什么叫不困不知道,有点没理解意思
我作为一个 180 200 斤三个月减了 50 斤的人给你一点我个人的建议。
首先大基数减肥就是靠吃,以及每天 1 小时左右的轻度运动(比如走步),不要考虑无氧,也不要考虑其他运动量大的有氧,因为在你少吃的前提下根本没有体力以及心力坚持下来,我认识不少人就是这一步给自己计划过高放弃的,比如我一个朋友和你差不多体型,想减肥天天跳绳,没一个月就放弃了。
其次就是摆正心态,不要觉得你现在少吃的这种状态是一种减肥中的“特殊状态”,只要摆正心态自然每天就能自己合理的规划下来饮食,并且不会想要放纵什么的。
这样等你瘦下来一点身体素质以及你的膝盖可以支持做 hiit 什么的在开始下一步计划。
2023-08-17 20:14:58 +08:00
回复了 none 创建的主题 Rust 关于多线程初始化全局变量的问题
2023-08-17 09:29:50 +08:00
回复了 vegetablebird 创建的主题 Windows 始终无法开启 WSL2
bcdedit /set hypervisorlaunchtype Auto 试试这个
2023-08-10 12:30:57 +08:00
回复了 miaeLKK 创建的主题 Go 编程语言 [Go 语言] 怎么理解 goroutine 这个词?
假设有这么个模型系统。

其中调用函数的动作不会实际调用这个函数,会返回一个叫做 task 的结构。

有多个并行的执行流 例如多个线程,每个执行流有一个队列,创建的 task 会被放入这个队列。

每个执行流会取出队列中的一个 task 进行实际的调用。

系统中会提供一些特殊的函数,这些函数会暂停 task 的运行并且返回 task 未完成的状态,例如一个读取网络 socket 的函数,在无数据可读堵塞的情况下会暂停 task ,也就是暂停函数过程的执行停止到这个点上,返回 task 未完成。


并且这时候这个特殊函数会向系统中注册一些信息,这些信息可以确保当满足某些情况下,这个未完成的 task 会被放回队列。例如当此 socket 进入了可读状态,系统就会把这个未完成的 task 放回某个队列,等待执行流执行。

之后重新被执行流取出队列并调用的 task 会从刚才暂停的状态恢复继续执行过程,并且重试读取网络 socket ,此时会正常读取到数据,继续向下运行。重复上述过程直到一个 task 被执行完成。
2023-07-30 19:07:39 +08:00
回复了 Uahh 创建的主题 程序员 有没有什么二次元+程序员的群
虽然我本身也算是个二次元吧,但是那些技术群里天天玩二次元梗的人真是难以沟通,要是技术群里这部分人的比率一大就是折磨。
2023-07-20 14:49:00 +08:00
回复了 maotao456 创建的主题 程序员 一个关于 rust 和 windows api 的问题(重新发)
我感觉思路应该是拿到 webview ,使用 webview 的 handle 来触发点击
2023-07-04 19:39:35 +08:00
回复了 zhouts 创建的主题 随想 我还没表白就黄了
@Bluecoda 绷不住了,你这句是我这个月笑的最开心的一次。
1 ... 11  12  13  14  15  16  17  18  19  20 ... 27  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1240 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 17:57 · PVG 01:57 · LAX 09:57 · JFK 12:57
Developed with CodeLauncher
♥ Do have faith in what you're doing.