详细理解关于 Rust 的 Copy、Clone 机制
结合生命周期标注,理解复杂场景下 clone、copy 的作用,内部原理细节 发现在使用了 Copy 这个 Trait 之后,原本会提示的 value moved,不再会报错了。 Copy 的作用类型和特点: 按值复制 不需要显式 clone 零成本复制(复制是按照位来进行的,开销很低,适合简单,轻量的类型(如数值类型与指针)) Copy 的使用条件: 类型中...
结合生命周期标注,理解复杂场景下 clone、copy 的作用,内部原理细节 发现在使用了 Copy 这个 Trait 之后,原本会提示的 value moved,不再会报错了。 Copy 的作用类型和特点: 按值复制 不需要显式 clone 零成本复制(复制是按照位来进行的,开销很低,适合简单,轻量的类型(如数值类型与指针)) Copy 的使用条件: 类型中...
into_iter 是如何影响内存的
关于 Rust 的 Deref 的使用问题记录
Rust 的 Trait 需要符合 Object Safe 特性才能够使用 dyn 动态分发,否则可以尝试使用自定义的 enum,更进一步的可以使用 enum_dispatch 简化代码
当一个函数声明返回 impl Trait 时,它意味着函数将返回一个实现了 Trait 的某个具体类型,而这个具体类型对于用户是透明的。Rust 使用 impl Trait 来允许函数返回一个具体类型,但又不暴露这个类型的细节。
题目 原题 316. 去除重复字母 解题 题目中告知需要维持字典序并去除重复的字母,能够想到需要使用单调栈的思路,下面以 1 个具体例子分析问题: 给定字符串 s="cbacdcbc": 'c' 直接入栈,当前栈中字符串为 "c" 'b' 等待入栈,发现栈顶字符为 'c','c' > 'b' 并且 'b' 后面的这些字符中仍旧存在多个 'c' 字符,我们可以...
题目 原题 402. 移掉 K 位数字 解题 思考一下该使用什么样的策略去移除数字会让最终的数字尽可能的小:保证高位数字一定要尽可能的小,那么最终得到的数字就是最小的数字。本质上我们可以维护一个单调栈去实现这个策略。 注意事项 单调栈在维护的过程中,可能过早的消耗完 k 个可以被删除的字符,也可能没有完全消耗掉 k 个字符 针对 k 没有被全部消耗的情况,我们从后...
题目 原题 3175. 找到连续赢 K 场比赛的第一位玩家 解题 直接按照题目使用模拟的思路,会导致超时;对 k>skills.length() 的情况直接返回具有 maxSkill 的 index 能够解决这个模拟方法的超时问题。 下面分析一下题目中隐含的一些思路 如果 1 个 player 后面的 t 个 players 的 skill 值都比他低,那么这个...
全文索引? 全文索引可以加速文本搜索过程 TODOs ClickHouse 集成 TantivySearch 工作概览 TantivySearch 项目结构 TantivySearch 不同搜索策略的实现(设计模式之策略模式) ClickHouse 集成 tantivy-search 库 ClickHouse 对 FTS 索引的管理逻辑 ClickHouse ...
题目 原题 525.连续数组 解题 1.未优化版本 滑动窗口思想 最先想到的是使用滑动窗口的方法,先使用 preOneCount[i] 计算 [0,i] 区间内 1 出现的次数,然后通过从大往小遍历滑动窗口 window 去检测窗口是否合法(即窗口所在的区间内部 1 和 0 的数量是否一致) 代码如下: class Solution { public int fi...