├── .gitignore ├── README.md ├── chenbo2.23.md ├── examples └── learnweb │ ├── .env │ ├── Cargo.lock │ ├── Cargo.toml │ ├── README.md │ ├── dbase │ ├── Cargo.toml │ └── src │ │ └── main.rs │ └── web │ ├── Cargo.toml │ ├── README.md │ ├── doc │ └── web.sql │ └── src │ ├── api │ ├── job │ │ └── mod.rs │ ├── mod.rs │ └── user │ │ ├── dtype.rs │ │ ├── mod.rs │ │ ├── user_controller.rs │ │ └── user_service.rs │ ├── app.rs │ ├── main.rs │ └── sys │ ├── db.rs │ └── mod.rs ├── projects ├── calc.rs ├── readme.md ├── ring.rs └── shell.rs ├── schedule.md ├── trees ├── .gitignore ├── .vscode │ └── launch.json ├── Cargo.toml └── src │ ├── avl.rs │ └── lib.rs └── zhangyang ├── Cargo.lock ├── Cargo.toml ├── README.md ├── src └── main.rs └── target ├── .rustc_info.json ├── CACHEDIR.TAG └── debug ├── .cargo-lock ├── .fingerprint ├── my_test-15cd95a288911e40 │ ├── bin-my_test │ ├── bin-my_test.json │ ├── dep-bin-my_test │ ├── invoked.timestamp │ └── output-bin-my_test ├── my_test-6a6760ebf9c60409 │ ├── bin-my_test │ ├── bin-my_test.json │ ├── dep-bin-my_test │ ├── invoked.timestamp │ └── output-bin-my_test └── my_test-884421f371388d64 │ ├── dep-test-bin-my_test │ ├── invoked.timestamp │ ├── output-test-bin-my_test │ ├── test-bin-my_test │ └── test-bin-my_test.json ├── deps ├── libmy_test-6a6760ebf9c60409.rmeta ├── libmy_test-884421f371388d64.rmeta ├── my_test-15cd95a288911e40 ├── my_test-15cd95a288911e40.d ├── my_test-6a6760ebf9c60409.d └── my_test-884421f371388d64.d ├── incremental ├── my_test-1seqjby2wgej0 │ ├── s-g7bo2r4fcb-15eetpz-3qf0lirz3e0dw │ │ ├── dep-graph.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7bo2r4fcb-15eetpz.lock │ ├── s-g7dlnsqfsv-14903lp-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlnsqfsv-14903lp.lock │ ├── s-g7dlnswaum-9ngsfz-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlnswaum-9ngsfz.lock │ ├── s-g7dlnt1v2v-1bdgzw9-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlnt1v2v-1bdgzw9.lock │ ├── s-g7dlnt571g-117jz7y-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlnt571g-117jz7y.lock │ ├── s-g7dlnt8g1t-1yq5v3l-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlnt8g1t-1yq5v3l.lock │ ├── s-g7dlntvj4o-1w7eure-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlntvj4o-1w7eure.lock │ ├── s-g7dlntzlw0-fxjluu-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlntzlw0-fxjluu.lock │ ├── s-g7dlnu31nx-378u6n-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlnu31nx-378u6n.lock │ ├── s-g7dlnu6kkk-11kdznd-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlnu6kkk-11kdznd.lock │ ├── s-g7dlnuaajb-9536cw-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlnuaajb-9536cw.lock │ ├── s-g7dlnunqdw-1yxgcc6-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ └── s-g7dlnunqdw-1yxgcc6.lock ├── my_test-23lob77d4ni59 │ ├── s-g7bo2r4ekp-oezlde-3555vay4d7ipw │ │ ├── dep-graph.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7bo2r4ekp-oezlde.lock │ ├── s-g7dlnsqcr4-mj6any-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlnsqcr4-mj6any.lock │ ├── s-g7dlnsweyt-1k35nme-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlnsweyt-1k35nme.lock │ ├── s-g7dlnt1x0g-hoh7k0-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlnt1x0g-hoh7k0.lock │ ├── s-g7dlnt571g-1d2idob-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlnt571g-1d2idob.lock │ ├── s-g7dlnt8gx4-158zzg7-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlnt8gx4-158zzg7.lock │ ├── s-g7dlntvl74-fs5nwv-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlntvl74-fs5nwv.lock │ ├── s-g7dlntzkob-aaqyrt-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlntzkob-aaqyrt.lock │ ├── s-g7dlnu33lg-qqwbt8-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlnu33lg-qqwbt8.lock │ ├── s-g7dlnu6k41-10jkrj0-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlnu6k41-10jkrj0.lock │ ├── s-g7dlnuaaii-1qszvac-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ ├── s-g7dlnuaaii-1qszvac.lock │ ├── s-g7dlnunur1-k990yq-working │ │ ├── dep-graph.bin │ │ ├── dep-graph.part.bin │ │ ├── query-cache.bin │ │ └── work-products.bin │ └── s-g7dlnunur1-k990yq.lock └── my_test-28eml8hzv1l3f │ ├── s-g7bo4xkmqb-splhqv-1bo65roaah7de │ ├── 1q8riebezqrkrz3k.o │ ├── 1wdvrzeoydboq4r.o │ ├── 3l6h6vc73lvqrbev.o │ ├── 3ypf5rolsr8h2rf5.o │ ├── 4obj8j3isqev0cqg.o │ ├── 4ta4jw9v68loe766.o │ ├── 544vadw02jx8dw7s.o │ ├── 5dea50g825afd46r.o │ ├── 5geua3kd6wm65ato.o │ ├── dep-graph.bin │ ├── query-cache.bin │ └── work-products.bin │ ├── s-g7bo4xkmqb-splhqv.lock │ ├── s-g7dlj5sihq-e0xgs3-working │ ├── 1q8riebezqrkrz3k.o │ ├── 1wdvrzeoydboq4r.o │ ├── 3l6h6vc73lvqrbev.o │ ├── 3ypf5rolsr8h2rf5.o │ ├── 4obj8j3isqev0cqg.o │ ├── 4ta4jw9v68loe766.o │ ├── 544vadw02jx8dw7s.o │ ├── 5dea50g825afd46r.o │ ├── 5geua3kd6wm65ato.o │ ├── dep-graph.bin │ ├── dep-graph.part.bin │ ├── query-cache.bin │ └── work-products.bin │ └── s-g7dlj5sihq-e0xgs3.lock ├── my_test └── my_test.d /.gitignore: -------------------------------------------------------------------------------- 1 | /target/* 2 | /examples/learnweb/web/target/* 3 | /examples/learnweb/target/ 4 | 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # rust-basics-course 2 | rust-basics course of 3 | 4 | [陈渝老师推荐的Rust学习进度安排](https://github.com/os2edu/rust-basics-course/blob/main/schedule.md) 5 | 6 | image 7 | 8 | ## 教材 9 | ### 中文 10 | - [Rust 程序设计语言](https://kaisery.github.io/trpl-zh-cn/) 11 | 12 | ### 英文 13 | - [Programming Rust v2, 简称PR](https://www.oreilly.com/library/view/programming-rust-2nd/9781492052586/) 14 | - [中文版:Rust程序设计](https://www.ituring.com.cn/book/2101) 15 | - [Command Line Rust, 简称CLR](https://gitee.com/chyyuu/command-line-rust) 16 | 17 | ## 练习 18 | - [通过例子学 Rust](https://rust-by-example.budshome.com/) 19 | - [rustlings](https://github.com/rust-lang/rustlings) 20 | 21 | ## 实验 22 | - [labs from CLR](https://github.com/kyclark/command-line-rust) 23 | 24 | ## 参考书 25 | - [Rust语言圣经(Rust教程 Rust Course)](https://course.rs/) 26 | 27 | ## 相关学习资源 28 | - [Rust语言学习笔记](https://skyao.io/learning-rust/docs.html) 29 | - [github repo](https://github.com/skyao/learning-rust) 30 | - [用RUST进行系统编程的自学资源](https://github.com/rcore-os/rCore/wiki/study-resource-of-system-programming-in-RUST) 31 | - [在线Rust编程环境 https://play.rust-lang.org/](https://play.rust-lang.org/) 32 | 33 | ## Rust编程学习小组(正在开放报名中) 34 | ### 学习小组公约: 35 | 36 | 为了Rust学习小组能够有效、长久的开展下去,并使每位成员都能从中受益,特制定Rust学习小组公约如下: 37 | 38 | 1. 每周三和周六的晚上8点开始,定为固定时间的小组讨论会。如有需要调整时间,可以顺延到周四和周日晚上。每次讨论会不少于1小时,不多于3小时。 39 | 40 | 2. 第一期从2022.2.14开始,学习周期初步定为3周,学习目标是完成陈渝老师给出的教材/练习/实验/参考书,总结出rust基础班学习的课程知识点大纲和时间进度安排表。 41 | 42 | 3. 基于 mkdocs 搭建教材编写的协作平台,学习小组将共同基于 https://github.com/os2edu 和 http://docs.os2edu.cn 来完善rust基础班学习知识体系。 43 | 44 | 4. 每个小组成员要求每周的学习都要有所输出,每周2次讨论会无故不缺席,并至少进行一次分享,学习周期内每个人不少于三次分享,每次时间以10-20分钟为宜。 45 | 46 | 5. 输出的重点,不在数量,而在质量。输出的形式可以是自己参与编写的文档部分,提炼成的PPT,开发调试的代码,精心绘制的思维导图等原创材料都可以作为分享的内容。 47 | 48 | 6. 小组协作学习的核心,三个字:“输带化” -- 强制输出带动吸收内化。在学习小组内,一不等二不靠老师来教,一切靠自主探究去解决。 49 | 50 | [小组公约最新版本](https://github.com/os2edu/rust-basics-course/wiki/Rust%E5%AD%A6%E4%B9%A0%E5%B0%8F%E7%BB%84%E5%85%AC%E7%BA%A6) 51 | 52 | ### 学习小组报名链接 53 | https://os2edu.cn/course/101 54 | 55 | ### 小组协作课程教材链接 56 | http://docs.os2edu.cn/ 57 | 58 | -------------------------------------------------------------------------------- /chenbo2.23.md: -------------------------------------------------------------------------------- 1 | ### 递归数据结构的实现:AVL 树 2 | 3 | > 百度曾经说过: 4 | > 5 | > 在[计算机科学](https://baike.baidu.com/item/计算机科学/9132)中,**AVL树**是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为**高度平衡树**。增加和删除可能需要通过一次或多次[树旋转](https://baike.baidu.com/item/树旋转)来重新平衡这个树。AVL树得名于它的发明者G. M. Adelson-Velsky和E. M. Landis,他们在1962年的论文《An algorithm for the organization of information》中发表了它。 6 | > 7 | > AVL树本质上还是一棵二叉搜索树,它的特点是: [1] 8 | > 9 | > 1.本身首先是一棵二叉搜索树。 10 | > 11 | > 2.带有平衡条件:每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1。 12 | > 13 | > 也就是说,AVL树,本质上是带了平衡功能的二叉查找树(二叉排序树,二叉搜索树)。 14 | 15 | 实现了一棵 AVL 树,还差一个 Iter 没有实现。 16 | 17 | 我觉得用 rust 实现递归数据结构一个比较复杂的方面就是你需要标明一个很难标注的生命周期,困难之处在于入参和出参可能并没有直接的生命周期关系。 18 | 19 | ```rust 20 | // 这是一个 Tree的方法,Tree 是一个二叉平衡树 21 | // 函数返回找到的子树的可变引用 22 | fn recursion(&mut self, &t: T) -> &mut Tree { 23 | match self.val.cmp(t) { 24 | case Less => { 25 | self.right_subtree.recursion() 26 | }, 27 | case Equal => { 28 | self 29 | }, 30 | case Greater => { 31 | self.left_subtree.recursion() 32 | } 33 | } 34 | } 35 | ``` 36 | 37 | 比我我们在树根去调用这个函数 38 | 39 | `root.recursion(&t)` ,你会发现返回值的生命周期既和 `t` 没啥关系,和树根 `root` 也没啥关系,所以这件事就成了很难做到的事。 40 | 41 | 我的解决办法是,如果碰到了这种情况(AVL 的 `delete` 操作就会有这个情况),我就直接传入树的所有权,配合 `Option::take()` 方法实现操作,`take` 方法其实和 `mem::replace` 是一个东西,它可以把结构体的一个成员给偷走,然后补上一个其他值,`take` 方法把 `Option` 偷走后,放回一个 `None`。非常滴实用。 42 | 43 | ### rust 实用函数式编程 44 | 45 | rust 的错误处理提供了好用的 `Option`, `Result` ,它们是两个类型构造器。 46 | 47 | 类型构造器就是泛型类型,比如 `Option` 可以接受一个 `Person` 类型变成一个 `Option`, 当然也可以用 `Option>` 这种东西,这种东西非常糟糕,因为你要访问里面的数据,你得拆两次,要是有人写出来套 10 层 `Option` 的东西给你让你处理,你肯定心里默默问候他家人了,你得套 10 层模式匹配才行解包这个玩意。 48 | 49 | 咱心里明白的很,这十层模式匹配基本都是废话,它们表达的都是一个意思,这十层模式匹配代码是这么相似,这是信息冗余! 50 | 51 | 错误处理本该没这么痛苦,rust 提供了函数式的 API,可以让咱避免搞出来叠好多层的 Option, 或者因为错误处理导致代码过度耦合。 52 | 53 | #### Monad 54 | 55 | Monad 简单的来说就是自函子范畴上的幺半群 56 | 57 | **Monad 就是用来粘函数的。** 58 | 59 | 比如咱的数学老师让你求一个 vector 的平均值的倒数开根。 60 | 61 | 比如说标准库里有一个写好的求 mean(平均值) 的函数,它的函数签名是这样的: 62 | 63 | `mean: Vec -> Option` 这是一个可能失败的函数,因为你没办法给一个空数组定义一个平均值。 64 | 65 | 标准库里还有一个基于 `magic number` 实现的平均值倒数开根: 66 | 67 | `kaigen: float -> Option ` 这个函数显然也可能失败。 68 | 69 | 然后咱就开始组装两个函数了,标准实现是这样的 70 | 71 | ```rust 72 | fn foo(v: Vec) -> Option { 73 | match mean(v) { 74 | case None => None, 75 | case Some(a) => kaigen(a), 76 | } 77 | } 78 | ``` 79 | 80 | Monad 就是让我们避免写出这样的代码的。 81 | 82 | 因为组合 **任意** 两个签名是这样的函数(`f: a -> Option`, `g: b -> Option`) 的行为都是相似的,并且我们总在做相同的事情,它们无外乎是先把参数给 a,如果成功了就传给下一个,失败就把失败传递下去。 83 | 84 | 所以我们抽象了这个逻辑,带来了 `and_then` 方法,实现上面的逻辑看起来是这样的: 85 | 86 | ```rust 87 | fn bar(v: Vec): Option { 88 | mean(v).and_then(|a_float| kaigen(a_float)) 89 | } 90 | ``` 91 | 92 | 我们就简单的把两个可能失败的函数 **粘起来 **了。看起来代码没减少几行,但是如果你要粘很多函数,那它的强大就体现出来了,因为如果标准实现你可能会写一堆的 `match`, 而且更重要的是,这代码可读性提升太大了。 93 | 94 | #### Functor 95 | 96 | Functor 也是用来粘函数的 97 | 98 | 我们已经有能力粘两个可能失败的函数了,我们现在可能有需求粘一个可能失败和一个不会失败的函数,如果不会失败的函数在前,很好粘: 99 | 100 | `may_fail(succ(a))` 101 | 102 | 可是调换一下顺序就不太好粘了 103 | 104 | `f: a -> Option` 和 `g: b -> c` 105 | 106 | 这两个函数可以用 `map` 粘起来,这两个函数粘起来啥意思是显然的 107 | 108 | 比如新函数输入了 `ImaA`(我是一个A) 那么输出:`f(ImaA).map(|ImaB| g(ImaB))` 109 | 110 | 相当于粘完后得到一个 `a -> Option` 的函数 111 | 112 | #### 我也不知道叫啥,反正很有用的高阶函数 113 | 114 | `map_or` 方法接受一个 `self: Option`,一个 `default` ,一个函数`f` ,如果是 None,就返回 default ,如果是 Some,就解包后传入f。 115 | 116 | 它也粘了这样两个函数: 117 | 118 | `f: a -> Option` 119 | 120 | `g: b -> c` 121 | 122 | 不过粘出来的函数是 `a -> c` 123 | 124 | #### 总结 125 | 126 | 我们就有了三个粘可能失败的函数的办法,这样我们就可以把几乎所有可以导致错误的函数粘到一起,然后最后搞出来一个 `a -> Opiton` 来供下个调用者继续粘函数或者处理错误,或者我们也可以用黑科技 `map_or` 直接做错误处理。(这个方法的行为就有点像错误处理,不是吗?)最终写出这样的东西。 127 | 128 | ```rust 129 | fn foobar(a) -> Option { 130 | may_fail(succ1(a)) 131 | .and_then(|dd| may_fail1(dd)) 132 | .and_then(|ee| may_fail2(ee)) 133 | .map(|ff| succ2(ff)) 134 | } 135 | ``` 136 | 137 | 虽然不是很好看,不过它基本是我们能掌握的最好的武器了,这种逻辑复杂的代码,反正咋写都不会好看的。。。 138 | 139 | 最后如果一个类型构造器 F 实现了粘两个函数(`a -> F`, `b -> F`) 得到一个`a -> F`的函数的方法,那么它就是一个 Monad,显然 `Result` 也是一个 Monad,我们可以把它看成第二个泛型(err)固定的 Monad,因为它实现了`ok_or`方法,这东西基本和 `Option` 构造是相同的,就不说了(或者第一个泛型固定的Monad,不过可能一般不这么用),最后,咱有时间可以试试用`Option`的`and_then` 去把 `map` 构造出来,这两个函数的签名其实蛮像的,所以一个 Monad 一定是一个 Functor,同样的 Result 也是一个 Functor,所以标准库肯定也有类似 `Option` 的 `map` 的方法。 140 | 141 | -------------------------------------------------------------------------------- /examples/learnweb/.env: -------------------------------------------------------------------------------- 1 | PG_DB_URL=postgres://postgres:123456@localhost:5432/postgres 2 | -------------------------------------------------------------------------------- /examples/learnweb/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "Inflector" 7 | version = "0.11.4" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" 10 | dependencies = [ 11 | "lazy_static", 12 | "regex", 13 | ] 14 | 15 | [[package]] 16 | name = "aead" 17 | version = "0.4.3" 18 | source = "registry+https://github.com/rust-lang/crates.io-index" 19 | checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" 20 | dependencies = [ 21 | "generic-array", 22 | ] 23 | 24 | [[package]] 25 | name = "aes" 26 | version = "0.7.5" 27 | source = "registry+https://github.com/rust-lang/crates.io-index" 28 | checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" 29 | dependencies = [ 30 | "cfg-if", 31 | "cipher", 32 | "cpufeatures", 33 | "opaque-debug", 34 | ] 35 | 36 | [[package]] 37 | name = "aes-gcm" 38 | version = "0.9.4" 39 | source = "registry+https://github.com/rust-lang/crates.io-index" 40 | checksum = "df5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6" 41 | dependencies = [ 42 | "aead", 43 | "aes", 44 | "cipher", 45 | "ctr", 46 | "ghash", 47 | "subtle", 48 | ] 49 | 50 | [[package]] 51 | name = "ahash" 52 | version = "0.7.6" 53 | source = "registry+https://github.com/rust-lang/crates.io-index" 54 | checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" 55 | dependencies = [ 56 | "getrandom", 57 | "once_cell", 58 | "version_check", 59 | ] 60 | 61 | [[package]] 62 | name = "aho-corasick" 63 | version = "0.7.18" 64 | source = "registry+https://github.com/rust-lang/crates.io-index" 65 | checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" 66 | dependencies = [ 67 | "memchr", 68 | ] 69 | 70 | [[package]] 71 | name = "ansi_term" 72 | version = "0.12.1" 73 | source = "registry+https://github.com/rust-lang/crates.io-index" 74 | checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" 75 | dependencies = [ 76 | "winapi", 77 | ] 78 | 79 | [[package]] 80 | name = "async-trait" 81 | version = "0.1.52" 82 | source = "registry+https://github.com/rust-lang/crates.io-index" 83 | checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3" 84 | dependencies = [ 85 | "proc-macro2", 86 | "quote", 87 | "syn", 88 | ] 89 | 90 | [[package]] 91 | name = "atoi" 92 | version = "0.4.0" 93 | source = "registry+https://github.com/rust-lang/crates.io-index" 94 | checksum = "616896e05fc0e2649463a93a15183c6a16bf03413a7af88ef1285ddedfa9cda5" 95 | dependencies = [ 96 | "num-traits", 97 | ] 98 | 99 | [[package]] 100 | name = "autocfg" 101 | version = "1.1.0" 102 | source = "registry+https://github.com/rust-lang/crates.io-index" 103 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 104 | 105 | [[package]] 106 | name = "base64" 107 | version = "0.11.0" 108 | source = "registry+https://github.com/rust-lang/crates.io-index" 109 | checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" 110 | 111 | [[package]] 112 | name = "base64" 113 | version = "0.13.0" 114 | source = "registry+https://github.com/rust-lang/crates.io-index" 115 | checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" 116 | 117 | [[package]] 118 | name = "bitflags" 119 | version = "1.3.2" 120 | source = "registry+https://github.com/rust-lang/crates.io-index" 121 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 122 | 123 | [[package]] 124 | name = "block-buffer" 125 | version = "0.9.0" 126 | source = "registry+https://github.com/rust-lang/crates.io-index" 127 | checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" 128 | dependencies = [ 129 | "generic-array", 130 | ] 131 | 132 | [[package]] 133 | name = "block-buffer" 134 | version = "0.10.2" 135 | source = "registry+https://github.com/rust-lang/crates.io-index" 136 | checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" 137 | dependencies = [ 138 | "generic-array", 139 | ] 140 | 141 | [[package]] 142 | name = "bumpalo" 143 | version = "3.9.1" 144 | source = "registry+https://github.com/rust-lang/crates.io-index" 145 | checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" 146 | 147 | [[package]] 148 | name = "byteorder" 149 | version = "1.4.3" 150 | source = "registry+https://github.com/rust-lang/crates.io-index" 151 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" 152 | 153 | [[package]] 154 | name = "bytes" 155 | version = "0.5.6" 156 | source = "registry+https://github.com/rust-lang/crates.io-index" 157 | checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" 158 | 159 | [[package]] 160 | name = "bytes" 161 | version = "1.1.0" 162 | source = "registry+https://github.com/rust-lang/crates.io-index" 163 | checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" 164 | 165 | [[package]] 166 | name = "cc" 167 | version = "1.0.73" 168 | source = "registry+https://github.com/rust-lang/crates.io-index" 169 | checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" 170 | 171 | [[package]] 172 | name = "cfg-if" 173 | version = "1.0.0" 174 | source = "registry+https://github.com/rust-lang/crates.io-index" 175 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 176 | 177 | [[package]] 178 | name = "chrono" 179 | version = "0.4.19" 180 | source = "registry+https://github.com/rust-lang/crates.io-index" 181 | checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" 182 | dependencies = [ 183 | "libc", 184 | "num-integer", 185 | "num-traits", 186 | "time 0.1.44", 187 | "winapi", 188 | ] 189 | 190 | [[package]] 191 | name = "cipher" 192 | version = "0.3.0" 193 | source = "registry+https://github.com/rust-lang/crates.io-index" 194 | checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" 195 | dependencies = [ 196 | "generic-array", 197 | ] 198 | 199 | [[package]] 200 | name = "convert_case" 201 | version = "0.4.0" 202 | source = "registry+https://github.com/rust-lang/crates.io-index" 203 | checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" 204 | 205 | [[package]] 206 | name = "cookie" 207 | version = "0.16.0" 208 | source = "registry+https://github.com/rust-lang/crates.io-index" 209 | checksum = "94d4706de1b0fa5b132270cddffa8585166037822e260a944fe161acd137ca05" 210 | dependencies = [ 211 | "aes-gcm", 212 | "base64 0.13.0", 213 | "hkdf", 214 | "hmac 0.12.1", 215 | "percent-encoding", 216 | "rand", 217 | "sha2 0.10.2", 218 | "subtle", 219 | "time 0.3.7", 220 | "version_check", 221 | ] 222 | 223 | [[package]] 224 | name = "core-foundation" 225 | version = "0.9.3" 226 | source = "registry+https://github.com/rust-lang/crates.io-index" 227 | checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" 228 | dependencies = [ 229 | "core-foundation-sys", 230 | "libc", 231 | ] 232 | 233 | [[package]] 234 | name = "core-foundation-sys" 235 | version = "0.8.3" 236 | source = "registry+https://github.com/rust-lang/crates.io-index" 237 | checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" 238 | 239 | [[package]] 240 | name = "cpufeatures" 241 | version = "0.2.1" 242 | source = "registry+https://github.com/rust-lang/crates.io-index" 243 | checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" 244 | dependencies = [ 245 | "libc", 246 | ] 247 | 248 | [[package]] 249 | name = "crossbeam-queue" 250 | version = "0.3.4" 251 | source = "registry+https://github.com/rust-lang/crates.io-index" 252 | checksum = "4dd435b205a4842da59efd07628f921c096bc1cc0a156835b4fa0bcb9a19bcce" 253 | dependencies = [ 254 | "cfg-if", 255 | "crossbeam-utils", 256 | ] 257 | 258 | [[package]] 259 | name = "crossbeam-utils" 260 | version = "0.8.7" 261 | source = "registry+https://github.com/rust-lang/crates.io-index" 262 | checksum = "b5e5bed1f1c269533fa816a0a5492b3545209a205ca1a54842be180eb63a16a6" 263 | dependencies = [ 264 | "cfg-if", 265 | "lazy_static", 266 | ] 267 | 268 | [[package]] 269 | name = "crypto-common" 270 | version = "0.1.3" 271 | source = "registry+https://github.com/rust-lang/crates.io-index" 272 | checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8" 273 | dependencies = [ 274 | "generic-array", 275 | "typenum", 276 | ] 277 | 278 | [[package]] 279 | name = "crypto-mac" 280 | version = "0.11.1" 281 | source = "registry+https://github.com/rust-lang/crates.io-index" 282 | checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" 283 | dependencies = [ 284 | "generic-array", 285 | "subtle", 286 | ] 287 | 288 | [[package]] 289 | name = "ctr" 290 | version = "0.8.0" 291 | source = "registry+https://github.com/rust-lang/crates.io-index" 292 | checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" 293 | dependencies = [ 294 | "cipher", 295 | ] 296 | 297 | [[package]] 298 | name = "darling" 299 | version = "0.13.1" 300 | source = "registry+https://github.com/rust-lang/crates.io-index" 301 | checksum = "d0d720b8683f8dd83c65155f0530560cba68cd2bf395f6513a483caee57ff7f4" 302 | dependencies = [ 303 | "darling_core", 304 | "darling_macro", 305 | ] 306 | 307 | [[package]] 308 | name = "darling_core" 309 | version = "0.13.1" 310 | source = "registry+https://github.com/rust-lang/crates.io-index" 311 | checksum = "7a340f241d2ceed1deb47ae36c4144b2707ec7dd0b649f894cb39bb595986324" 312 | dependencies = [ 313 | "fnv", 314 | "ident_case", 315 | "proc-macro2", 316 | "quote", 317 | "strsim", 318 | "syn", 319 | ] 320 | 321 | [[package]] 322 | name = "darling_macro" 323 | version = "0.13.1" 324 | source = "registry+https://github.com/rust-lang/crates.io-index" 325 | checksum = "72c41b3b7352feb3211a0d743dc5700a4e3b60f51bd2b368892d1e0f9a95f44b" 326 | dependencies = [ 327 | "darling_core", 328 | "quote", 329 | "syn", 330 | ] 331 | 332 | [[package]] 333 | name = "dbase" 334 | version = "0.1.0" 335 | 336 | [[package]] 337 | name = "derive_more" 338 | version = "0.99.17" 339 | source = "registry+https://github.com/rust-lang/crates.io-index" 340 | checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" 341 | dependencies = [ 342 | "convert_case", 343 | "proc-macro2", 344 | "quote", 345 | "rustc_version", 346 | "syn", 347 | ] 348 | 349 | [[package]] 350 | name = "digest" 351 | version = "0.9.0" 352 | source = "registry+https://github.com/rust-lang/crates.io-index" 353 | checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" 354 | dependencies = [ 355 | "generic-array", 356 | ] 357 | 358 | [[package]] 359 | name = "digest" 360 | version = "0.10.3" 361 | source = "registry+https://github.com/rust-lang/crates.io-index" 362 | checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" 363 | dependencies = [ 364 | "block-buffer 0.10.2", 365 | "crypto-common", 366 | "subtle", 367 | ] 368 | 369 | [[package]] 370 | name = "dirs" 371 | version = "4.0.0" 372 | source = "registry+https://github.com/rust-lang/crates.io-index" 373 | checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" 374 | dependencies = [ 375 | "dirs-sys", 376 | ] 377 | 378 | [[package]] 379 | name = "dirs-sys" 380 | version = "0.3.6" 381 | source = "registry+https://github.com/rust-lang/crates.io-index" 382 | checksum = "03d86534ed367a67548dc68113a0f5db55432fdfbb6e6f9d77704397d95d5780" 383 | dependencies = [ 384 | "libc", 385 | "redox_users", 386 | "winapi", 387 | ] 388 | 389 | [[package]] 390 | name = "dotenv" 391 | version = "0.15.0" 392 | source = "registry+https://github.com/rust-lang/crates.io-index" 393 | checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" 394 | 395 | [[package]] 396 | name = "either" 397 | version = "1.6.1" 398 | source = "registry+https://github.com/rust-lang/crates.io-index" 399 | checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" 400 | 401 | [[package]] 402 | name = "encoding_rs" 403 | version = "0.8.30" 404 | source = "registry+https://github.com/rust-lang/crates.io-index" 405 | checksum = "7896dc8abb250ffdda33912550faa54c88ec8b998dec0b2c55ab224921ce11df" 406 | dependencies = [ 407 | "cfg-if", 408 | ] 409 | 410 | [[package]] 411 | name = "fastrand" 412 | version = "1.7.0" 413 | source = "registry+https://github.com/rust-lang/crates.io-index" 414 | checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" 415 | dependencies = [ 416 | "instant", 417 | ] 418 | 419 | [[package]] 420 | name = "fnv" 421 | version = "1.0.7" 422 | source = "registry+https://github.com/rust-lang/crates.io-index" 423 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 424 | 425 | [[package]] 426 | name = "foreign-types" 427 | version = "0.3.2" 428 | source = "registry+https://github.com/rust-lang/crates.io-index" 429 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 430 | dependencies = [ 431 | "foreign-types-shared", 432 | ] 433 | 434 | [[package]] 435 | name = "foreign-types-shared" 436 | version = "0.1.1" 437 | source = "registry+https://github.com/rust-lang/crates.io-index" 438 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 439 | 440 | [[package]] 441 | name = "form_urlencoded" 442 | version = "1.0.1" 443 | source = "registry+https://github.com/rust-lang/crates.io-index" 444 | checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" 445 | dependencies = [ 446 | "matches", 447 | "percent-encoding", 448 | ] 449 | 450 | [[package]] 451 | name = "futures-channel" 452 | version = "0.3.21" 453 | source = "registry+https://github.com/rust-lang/crates.io-index" 454 | checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" 455 | dependencies = [ 456 | "futures-core", 457 | "futures-sink", 458 | ] 459 | 460 | [[package]] 461 | name = "futures-core" 462 | version = "0.3.21" 463 | source = "registry+https://github.com/rust-lang/crates.io-index" 464 | checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" 465 | 466 | [[package]] 467 | name = "futures-intrusive" 468 | version = "0.4.0" 469 | source = "registry+https://github.com/rust-lang/crates.io-index" 470 | checksum = "62007592ac46aa7c2b6416f7deb9a8a8f63a01e0f1d6e1787d5630170db2b63e" 471 | dependencies = [ 472 | "futures-core", 473 | "lock_api", 474 | "parking_lot 0.11.2", 475 | ] 476 | 477 | [[package]] 478 | name = "futures-macro" 479 | version = "0.3.21" 480 | source = "registry+https://github.com/rust-lang/crates.io-index" 481 | checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" 482 | dependencies = [ 483 | "proc-macro2", 484 | "quote", 485 | "syn", 486 | ] 487 | 488 | [[package]] 489 | name = "futures-sink" 490 | version = "0.3.21" 491 | source = "registry+https://github.com/rust-lang/crates.io-index" 492 | checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" 493 | 494 | [[package]] 495 | name = "futures-task" 496 | version = "0.3.21" 497 | source = "registry+https://github.com/rust-lang/crates.io-index" 498 | checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" 499 | 500 | [[package]] 501 | name = "futures-util" 502 | version = "0.3.21" 503 | source = "registry+https://github.com/rust-lang/crates.io-index" 504 | checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" 505 | dependencies = [ 506 | "futures-core", 507 | "futures-macro", 508 | "futures-sink", 509 | "futures-task", 510 | "pin-project-lite", 511 | "pin-utils", 512 | "slab", 513 | ] 514 | 515 | [[package]] 516 | name = "generic-array" 517 | version = "0.14.5" 518 | source = "registry+https://github.com/rust-lang/crates.io-index" 519 | checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" 520 | dependencies = [ 521 | "typenum", 522 | "version_check", 523 | ] 524 | 525 | [[package]] 526 | name = "getrandom" 527 | version = "0.2.4" 528 | source = "registry+https://github.com/rust-lang/crates.io-index" 529 | checksum = "418d37c8b1d42553c93648be529cb70f920d3baf8ef469b74b9638df426e0b4c" 530 | dependencies = [ 531 | "cfg-if", 532 | "libc", 533 | "wasi", 534 | ] 535 | 536 | [[package]] 537 | name = "ghash" 538 | version = "0.4.4" 539 | source = "registry+https://github.com/rust-lang/crates.io-index" 540 | checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99" 541 | dependencies = [ 542 | "opaque-debug", 543 | "polyval", 544 | ] 545 | 546 | [[package]] 547 | name = "h2" 548 | version = "0.3.11" 549 | source = "registry+https://github.com/rust-lang/crates.io-index" 550 | checksum = "d9f1f717ddc7b2ba36df7e871fd88db79326551d3d6f1fc406fbfd28b582ff8e" 551 | dependencies = [ 552 | "bytes 1.1.0", 553 | "fnv", 554 | "futures-core", 555 | "futures-sink", 556 | "futures-util", 557 | "http", 558 | "indexmap", 559 | "slab", 560 | "tokio", 561 | "tokio-util", 562 | "tracing", 563 | ] 564 | 565 | [[package]] 566 | name = "hashbrown" 567 | version = "0.11.2" 568 | source = "registry+https://github.com/rust-lang/crates.io-index" 569 | checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" 570 | dependencies = [ 571 | "ahash", 572 | ] 573 | 574 | [[package]] 575 | name = "hashlink" 576 | version = "0.7.0" 577 | source = "registry+https://github.com/rust-lang/crates.io-index" 578 | checksum = "7249a3129cbc1ffccd74857f81464a323a152173cdb134e0fd81bc803b29facf" 579 | dependencies = [ 580 | "hashbrown", 581 | ] 582 | 583 | [[package]] 584 | name = "headers" 585 | version = "0.3.7" 586 | source = "registry+https://github.com/rust-lang/crates.io-index" 587 | checksum = "4cff78e5788be1e0ab65b04d306b2ed5092c815ec97ec70f4ebd5aee158aa55d" 588 | dependencies = [ 589 | "base64 0.13.0", 590 | "bitflags", 591 | "bytes 1.1.0", 592 | "headers-core", 593 | "http", 594 | "httpdate", 595 | "mime", 596 | "sha-1 0.10.0", 597 | ] 598 | 599 | [[package]] 600 | name = "headers-core" 601 | version = "0.2.0" 602 | source = "registry+https://github.com/rust-lang/crates.io-index" 603 | checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" 604 | dependencies = [ 605 | "http", 606 | ] 607 | 608 | [[package]] 609 | name = "heck" 610 | version = "0.3.3" 611 | source = "registry+https://github.com/rust-lang/crates.io-index" 612 | checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" 613 | dependencies = [ 614 | "unicode-segmentation", 615 | ] 616 | 617 | [[package]] 618 | name = "hermit-abi" 619 | version = "0.1.19" 620 | source = "registry+https://github.com/rust-lang/crates.io-index" 621 | checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" 622 | dependencies = [ 623 | "libc", 624 | ] 625 | 626 | [[package]] 627 | name = "hex" 628 | version = "0.4.3" 629 | source = "registry+https://github.com/rust-lang/crates.io-index" 630 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 631 | 632 | [[package]] 633 | name = "hkdf" 634 | version = "0.12.3" 635 | source = "registry+https://github.com/rust-lang/crates.io-index" 636 | checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" 637 | dependencies = [ 638 | "hmac 0.12.1", 639 | ] 640 | 641 | [[package]] 642 | name = "hmac" 643 | version = "0.11.0" 644 | source = "registry+https://github.com/rust-lang/crates.io-index" 645 | checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" 646 | dependencies = [ 647 | "crypto-mac", 648 | "digest 0.9.0", 649 | ] 650 | 651 | [[package]] 652 | name = "hmac" 653 | version = "0.12.1" 654 | source = "registry+https://github.com/rust-lang/crates.io-index" 655 | checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 656 | dependencies = [ 657 | "digest 0.10.3", 658 | ] 659 | 660 | [[package]] 661 | name = "http" 662 | version = "0.2.6" 663 | source = "registry+https://github.com/rust-lang/crates.io-index" 664 | checksum = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03" 665 | dependencies = [ 666 | "bytes 1.1.0", 667 | "fnv", 668 | "itoa", 669 | ] 670 | 671 | [[package]] 672 | name = "http-body" 673 | version = "0.4.4" 674 | source = "registry+https://github.com/rust-lang/crates.io-index" 675 | checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" 676 | dependencies = [ 677 | "bytes 1.1.0", 678 | "http", 679 | "pin-project-lite", 680 | ] 681 | 682 | [[package]] 683 | name = "httparse" 684 | version = "1.6.0" 685 | source = "registry+https://github.com/rust-lang/crates.io-index" 686 | checksum = "9100414882e15fb7feccb4897e5f0ff0ff1ca7d1a86a23208ada4d7a18e6c6c4" 687 | 688 | [[package]] 689 | name = "httpdate" 690 | version = "1.0.2" 691 | source = "registry+https://github.com/rust-lang/crates.io-index" 692 | checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" 693 | 694 | [[package]] 695 | name = "hyper" 696 | version = "0.14.17" 697 | source = "registry+https://github.com/rust-lang/crates.io-index" 698 | checksum = "043f0e083e9901b6cc658a77d1eb86f4fc650bbb977a4337dd63192826aa85dd" 699 | dependencies = [ 700 | "bytes 1.1.0", 701 | "futures-channel", 702 | "futures-core", 703 | "futures-util", 704 | "h2", 705 | "http", 706 | "http-body", 707 | "httparse", 708 | "httpdate", 709 | "itoa", 710 | "pin-project-lite", 711 | "socket2", 712 | "tokio", 713 | "tower-service", 714 | "tracing", 715 | "want", 716 | ] 717 | 718 | [[package]] 719 | name = "ident_case" 720 | version = "1.0.1" 721 | source = "registry+https://github.com/rust-lang/crates.io-index" 722 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 723 | 724 | [[package]] 725 | name = "idna" 726 | version = "0.2.3" 727 | source = "registry+https://github.com/rust-lang/crates.io-index" 728 | checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" 729 | dependencies = [ 730 | "matches", 731 | "unicode-bidi", 732 | "unicode-normalization", 733 | ] 734 | 735 | [[package]] 736 | name = "indexmap" 737 | version = "1.8.0" 738 | source = "registry+https://github.com/rust-lang/crates.io-index" 739 | checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223" 740 | dependencies = [ 741 | "autocfg", 742 | "hashbrown", 743 | ] 744 | 745 | [[package]] 746 | name = "instant" 747 | version = "0.1.12" 748 | source = "registry+https://github.com/rust-lang/crates.io-index" 749 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 750 | dependencies = [ 751 | "cfg-if", 752 | ] 753 | 754 | [[package]] 755 | name = "itertools" 756 | version = "0.10.3" 757 | source = "registry+https://github.com/rust-lang/crates.io-index" 758 | checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" 759 | dependencies = [ 760 | "either", 761 | ] 762 | 763 | [[package]] 764 | name = "itoa" 765 | version = "1.0.1" 766 | source = "registry+https://github.com/rust-lang/crates.io-index" 767 | checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" 768 | 769 | [[package]] 770 | name = "js-sys" 771 | version = "0.3.56" 772 | source = "registry+https://github.com/rust-lang/crates.io-index" 773 | checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04" 774 | dependencies = [ 775 | "wasm-bindgen", 776 | ] 777 | 778 | [[package]] 779 | name = "lazy_static" 780 | version = "1.4.0" 781 | source = "registry+https://github.com/rust-lang/crates.io-index" 782 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 783 | 784 | [[package]] 785 | name = "libc" 786 | version = "0.2.119" 787 | source = "registry+https://github.com/rust-lang/crates.io-index" 788 | checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4" 789 | 790 | [[package]] 791 | name = "lock_api" 792 | version = "0.4.6" 793 | source = "registry+https://github.com/rust-lang/crates.io-index" 794 | checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" 795 | dependencies = [ 796 | "scopeguard", 797 | ] 798 | 799 | [[package]] 800 | name = "log" 801 | version = "0.4.14" 802 | source = "registry+https://github.com/rust-lang/crates.io-index" 803 | checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" 804 | dependencies = [ 805 | "cfg-if", 806 | ] 807 | 808 | [[package]] 809 | name = "matches" 810 | version = "0.1.9" 811 | source = "registry+https://github.com/rust-lang/crates.io-index" 812 | checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" 813 | 814 | [[package]] 815 | name = "md-5" 816 | version = "0.9.1" 817 | source = "registry+https://github.com/rust-lang/crates.io-index" 818 | checksum = "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15" 819 | dependencies = [ 820 | "block-buffer 0.9.0", 821 | "digest 0.9.0", 822 | "opaque-debug", 823 | ] 824 | 825 | [[package]] 826 | name = "memchr" 827 | version = "2.4.1" 828 | source = "registry+https://github.com/rust-lang/crates.io-index" 829 | checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" 830 | 831 | [[package]] 832 | name = "mime" 833 | version = "0.3.16" 834 | source = "registry+https://github.com/rust-lang/crates.io-index" 835 | checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" 836 | 837 | [[package]] 838 | name = "minimal-lexical" 839 | version = "0.2.1" 840 | source = "registry+https://github.com/rust-lang/crates.io-index" 841 | checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 842 | 843 | [[package]] 844 | name = "mio" 845 | version = "0.8.0" 846 | source = "registry+https://github.com/rust-lang/crates.io-index" 847 | checksum = "ba272f85fa0b41fc91872be579b3bbe0f56b792aa361a380eb669469f68dafb2" 848 | dependencies = [ 849 | "libc", 850 | "log", 851 | "miow", 852 | "ntapi", 853 | "winapi", 854 | ] 855 | 856 | [[package]] 857 | name = "miow" 858 | version = "0.3.7" 859 | source = "registry+https://github.com/rust-lang/crates.io-index" 860 | checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" 861 | dependencies = [ 862 | "winapi", 863 | ] 864 | 865 | [[package]] 866 | name = "multer" 867 | version = "2.0.2" 868 | source = "registry+https://github.com/rust-lang/crates.io-index" 869 | checksum = "5f8f35e687561d5c1667590911e6698a8cb714a134a7505718a182e7bc9d3836" 870 | dependencies = [ 871 | "bytes 1.1.0", 872 | "encoding_rs", 873 | "futures-util", 874 | "http", 875 | "httparse", 876 | "log", 877 | "memchr", 878 | "mime", 879 | "spin", 880 | "tokio", 881 | "version_check", 882 | ] 883 | 884 | [[package]] 885 | name = "native-tls" 886 | version = "0.2.8" 887 | source = "registry+https://github.com/rust-lang/crates.io-index" 888 | checksum = "48ba9f7719b5a0f42f338907614285fb5fd70e53858141f69898a1fb7203b24d" 889 | dependencies = [ 890 | "lazy_static", 891 | "libc", 892 | "log", 893 | "openssl", 894 | "openssl-probe", 895 | "openssl-sys", 896 | "schannel", 897 | "security-framework", 898 | "security-framework-sys", 899 | "tempfile", 900 | ] 901 | 902 | [[package]] 903 | name = "nom" 904 | version = "7.1.0" 905 | source = "registry+https://github.com/rust-lang/crates.io-index" 906 | checksum = "1b1d11e1ef389c76fe5b81bcaf2ea32cf88b62bc494e19f493d0b30e7a930109" 907 | dependencies = [ 908 | "memchr", 909 | "minimal-lexical", 910 | "version_check", 911 | ] 912 | 913 | [[package]] 914 | name = "ntapi" 915 | version = "0.3.7" 916 | source = "registry+https://github.com/rust-lang/crates.io-index" 917 | checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" 918 | dependencies = [ 919 | "winapi", 920 | ] 921 | 922 | [[package]] 923 | name = "num-integer" 924 | version = "0.1.44" 925 | source = "registry+https://github.com/rust-lang/crates.io-index" 926 | checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" 927 | dependencies = [ 928 | "autocfg", 929 | "num-traits", 930 | ] 931 | 932 | [[package]] 933 | name = "num-traits" 934 | version = "0.2.14" 935 | source = "registry+https://github.com/rust-lang/crates.io-index" 936 | checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" 937 | dependencies = [ 938 | "autocfg", 939 | ] 940 | 941 | [[package]] 942 | name = "num_cpus" 943 | version = "1.13.1" 944 | source = "registry+https://github.com/rust-lang/crates.io-index" 945 | checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" 946 | dependencies = [ 947 | "hermit-abi", 948 | "libc", 949 | ] 950 | 951 | [[package]] 952 | name = "num_threads" 953 | version = "0.1.3" 954 | source = "registry+https://github.com/rust-lang/crates.io-index" 955 | checksum = "97ba99ba6393e2c3734791401b66902d981cb03bf190af674ca69949b6d5fb15" 956 | dependencies = [ 957 | "libc", 958 | ] 959 | 960 | [[package]] 961 | name = "once_cell" 962 | version = "1.9.0" 963 | source = "registry+https://github.com/rust-lang/crates.io-index" 964 | checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5" 965 | 966 | [[package]] 967 | name = "opaque-debug" 968 | version = "0.3.0" 969 | source = "registry+https://github.com/rust-lang/crates.io-index" 970 | checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" 971 | 972 | [[package]] 973 | name = "openssl" 974 | version = "0.10.38" 975 | source = "registry+https://github.com/rust-lang/crates.io-index" 976 | checksum = "0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95" 977 | dependencies = [ 978 | "bitflags", 979 | "cfg-if", 980 | "foreign-types", 981 | "libc", 982 | "once_cell", 983 | "openssl-sys", 984 | ] 985 | 986 | [[package]] 987 | name = "openssl-probe" 988 | version = "0.1.5" 989 | source = "registry+https://github.com/rust-lang/crates.io-index" 990 | checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" 991 | 992 | [[package]] 993 | name = "openssl-sys" 994 | version = "0.9.72" 995 | source = "registry+https://github.com/rust-lang/crates.io-index" 996 | checksum = "7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb" 997 | dependencies = [ 998 | "autocfg", 999 | "cc", 1000 | "libc", 1001 | "pkg-config", 1002 | "vcpkg", 1003 | ] 1004 | 1005 | [[package]] 1006 | name = "parking_lot" 1007 | version = "0.11.2" 1008 | source = "registry+https://github.com/rust-lang/crates.io-index" 1009 | checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" 1010 | dependencies = [ 1011 | "instant", 1012 | "lock_api", 1013 | "parking_lot_core 0.8.5", 1014 | ] 1015 | 1016 | [[package]] 1017 | name = "parking_lot" 1018 | version = "0.12.0" 1019 | source = "registry+https://github.com/rust-lang/crates.io-index" 1020 | checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58" 1021 | dependencies = [ 1022 | "lock_api", 1023 | "parking_lot_core 0.9.1", 1024 | ] 1025 | 1026 | [[package]] 1027 | name = "parking_lot_core" 1028 | version = "0.8.5" 1029 | source = "registry+https://github.com/rust-lang/crates.io-index" 1030 | checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" 1031 | dependencies = [ 1032 | "cfg-if", 1033 | "instant", 1034 | "libc", 1035 | "redox_syscall", 1036 | "smallvec", 1037 | "winapi", 1038 | ] 1039 | 1040 | [[package]] 1041 | name = "parking_lot_core" 1042 | version = "0.9.1" 1043 | source = "registry+https://github.com/rust-lang/crates.io-index" 1044 | checksum = "28141e0cc4143da2443301914478dc976a61ffdb3f043058310c70df2fed8954" 1045 | dependencies = [ 1046 | "cfg-if", 1047 | "libc", 1048 | "redox_syscall", 1049 | "smallvec", 1050 | "windows-sys", 1051 | ] 1052 | 1053 | [[package]] 1054 | name = "paste" 1055 | version = "1.0.6" 1056 | source = "registry+https://github.com/rust-lang/crates.io-index" 1057 | checksum = "0744126afe1a6dd7f394cb50a716dbe086cb06e255e53d8d0185d82828358fb5" 1058 | 1059 | [[package]] 1060 | name = "percent-encoding" 1061 | version = "2.1.0" 1062 | source = "registry+https://github.com/rust-lang/crates.io-index" 1063 | checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" 1064 | 1065 | [[package]] 1066 | name = "pin-project-lite" 1067 | version = "0.2.8" 1068 | source = "registry+https://github.com/rust-lang/crates.io-index" 1069 | checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" 1070 | 1071 | [[package]] 1072 | name = "pin-utils" 1073 | version = "0.1.0" 1074 | source = "registry+https://github.com/rust-lang/crates.io-index" 1075 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1076 | 1077 | [[package]] 1078 | name = "pkg-config" 1079 | version = "0.3.24" 1080 | source = "registry+https://github.com/rust-lang/crates.io-index" 1081 | checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" 1082 | 1083 | [[package]] 1084 | name = "poem" 1085 | version = "1.3.3" 1086 | source = "registry+https://github.com/rust-lang/crates.io-index" 1087 | checksum = "90ee8d82fee894eeaf9aed8a17d79bf7f2d7fa5e859afb410be6e2b889b55b64" 1088 | dependencies = [ 1089 | "async-trait", 1090 | "bytes 1.1.0", 1091 | "chrono", 1092 | "cookie", 1093 | "futures-util", 1094 | "headers", 1095 | "http", 1096 | "hyper", 1097 | "mime", 1098 | "multer", 1099 | "parking_lot 0.12.0", 1100 | "percent-encoding", 1101 | "pin-project-lite", 1102 | "poem-derive", 1103 | "regex", 1104 | "serde", 1105 | "serde_json", 1106 | "serde_urlencoded", 1107 | "smallvec", 1108 | "tempfile", 1109 | "thiserror", 1110 | "time 0.3.7", 1111 | "tokio", 1112 | "tokio-stream", 1113 | "tokio-util", 1114 | "tracing", 1115 | ] 1116 | 1117 | [[package]] 1118 | name = "poem-derive" 1119 | version = "1.3.3" 1120 | source = "registry+https://github.com/rust-lang/crates.io-index" 1121 | checksum = "b18fa53027f60409d046fb3521ec59da244b0d6d3ba96aebbbab3d0263644058" 1122 | dependencies = [ 1123 | "proc-macro-crate", 1124 | "proc-macro2", 1125 | "quote", 1126 | "syn", 1127 | ] 1128 | 1129 | [[package]] 1130 | name = "poem-openapi" 1131 | version = "1.3.3" 1132 | source = "registry+https://github.com/rust-lang/crates.io-index" 1133 | checksum = "fdbdc9ce9383f50280dcf9f9ddfc334ad5845632c8c4fda272d61d6d028575ae" 1134 | dependencies = [ 1135 | "base64 0.13.0", 1136 | "bytes 1.1.0", 1137 | "derive_more", 1138 | "futures-util", 1139 | "mime", 1140 | "num-traits", 1141 | "poem", 1142 | "poem-openapi-derive", 1143 | "regex", 1144 | "serde", 1145 | "serde_json", 1146 | "thiserror", 1147 | "tokio", 1148 | "typed-headers", 1149 | ] 1150 | 1151 | [[package]] 1152 | name = "poem-openapi-derive" 1153 | version = "1.3.3" 1154 | source = "registry+https://github.com/rust-lang/crates.io-index" 1155 | checksum = "ce70c5f540746695ac2c873033bfe8e0b3d93c1c86662f23ce190d22b3ad224d" 1156 | dependencies = [ 1157 | "Inflector", 1158 | "darling", 1159 | "http", 1160 | "indexmap", 1161 | "mime", 1162 | "proc-macro-crate", 1163 | "proc-macro2", 1164 | "quote", 1165 | "regex", 1166 | "syn", 1167 | "thiserror", 1168 | ] 1169 | 1170 | [[package]] 1171 | name = "polyval" 1172 | version = "0.5.3" 1173 | source = "registry+https://github.com/rust-lang/crates.io-index" 1174 | checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" 1175 | dependencies = [ 1176 | "cfg-if", 1177 | "cpufeatures", 1178 | "opaque-debug", 1179 | "universal-hash", 1180 | ] 1181 | 1182 | [[package]] 1183 | name = "ppv-lite86" 1184 | version = "0.2.16" 1185 | source = "registry+https://github.com/rust-lang/crates.io-index" 1186 | checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" 1187 | 1188 | [[package]] 1189 | name = "proc-macro-crate" 1190 | version = "1.1.2" 1191 | source = "registry+https://github.com/rust-lang/crates.io-index" 1192 | checksum = "9dada8c9981fcf32929c3c0f0cd796a9284aca335565227ed88c83babb1d43dc" 1193 | dependencies = [ 1194 | "thiserror", 1195 | "toml", 1196 | ] 1197 | 1198 | [[package]] 1199 | name = "proc-macro2" 1200 | version = "1.0.36" 1201 | source = "registry+https://github.com/rust-lang/crates.io-index" 1202 | checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" 1203 | dependencies = [ 1204 | "unicode-xid", 1205 | ] 1206 | 1207 | [[package]] 1208 | name = "quote" 1209 | version = "1.0.15" 1210 | source = "registry+https://github.com/rust-lang/crates.io-index" 1211 | checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145" 1212 | dependencies = [ 1213 | "proc-macro2", 1214 | ] 1215 | 1216 | [[package]] 1217 | name = "rand" 1218 | version = "0.8.5" 1219 | source = "registry+https://github.com/rust-lang/crates.io-index" 1220 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 1221 | dependencies = [ 1222 | "libc", 1223 | "rand_chacha", 1224 | "rand_core", 1225 | ] 1226 | 1227 | [[package]] 1228 | name = "rand_chacha" 1229 | version = "0.3.1" 1230 | source = "registry+https://github.com/rust-lang/crates.io-index" 1231 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 1232 | dependencies = [ 1233 | "ppv-lite86", 1234 | "rand_core", 1235 | ] 1236 | 1237 | [[package]] 1238 | name = "rand_core" 1239 | version = "0.6.3" 1240 | source = "registry+https://github.com/rust-lang/crates.io-index" 1241 | checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" 1242 | dependencies = [ 1243 | "getrandom", 1244 | ] 1245 | 1246 | [[package]] 1247 | name = "redox_syscall" 1248 | version = "0.2.10" 1249 | source = "registry+https://github.com/rust-lang/crates.io-index" 1250 | checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" 1251 | dependencies = [ 1252 | "bitflags", 1253 | ] 1254 | 1255 | [[package]] 1256 | name = "redox_users" 1257 | version = "0.4.0" 1258 | source = "registry+https://github.com/rust-lang/crates.io-index" 1259 | checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" 1260 | dependencies = [ 1261 | "getrandom", 1262 | "redox_syscall", 1263 | ] 1264 | 1265 | [[package]] 1266 | name = "regex" 1267 | version = "1.5.4" 1268 | source = "registry+https://github.com/rust-lang/crates.io-index" 1269 | checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" 1270 | dependencies = [ 1271 | "aho-corasick", 1272 | "memchr", 1273 | "regex-syntax", 1274 | ] 1275 | 1276 | [[package]] 1277 | name = "regex-syntax" 1278 | version = "0.6.25" 1279 | source = "registry+https://github.com/rust-lang/crates.io-index" 1280 | checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" 1281 | 1282 | [[package]] 1283 | name = "remove_dir_all" 1284 | version = "0.5.3" 1285 | source = "registry+https://github.com/rust-lang/crates.io-index" 1286 | checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" 1287 | dependencies = [ 1288 | "winapi", 1289 | ] 1290 | 1291 | [[package]] 1292 | name = "rustc_version" 1293 | version = "0.4.0" 1294 | source = "registry+https://github.com/rust-lang/crates.io-index" 1295 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 1296 | dependencies = [ 1297 | "semver", 1298 | ] 1299 | 1300 | [[package]] 1301 | name = "ryu" 1302 | version = "1.0.9" 1303 | source = "registry+https://github.com/rust-lang/crates.io-index" 1304 | checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" 1305 | 1306 | [[package]] 1307 | name = "schannel" 1308 | version = "0.1.19" 1309 | source = "registry+https://github.com/rust-lang/crates.io-index" 1310 | checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" 1311 | dependencies = [ 1312 | "lazy_static", 1313 | "winapi", 1314 | ] 1315 | 1316 | [[package]] 1317 | name = "scopeguard" 1318 | version = "1.1.0" 1319 | source = "registry+https://github.com/rust-lang/crates.io-index" 1320 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 1321 | 1322 | [[package]] 1323 | name = "security-framework" 1324 | version = "2.6.1" 1325 | source = "registry+https://github.com/rust-lang/crates.io-index" 1326 | checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" 1327 | dependencies = [ 1328 | "bitflags", 1329 | "core-foundation", 1330 | "core-foundation-sys", 1331 | "libc", 1332 | "security-framework-sys", 1333 | ] 1334 | 1335 | [[package]] 1336 | name = "security-framework-sys" 1337 | version = "2.6.1" 1338 | source = "registry+https://github.com/rust-lang/crates.io-index" 1339 | checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" 1340 | dependencies = [ 1341 | "core-foundation-sys", 1342 | "libc", 1343 | ] 1344 | 1345 | [[package]] 1346 | name = "semver" 1347 | version = "1.0.5" 1348 | source = "registry+https://github.com/rust-lang/crates.io-index" 1349 | checksum = "0486718e92ec9a68fbed73bb5ef687d71103b142595b406835649bebd33f72c7" 1350 | 1351 | [[package]] 1352 | name = "serde" 1353 | version = "1.0.136" 1354 | source = "registry+https://github.com/rust-lang/crates.io-index" 1355 | checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" 1356 | dependencies = [ 1357 | "serde_derive", 1358 | ] 1359 | 1360 | [[package]] 1361 | name = "serde_derive" 1362 | version = "1.0.136" 1363 | source = "registry+https://github.com/rust-lang/crates.io-index" 1364 | checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" 1365 | dependencies = [ 1366 | "proc-macro2", 1367 | "quote", 1368 | "syn", 1369 | ] 1370 | 1371 | [[package]] 1372 | name = "serde_json" 1373 | version = "1.0.79" 1374 | source = "registry+https://github.com/rust-lang/crates.io-index" 1375 | checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" 1376 | dependencies = [ 1377 | "itoa", 1378 | "ryu", 1379 | "serde", 1380 | ] 1381 | 1382 | [[package]] 1383 | name = "serde_urlencoded" 1384 | version = "0.7.1" 1385 | source = "registry+https://github.com/rust-lang/crates.io-index" 1386 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 1387 | dependencies = [ 1388 | "form_urlencoded", 1389 | "itoa", 1390 | "ryu", 1391 | "serde", 1392 | ] 1393 | 1394 | [[package]] 1395 | name = "sha-1" 1396 | version = "0.9.8" 1397 | source = "registry+https://github.com/rust-lang/crates.io-index" 1398 | checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" 1399 | dependencies = [ 1400 | "block-buffer 0.9.0", 1401 | "cfg-if", 1402 | "cpufeatures", 1403 | "digest 0.9.0", 1404 | "opaque-debug", 1405 | ] 1406 | 1407 | [[package]] 1408 | name = "sha-1" 1409 | version = "0.10.0" 1410 | source = "registry+https://github.com/rust-lang/crates.io-index" 1411 | checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" 1412 | dependencies = [ 1413 | "cfg-if", 1414 | "cpufeatures", 1415 | "digest 0.10.3", 1416 | ] 1417 | 1418 | [[package]] 1419 | name = "sha2" 1420 | version = "0.9.9" 1421 | source = "registry+https://github.com/rust-lang/crates.io-index" 1422 | checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" 1423 | dependencies = [ 1424 | "block-buffer 0.9.0", 1425 | "cfg-if", 1426 | "cpufeatures", 1427 | "digest 0.9.0", 1428 | "opaque-debug", 1429 | ] 1430 | 1431 | [[package]] 1432 | name = "sha2" 1433 | version = "0.10.2" 1434 | source = "registry+https://github.com/rust-lang/crates.io-index" 1435 | checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" 1436 | dependencies = [ 1437 | "cfg-if", 1438 | "cpufeatures", 1439 | "digest 0.10.3", 1440 | ] 1441 | 1442 | [[package]] 1443 | name = "sharded-slab" 1444 | version = "0.1.4" 1445 | source = "registry+https://github.com/rust-lang/crates.io-index" 1446 | checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" 1447 | dependencies = [ 1448 | "lazy_static", 1449 | ] 1450 | 1451 | [[package]] 1452 | name = "slab" 1453 | version = "0.4.5" 1454 | source = "registry+https://github.com/rust-lang/crates.io-index" 1455 | checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" 1456 | 1457 | [[package]] 1458 | name = "smallvec" 1459 | version = "1.8.0" 1460 | source = "registry+https://github.com/rust-lang/crates.io-index" 1461 | checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" 1462 | 1463 | [[package]] 1464 | name = "socket2" 1465 | version = "0.4.4" 1466 | source = "registry+https://github.com/rust-lang/crates.io-index" 1467 | checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" 1468 | dependencies = [ 1469 | "libc", 1470 | "winapi", 1471 | ] 1472 | 1473 | [[package]] 1474 | name = "spin" 1475 | version = "0.9.2" 1476 | source = "registry+https://github.com/rust-lang/crates.io-index" 1477 | checksum = "511254be0c5bcf062b019a6c89c01a664aa359ded62f78aa72c6fc137c0590e5" 1478 | 1479 | [[package]] 1480 | name = "sqlformat" 1481 | version = "0.1.8" 1482 | source = "registry+https://github.com/rust-lang/crates.io-index" 1483 | checksum = "b4b7922be017ee70900be125523f38bdd644f4f06a1b16e8fa5a8ee8c34bffd4" 1484 | dependencies = [ 1485 | "itertools", 1486 | "nom", 1487 | "unicode_categories", 1488 | ] 1489 | 1490 | [[package]] 1491 | name = "sqlx" 1492 | version = "0.5.11" 1493 | source = "registry+https://github.com/rust-lang/crates.io-index" 1494 | checksum = "fc15591eb44ffb5816a4a70a7efd5dd87bfd3aa84c4c200401c4396140525826" 1495 | dependencies = [ 1496 | "sqlx-core", 1497 | "sqlx-macros", 1498 | ] 1499 | 1500 | [[package]] 1501 | name = "sqlx-core" 1502 | version = "0.5.11" 1503 | source = "registry+https://github.com/rust-lang/crates.io-index" 1504 | checksum = "195183bf6ff8328bb82c0511a83faf60aacf75840103388851db61d7a9854ae3" 1505 | dependencies = [ 1506 | "ahash", 1507 | "atoi", 1508 | "base64 0.13.0", 1509 | "bitflags", 1510 | "byteorder", 1511 | "bytes 1.1.0", 1512 | "chrono", 1513 | "crossbeam-queue", 1514 | "dirs", 1515 | "either", 1516 | "futures-channel", 1517 | "futures-core", 1518 | "futures-intrusive", 1519 | "futures-util", 1520 | "hashlink", 1521 | "hex", 1522 | "hmac 0.11.0", 1523 | "indexmap", 1524 | "itoa", 1525 | "libc", 1526 | "log", 1527 | "md-5", 1528 | "memchr", 1529 | "once_cell", 1530 | "paste", 1531 | "percent-encoding", 1532 | "rand", 1533 | "serde", 1534 | "serde_json", 1535 | "sha-1 0.9.8", 1536 | "sha2 0.9.9", 1537 | "smallvec", 1538 | "sqlformat", 1539 | "sqlx-rt", 1540 | "stringprep", 1541 | "thiserror", 1542 | "tokio-stream", 1543 | "url", 1544 | "whoami", 1545 | ] 1546 | 1547 | [[package]] 1548 | name = "sqlx-macros" 1549 | version = "0.5.11" 1550 | source = "registry+https://github.com/rust-lang/crates.io-index" 1551 | checksum = "eee35713129561f5e55c554bba1c378e2a7e67f81257b7311183de98c50e6f94" 1552 | dependencies = [ 1553 | "dotenv", 1554 | "either", 1555 | "heck", 1556 | "once_cell", 1557 | "proc-macro2", 1558 | "quote", 1559 | "sqlx-core", 1560 | "sqlx-rt", 1561 | "syn", 1562 | "url", 1563 | ] 1564 | 1565 | [[package]] 1566 | name = "sqlx-rt" 1567 | version = "0.5.11" 1568 | source = "registry+https://github.com/rust-lang/crates.io-index" 1569 | checksum = "b555e70fbbf84e269ec3858b7a6515bcfe7a166a7cc9c636dd6efd20431678b6" 1570 | dependencies = [ 1571 | "native-tls", 1572 | "once_cell", 1573 | "tokio", 1574 | "tokio-native-tls", 1575 | ] 1576 | 1577 | [[package]] 1578 | name = "stringprep" 1579 | version = "0.1.2" 1580 | source = "registry+https://github.com/rust-lang/crates.io-index" 1581 | checksum = "8ee348cb74b87454fff4b551cbf727025810a004f88aeacae7f85b87f4e9a1c1" 1582 | dependencies = [ 1583 | "unicode-bidi", 1584 | "unicode-normalization", 1585 | ] 1586 | 1587 | [[package]] 1588 | name = "strsim" 1589 | version = "0.10.0" 1590 | source = "registry+https://github.com/rust-lang/crates.io-index" 1591 | checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" 1592 | 1593 | [[package]] 1594 | name = "subtle" 1595 | version = "2.4.1" 1596 | source = "registry+https://github.com/rust-lang/crates.io-index" 1597 | checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" 1598 | 1599 | [[package]] 1600 | name = "syn" 1601 | version = "1.0.86" 1602 | source = "registry+https://github.com/rust-lang/crates.io-index" 1603 | checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b" 1604 | dependencies = [ 1605 | "proc-macro2", 1606 | "quote", 1607 | "unicode-xid", 1608 | ] 1609 | 1610 | [[package]] 1611 | name = "tempfile" 1612 | version = "3.3.0" 1613 | source = "registry+https://github.com/rust-lang/crates.io-index" 1614 | checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" 1615 | dependencies = [ 1616 | "cfg-if", 1617 | "fastrand", 1618 | "libc", 1619 | "redox_syscall", 1620 | "remove_dir_all", 1621 | "winapi", 1622 | ] 1623 | 1624 | [[package]] 1625 | name = "thiserror" 1626 | version = "1.0.30" 1627 | source = "registry+https://github.com/rust-lang/crates.io-index" 1628 | checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" 1629 | dependencies = [ 1630 | "thiserror-impl", 1631 | ] 1632 | 1633 | [[package]] 1634 | name = "thiserror-impl" 1635 | version = "1.0.30" 1636 | source = "registry+https://github.com/rust-lang/crates.io-index" 1637 | checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" 1638 | dependencies = [ 1639 | "proc-macro2", 1640 | "quote", 1641 | "syn", 1642 | ] 1643 | 1644 | [[package]] 1645 | name = "thread_local" 1646 | version = "1.1.4" 1647 | source = "registry+https://github.com/rust-lang/crates.io-index" 1648 | checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" 1649 | dependencies = [ 1650 | "once_cell", 1651 | ] 1652 | 1653 | [[package]] 1654 | name = "time" 1655 | version = "0.1.44" 1656 | source = "registry+https://github.com/rust-lang/crates.io-index" 1657 | checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" 1658 | dependencies = [ 1659 | "libc", 1660 | "wasi", 1661 | "winapi", 1662 | ] 1663 | 1664 | [[package]] 1665 | name = "time" 1666 | version = "0.3.7" 1667 | source = "registry+https://github.com/rust-lang/crates.io-index" 1668 | checksum = "004cbc98f30fa233c61a38bc77e96a9106e65c88f2d3bef182ae952027e5753d" 1669 | dependencies = [ 1670 | "itoa", 1671 | "libc", 1672 | "num_threads", 1673 | "time-macros", 1674 | ] 1675 | 1676 | [[package]] 1677 | name = "time-macros" 1678 | version = "0.2.3" 1679 | source = "registry+https://github.com/rust-lang/crates.io-index" 1680 | checksum = "25eb0ca3468fc0acc11828786797f6ef9aa1555e4a211a60d64cc8e4d1be47d6" 1681 | 1682 | [[package]] 1683 | name = "tinyvec" 1684 | version = "1.5.1" 1685 | source = "registry+https://github.com/rust-lang/crates.io-index" 1686 | checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" 1687 | dependencies = [ 1688 | "tinyvec_macros", 1689 | ] 1690 | 1691 | [[package]] 1692 | name = "tinyvec_macros" 1693 | version = "0.1.0" 1694 | source = "registry+https://github.com/rust-lang/crates.io-index" 1695 | checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" 1696 | 1697 | [[package]] 1698 | name = "tokio" 1699 | version = "1.17.0" 1700 | source = "registry+https://github.com/rust-lang/crates.io-index" 1701 | checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" 1702 | dependencies = [ 1703 | "bytes 1.1.0", 1704 | "libc", 1705 | "memchr", 1706 | "mio", 1707 | "num_cpus", 1708 | "pin-project-lite", 1709 | "socket2", 1710 | "tokio-macros", 1711 | "winapi", 1712 | ] 1713 | 1714 | [[package]] 1715 | name = "tokio-macros" 1716 | version = "1.7.0" 1717 | source = "registry+https://github.com/rust-lang/crates.io-index" 1718 | checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" 1719 | dependencies = [ 1720 | "proc-macro2", 1721 | "quote", 1722 | "syn", 1723 | ] 1724 | 1725 | [[package]] 1726 | name = "tokio-native-tls" 1727 | version = "0.3.0" 1728 | source = "registry+https://github.com/rust-lang/crates.io-index" 1729 | checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" 1730 | dependencies = [ 1731 | "native-tls", 1732 | "tokio", 1733 | ] 1734 | 1735 | [[package]] 1736 | name = "tokio-stream" 1737 | version = "0.1.8" 1738 | source = "registry+https://github.com/rust-lang/crates.io-index" 1739 | checksum = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3" 1740 | dependencies = [ 1741 | "futures-core", 1742 | "pin-project-lite", 1743 | "tokio", 1744 | ] 1745 | 1746 | [[package]] 1747 | name = "tokio-util" 1748 | version = "0.6.9" 1749 | source = "registry+https://github.com/rust-lang/crates.io-index" 1750 | checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" 1751 | dependencies = [ 1752 | "bytes 1.1.0", 1753 | "futures-core", 1754 | "futures-sink", 1755 | "log", 1756 | "pin-project-lite", 1757 | "tokio", 1758 | ] 1759 | 1760 | [[package]] 1761 | name = "toml" 1762 | version = "0.5.8" 1763 | source = "registry+https://github.com/rust-lang/crates.io-index" 1764 | checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" 1765 | dependencies = [ 1766 | "serde", 1767 | ] 1768 | 1769 | [[package]] 1770 | name = "tower-service" 1771 | version = "0.3.1" 1772 | source = "registry+https://github.com/rust-lang/crates.io-index" 1773 | checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" 1774 | 1775 | [[package]] 1776 | name = "tracing" 1777 | version = "0.1.31" 1778 | source = "registry+https://github.com/rust-lang/crates.io-index" 1779 | checksum = "f6c650a8ef0cd2dd93736f033d21cbd1224c5a967aa0c258d00fcf7dafef9b9f" 1780 | dependencies = [ 1781 | "cfg-if", 1782 | "pin-project-lite", 1783 | "tracing-attributes", 1784 | "tracing-core", 1785 | ] 1786 | 1787 | [[package]] 1788 | name = "tracing-attributes" 1789 | version = "0.1.19" 1790 | source = "registry+https://github.com/rust-lang/crates.io-index" 1791 | checksum = "8276d9a4a3a558d7b7ad5303ad50b53d58264641b82914b7ada36bd762e7a716" 1792 | dependencies = [ 1793 | "proc-macro2", 1794 | "quote", 1795 | "syn", 1796 | ] 1797 | 1798 | [[package]] 1799 | name = "tracing-core" 1800 | version = "0.1.22" 1801 | source = "registry+https://github.com/rust-lang/crates.io-index" 1802 | checksum = "03cfcb51380632a72d3111cb8d3447a8d908e577d31beeac006f836383d29a23" 1803 | dependencies = [ 1804 | "lazy_static", 1805 | "valuable", 1806 | ] 1807 | 1808 | [[package]] 1809 | name = "tracing-log" 1810 | version = "0.1.2" 1811 | source = "registry+https://github.com/rust-lang/crates.io-index" 1812 | checksum = "a6923477a48e41c1951f1999ef8bb5a3023eb723ceadafe78ffb65dc366761e3" 1813 | dependencies = [ 1814 | "lazy_static", 1815 | "log", 1816 | "tracing-core", 1817 | ] 1818 | 1819 | [[package]] 1820 | name = "tracing-subscriber" 1821 | version = "0.3.9" 1822 | source = "registry+https://github.com/rust-lang/crates.io-index" 1823 | checksum = "9e0ab7bdc962035a87fba73f3acca9b8a8d0034c2e6f60b84aeaaddddc155dce" 1824 | dependencies = [ 1825 | "ansi_term", 1826 | "sharded-slab", 1827 | "smallvec", 1828 | "thread_local", 1829 | "tracing-core", 1830 | "tracing-log", 1831 | ] 1832 | 1833 | [[package]] 1834 | name = "try-lock" 1835 | version = "0.2.3" 1836 | source = "registry+https://github.com/rust-lang/crates.io-index" 1837 | checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" 1838 | 1839 | [[package]] 1840 | name = "typed-headers" 1841 | version = "0.2.0" 1842 | source = "registry+https://github.com/rust-lang/crates.io-index" 1843 | checksum = "3179a61e9eccceead5f1574fd173cf2e162ac42638b9bf214c6ad0baf7efa24a" 1844 | dependencies = [ 1845 | "base64 0.11.0", 1846 | "bytes 0.5.6", 1847 | "chrono", 1848 | "http", 1849 | "mime", 1850 | ] 1851 | 1852 | [[package]] 1853 | name = "typenum" 1854 | version = "1.15.0" 1855 | source = "registry+https://github.com/rust-lang/crates.io-index" 1856 | checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" 1857 | 1858 | [[package]] 1859 | name = "unicode-bidi" 1860 | version = "0.3.7" 1861 | source = "registry+https://github.com/rust-lang/crates.io-index" 1862 | checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" 1863 | 1864 | [[package]] 1865 | name = "unicode-normalization" 1866 | version = "0.1.19" 1867 | source = "registry+https://github.com/rust-lang/crates.io-index" 1868 | checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" 1869 | dependencies = [ 1870 | "tinyvec", 1871 | ] 1872 | 1873 | [[package]] 1874 | name = "unicode-segmentation" 1875 | version = "1.9.0" 1876 | source = "registry+https://github.com/rust-lang/crates.io-index" 1877 | checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" 1878 | 1879 | [[package]] 1880 | name = "unicode-xid" 1881 | version = "0.2.2" 1882 | source = "registry+https://github.com/rust-lang/crates.io-index" 1883 | checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" 1884 | 1885 | [[package]] 1886 | name = "unicode_categories" 1887 | version = "0.1.1" 1888 | source = "registry+https://github.com/rust-lang/crates.io-index" 1889 | checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" 1890 | 1891 | [[package]] 1892 | name = "universal-hash" 1893 | version = "0.4.1" 1894 | source = "registry+https://github.com/rust-lang/crates.io-index" 1895 | checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" 1896 | dependencies = [ 1897 | "generic-array", 1898 | "subtle", 1899 | ] 1900 | 1901 | [[package]] 1902 | name = "url" 1903 | version = "2.2.2" 1904 | source = "registry+https://github.com/rust-lang/crates.io-index" 1905 | checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" 1906 | dependencies = [ 1907 | "form_urlencoded", 1908 | "idna", 1909 | "matches", 1910 | "percent-encoding", 1911 | ] 1912 | 1913 | [[package]] 1914 | name = "valuable" 1915 | version = "0.1.0" 1916 | source = "registry+https://github.com/rust-lang/crates.io-index" 1917 | checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" 1918 | 1919 | [[package]] 1920 | name = "vcpkg" 1921 | version = "0.2.15" 1922 | source = "registry+https://github.com/rust-lang/crates.io-index" 1923 | checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 1924 | 1925 | [[package]] 1926 | name = "version_check" 1927 | version = "0.9.4" 1928 | source = "registry+https://github.com/rust-lang/crates.io-index" 1929 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 1930 | 1931 | [[package]] 1932 | name = "want" 1933 | version = "0.3.0" 1934 | source = "registry+https://github.com/rust-lang/crates.io-index" 1935 | checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" 1936 | dependencies = [ 1937 | "log", 1938 | "try-lock", 1939 | ] 1940 | 1941 | [[package]] 1942 | name = "wasi" 1943 | version = "0.10.0+wasi-snapshot-preview1" 1944 | source = "registry+https://github.com/rust-lang/crates.io-index" 1945 | checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" 1946 | 1947 | [[package]] 1948 | name = "wasm-bindgen" 1949 | version = "0.2.79" 1950 | source = "registry+https://github.com/rust-lang/crates.io-index" 1951 | checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" 1952 | dependencies = [ 1953 | "cfg-if", 1954 | "wasm-bindgen-macro", 1955 | ] 1956 | 1957 | [[package]] 1958 | name = "wasm-bindgen-backend" 1959 | version = "0.2.79" 1960 | source = "registry+https://github.com/rust-lang/crates.io-index" 1961 | checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca" 1962 | dependencies = [ 1963 | "bumpalo", 1964 | "lazy_static", 1965 | "log", 1966 | "proc-macro2", 1967 | "quote", 1968 | "syn", 1969 | "wasm-bindgen-shared", 1970 | ] 1971 | 1972 | [[package]] 1973 | name = "wasm-bindgen-macro" 1974 | version = "0.2.79" 1975 | source = "registry+https://github.com/rust-lang/crates.io-index" 1976 | checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01" 1977 | dependencies = [ 1978 | "quote", 1979 | "wasm-bindgen-macro-support", 1980 | ] 1981 | 1982 | [[package]] 1983 | name = "wasm-bindgen-macro-support" 1984 | version = "0.2.79" 1985 | source = "registry+https://github.com/rust-lang/crates.io-index" 1986 | checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc" 1987 | dependencies = [ 1988 | "proc-macro2", 1989 | "quote", 1990 | "syn", 1991 | "wasm-bindgen-backend", 1992 | "wasm-bindgen-shared", 1993 | ] 1994 | 1995 | [[package]] 1996 | name = "wasm-bindgen-shared" 1997 | version = "0.2.79" 1998 | source = "registry+https://github.com/rust-lang/crates.io-index" 1999 | checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" 2000 | 2001 | [[package]] 2002 | name = "web" 2003 | version = "0.1.0" 2004 | dependencies = [ 2005 | "async-trait", 2006 | "dotenv", 2007 | "once_cell", 2008 | "poem", 2009 | "poem-openapi", 2010 | "sqlx", 2011 | "tokio", 2012 | "tracing", 2013 | "tracing-subscriber", 2014 | ] 2015 | 2016 | [[package]] 2017 | name = "web-sys" 2018 | version = "0.3.56" 2019 | source = "registry+https://github.com/rust-lang/crates.io-index" 2020 | checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb" 2021 | dependencies = [ 2022 | "js-sys", 2023 | "wasm-bindgen", 2024 | ] 2025 | 2026 | [[package]] 2027 | name = "whoami" 2028 | version = "1.2.1" 2029 | source = "registry+https://github.com/rust-lang/crates.io-index" 2030 | checksum = "524b58fa5a20a2fb3014dd6358b70e6579692a56ef6fce928834e488f42f65e8" 2031 | dependencies = [ 2032 | "wasm-bindgen", 2033 | "web-sys", 2034 | ] 2035 | 2036 | [[package]] 2037 | name = "winapi" 2038 | version = "0.3.9" 2039 | source = "registry+https://github.com/rust-lang/crates.io-index" 2040 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 2041 | dependencies = [ 2042 | "winapi-i686-pc-windows-gnu", 2043 | "winapi-x86_64-pc-windows-gnu", 2044 | ] 2045 | 2046 | [[package]] 2047 | name = "winapi-i686-pc-windows-gnu" 2048 | version = "0.4.0" 2049 | source = "registry+https://github.com/rust-lang/crates.io-index" 2050 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 2051 | 2052 | [[package]] 2053 | name = "winapi-x86_64-pc-windows-gnu" 2054 | version = "0.4.0" 2055 | source = "registry+https://github.com/rust-lang/crates.io-index" 2056 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 2057 | 2058 | [[package]] 2059 | name = "windows-sys" 2060 | version = "0.32.0" 2061 | source = "registry+https://github.com/rust-lang/crates.io-index" 2062 | checksum = "3df6e476185f92a12c072be4a189a0210dcdcf512a1891d6dff9edb874deadc6" 2063 | dependencies = [ 2064 | "windows_aarch64_msvc", 2065 | "windows_i686_gnu", 2066 | "windows_i686_msvc", 2067 | "windows_x86_64_gnu", 2068 | "windows_x86_64_msvc", 2069 | ] 2070 | 2071 | [[package]] 2072 | name = "windows_aarch64_msvc" 2073 | version = "0.32.0" 2074 | source = "registry+https://github.com/rust-lang/crates.io-index" 2075 | checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" 2076 | 2077 | [[package]] 2078 | name = "windows_i686_gnu" 2079 | version = "0.32.0" 2080 | source = "registry+https://github.com/rust-lang/crates.io-index" 2081 | checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" 2082 | 2083 | [[package]] 2084 | name = "windows_i686_msvc" 2085 | version = "0.32.0" 2086 | source = "registry+https://github.com/rust-lang/crates.io-index" 2087 | checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" 2088 | 2089 | [[package]] 2090 | name = "windows_x86_64_gnu" 2091 | version = "0.32.0" 2092 | source = "registry+https://github.com/rust-lang/crates.io-index" 2093 | checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" 2094 | 2095 | [[package]] 2096 | name = "windows_x86_64_msvc" 2097 | version = "0.32.0" 2098 | source = "registry+https://github.com/rust-lang/crates.io-index" 2099 | checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" 2100 | -------------------------------------------------------------------------------- /examples/learnweb/Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = [ 3 | "web", 4 | "dbase" 5 | ] 6 | -------------------------------------------------------------------------------- /examples/learnweb/README.md: -------------------------------------------------------------------------------- 1 | ## Rust Learn Demo 2 | - 1. web demo 3 | - 2. data processing demo -------------------------------------------------------------------------------- /examples/learnweb/dbase/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "dbase" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 | 8 | [dependencies] 9 | -------------------------------------------------------------------------------- /examples/learnweb/dbase/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | println!("Hello, world!"); 3 | 4 | // 概念理解 -- 借用之后无法执行move语义的赋值的理解 5 | 6 | // eg: 7 | struct A { name: String } 8 | 9 | let a = A { name: String::from("aaa")}; 10 | 11 | let b = &a; // 正确 12 | let c = b; // 正确 13 | 14 | // let d = a; 此时赋值语句会报错 无法移动已经被借用的变量 15 | 16 | } 17 | -------------------------------------------------------------------------------- /examples/learnweb/web/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "web" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 | 8 | [dependencies] 9 | poem="1.3.3" 10 | poem-openapi={ version = "1.3.3", features = ["swagger-ui"] } 11 | tokio = { version = "1.17.0", features = ["macros", "rt-multi-thread"] } 12 | sqlx = { version = "0.5.11", default_features = false, features = ["runtime-tokio-native-tls", "macros", "postgres", "chrono"]} 13 | tracing = "0.1.31" 14 | tracing-subscriber = "0.3.9" 15 | dotenv="0.15.0" 16 | async-trait="0.1.52" 17 | once_cell="1.9.0" 18 | -------------------------------------------------------------------------------- /examples/learnweb/web/README.md: -------------------------------------------------------------------------------- 1 | ## Rust Learn Demo WebServer with Poem 2 | 3 | ### start step 4 | - 1. create postgresql db 5 | - 2. start server 6 | ``` 7 | cargo run --bin web 8 | ``` 9 | http://localhost:9000 10 | 11 | ### TODO: 12 | - 1. add Redis and TIKV 13 | - 2. add Async-GraphQL -------------------------------------------------------------------------------- /examples/learnweb/web/doc/web.sql: -------------------------------------------------------------------------------- 1 | -- Create Table 2 | -- Drop table 3 | -- DROP TABLE public."user"; 4 | CREATE TABLE public."user" ( 5 | usercode varchar NULL, 6 | username varchar NULL, 7 | useremail varchar NULL 8 | ); 9 | 10 | -- Insert into public."user" row data 11 | INSERT INTO public."user" (usercode, username, useremail) VALUES('12345', '姜坤', 'jiangkun@livstyle.cn'); 12 | -------------------------------------------------------------------------------- /examples/learnweb/web/src/api/job/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/examples/learnweb/web/src/api/job/mod.rs -------------------------------------------------------------------------------- /examples/learnweb/web/src/api/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod user; 2 | pub mod job; 3 | 4 | use poem_openapi::{payload::{PlainText}, OpenApi, param::Query}; 5 | 6 | pub struct Api; 7 | 8 | #[OpenApi] 9 | impl Api { 10 | #[oai(path = "/", method = "get")] 11 | async fn api( 12 | &self, 13 | name: Query>, 14 | ) -> PlainText { 15 | println!("访问路径v ================= /"); 16 | match name.0 { 17 | Some(name) => { 18 | PlainText(format!("hello, {}!", name)) 19 | }, 20 | None => PlainText("hello!".to_string()), 21 | } 22 | } 23 | } 24 | 25 | pub mod apic { 26 | // 将父模块的信息引入本模块 27 | use super::*; 28 | use user::{user_controller::UserApi}; 29 | pub fn init() -> (Api, UserApi) { 30 | (Api, UserApi) 31 | } 32 | } -------------------------------------------------------------------------------- /examples/learnweb/web/src/api/user/dtype.rs: -------------------------------------------------------------------------------- 1 | use poem_openapi::{payload::Json, Tags, ApiResponse, Object}; 2 | 3 | #[derive(Debug, Object, Clone, Eq, PartialEq, sqlx::FromRow)] 4 | pub struct UserInfo { 5 | // #[oai(max_length = 128)] 6 | pub username: Option, 7 | // #[oai(max_length = 128)] 8 | pub useremail: Option, 9 | // #[oai(max_length = 128)] 10 | pub usercode: Option, 11 | } 12 | 13 | 14 | #[derive(Tags)] 15 | pub enum UserApiTags { 16 | UserInfo 17 | } 18 | 19 | #[derive(ApiResponse)] 20 | pub enum UserInfoResp { 21 | #[oai(status = 200)] 22 | Ok(Json>), 23 | #[oai(status = 400)] 24 | NotFound 25 | } -------------------------------------------------------------------------------- /examples/learnweb/web/src/api/user/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod dtype; 2 | pub use dtype::{ UserApiTags, UserInfo, UserInfoResp }; 3 | 4 | pub mod user_controller; 5 | pub mod user_service; -------------------------------------------------------------------------------- /examples/learnweb/web/src/api/user/user_controller.rs: -------------------------------------------------------------------------------- 1 | use poem_openapi::{OpenApi, payload::{Json, PlainText}}; 2 | 3 | use crate::api::user::{ UserApiTags, UserInfo, UserInfoResp, user_service::UserService }; 4 | 5 | pub struct UserApi; 6 | 7 | #[OpenApi] 8 | impl UserApi { 9 | 10 | #[oai(path="/userinfo", method= "post", tag= "UserApiTags::UserInfo")] 11 | async fn user_info(&self, user: Json) -> UserInfoResp { 12 | println!("入参: {:#?}", user); 13 | 14 | // 调用Service的函数 15 | if let Ok(users) = UserService::get_name().await { 16 | UserInfoResp::Ok(Json(users)) 17 | } else { 18 | let user_info = UserInfo { 19 | username: Some(String::from("jiangkun")), 20 | usercode: Some(String::from("10000")), 21 | useremail: Some(String::from("jiangkun@livstyle.cn")) 22 | }; 23 | UserInfoResp::Ok(Json(vec![user_info])) 24 | } 25 | 26 | } 27 | 28 | #[oai(path="/username", method= "get")] 29 | async fn user_name( 30 | &self 31 | ) -> PlainText { 32 | PlainText("hello!".to_string()) 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /examples/learnweb/web/src/api/user/user_service.rs: -------------------------------------------------------------------------------- 1 | // 2 | // use sqlx::{FromRow}; 3 | use tracing::{info, instrument}; 4 | 5 | use crate::sys::db::*; 6 | use crate::api::user::dtype::UserInfo; 7 | 8 | pub struct UserService { 9 | 10 | } 11 | 12 | // 实现了DbSerivce trait的struct可以直接使用Self::get_pool()方法 13 | impl DbSerivce for UserService {} 14 | 15 | impl UserService { 16 | #[instrument] 17 | pub async fn get_name() -> Result, sqlx::Error> { 18 | let pools = Self::get_pool(); // db::db_pool(); 19 | if let Some(pool) = pools { 20 | 21 | let sql_text = "SELECT usercode, username, useremail from public.user"; 22 | let no_macro_query = sqlx::query_as::<_, UserInfo>(sql_text).fetch_all(pool).await; 23 | 24 | // ### 使用sqlx的宏进行查询数据库时必须先将数据库和对应的表创建完成并且保证连接的数据库地址正确 25 | // ### 这样做的主要原因是sqlx使用宏查询时会先对sql进行编译期验证用来检查和匹配sql中用到的表和字段等信息 26 | // ### 本例子中可以根据doc目录中给出的脚本进行创建表和初始化数据 27 | // let result = sqlx::query_as!(UserInfo, "SELECT usercode, username, useremail from public.user",).fetch_all(pool).await; 28 | match no_macro_query { 29 | Ok(data) => { 30 | info!("获取数据库数据成功: {:#?}", data); 31 | Ok(data) 32 | }, 33 | Err(err) => { 34 | info!("获取数据库数据失败,原因为: {:#?}", err); 35 | Err(sqlx::Error::PoolTimedOut) 36 | } 37 | } 38 | } else { 39 | Err(sqlx::Error::PoolTimedOut) 40 | } 41 | 42 | } 43 | } 44 | 45 | -------------------------------------------------------------------------------- /examples/learnweb/web/src/app.rs: -------------------------------------------------------------------------------- 1 | use poem::{listener::TcpListener, Route}; 2 | use poem_openapi::{OpenApiService}; 3 | 4 | use std::io::Error; 5 | use crate::sys::{db}; 6 | use crate::api::{apic::{init}}; 7 | 8 | #[tokio::main] 9 | pub async fn start() -> Result<(), Error> { 10 | 11 | // TODO 初始化数据库 不使用时可以去掉 12 | if let Ok(_pool) = db::init_db_pool().await { 13 | if let Some (pool) = _pool { 14 | // 初始化数据库 15 | let create_result = sqlx::query(r#" 16 | CREATE TABLE IF NOT EXISTS public."user" ( 17 | usercode varchar NULL, 18 | username varchar NULL, 19 | useremail varchar NULL 20 | ) 21 | "#).execute(pool).await; 22 | if let Ok(_res) = create_result { 23 | let _insert_res = sqlx::query(r#" 24 | INSERT INTO public."user" (usercode, username, useremail) VALUES('12345', '姜坤', 'jiangkun@livstyle.cn') 25 | "#).execute(pool).await; 26 | } 27 | } 28 | println!("数据库启动成功!!!"); 29 | } 30 | 31 | // Create API service 32 | let api_service = OpenApiService::new(init(), "Hello LivStyle", "1.0.0") 33 | .server("http://localhost:9000/api"); 34 | 35 | // Enable the Swagger UI 36 | let ui = api_service.swagger_ui(); 37 | 38 | // Create a TCP listener 39 | let listener = TcpListener::bind("127.0.0.1:9000"); 40 | 41 | // Start the server and specify that the root path of the API is /api, and the path of Swagger UI is / 42 | poem::Server::new(listener) 43 | .run(Route::new().nest("/api", api_service).nest("/doc", ui)) 44 | .await 45 | } -------------------------------------------------------------------------------- /examples/learnweb/web/src/main.rs: -------------------------------------------------------------------------------- 1 | use std::env; 2 | use dotenv::dotenv; 3 | use tracing::{info, Level}; 4 | use tracing_subscriber::FmtSubscriber; 5 | mod api; 6 | mod app; 7 | mod sys; 8 | 9 | fn main() -> Result<(), std::io::Error> { 10 | // 使用dotenv可以读取 .env设置的环境变量 11 | dotenv().ok(); 12 | let subscriber = FmtSubscriber::builder() 13 | .with_max_level(Level::INFO) 14 | .finish(); 15 | 16 | tracing::subscriber::set_global_default(subscriber) 17 | .expect("setting default subscriber failed"); 18 | 19 | app::start() 20 | } -------------------------------------------------------------------------------- /examples/learnweb/web/src/sys/db.rs: -------------------------------------------------------------------------------- 1 | 2 | use once_cell::sync::OnceCell; 3 | use sqlx::{Pool, Postgres, postgres::PgPoolOptions}; 4 | use std::env; 5 | 6 | 7 | use std::error::Error; 8 | use std::fmt; 9 | 10 | 11 | #[derive(Debug)] 12 | struct SuperErrorSideKick; 13 | 14 | impl fmt::Display for SuperErrorSideKick { 15 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 16 | write!(f, "SuperErrorSideKick is here!") 17 | } 18 | } 19 | 20 | impl Error for SuperErrorSideKick {} 21 | 22 | #[derive(Debug)] 23 | struct SuperError { 24 | side: SuperErrorSideKick, 25 | } 26 | 27 | impl fmt::Display for SuperError { 28 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 29 | write!(f, "SuperError is here!") 30 | } 31 | } 32 | 33 | impl Error for SuperError { 34 | fn source(&self) -> Option<&(dyn Error + 'static)> { 35 | Some(&self.side) 36 | } 37 | } 38 | 39 | 40 | 41 | /// DATABASE_POOL 42 | pub static DATABASE_POOL: OnceCell> = OnceCell::new(); 43 | 44 | pub async fn init_db_pool() -> Result>, Box>{ 45 | 46 | // 获取配置的环境变量 47 | if let Ok(uri) = &env::var("PG_DB_URL") { 48 | println!("uri: {}", uri); 49 | let pool = PgPoolOptions::new() 50 | .after_connect(| _conn| Box::pin(async move { 51 | println!("connect succeed"); 52 | // conn.execute("SET application_name = 'your_app';").await?; 53 | Ok(()) 54 | })) 55 | .min_connections(1) 56 | .max_connections(20) 57 | .connect(uri).await?; 58 | assert!(DATABASE_POOL.set(pool).is_ok()); 59 | Ok(DATABASE_POOL.get()) 60 | } else { 61 | println!("database failed"); 62 | Err(Box::new(SuperError { side: SuperErrorSideKick })) 63 | } 64 | 65 | } 66 | 67 | #[allow(dead_code)] 68 | pub fn db_pool() -> Option<&'static Pool> { 69 | DATABASE_POOL.get() 70 | } 71 | 72 | pub trait DbSerivce {} 73 | // 创建获取数据库链接的trait; 也可以直接将get_pool方法在本trait中实现 74 | pub trait DbPool { 75 | fn get_pool() -> Option<&'static Pool>; 76 | } 77 | 78 | // 为所有实现了DbService的struct提供内联获取数据库连接的函数 79 | impl DbPool for T where T: DbSerivce { 80 | fn get_pool() -> Option<&'static Pool> { 81 | db_pool() 82 | } 83 | } 84 | 85 | -------------------------------------------------------------------------------- /examples/learnweb/web/src/sys/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod db; -------------------------------------------------------------------------------- /projects/calc.rs: -------------------------------------------------------------------------------- 1 | 2 | use std::env; 3 | 4 | // run: ./calc 1+3*2 5 | // C代码参考 https://github.com/limingth/NCCL.codes/blob/master/Lesson-35/stack.c 6 | fn prio(op: char) -> i32 { 7 | match op { 8 | '+' => 1, 9 | '-' => 1, 10 | '*' => 2, 11 | '/' => 2, 12 | _ => 0, 13 | } 14 | } 15 | 16 | fn do_calc(op: char, a: i32, b: i32) -> i32 { 17 | match op { 18 | '+' => a + b, 19 | '-' => a - b, 20 | '*' => a * b, 21 | '/' => a / b, 22 | _ => 0, 23 | } 24 | } 25 | 26 | fn main() 27 | { 28 | let args: Vec = env::args().collect(); 29 | println!("{:?}", args); 30 | 31 | let buf = args[1].to_string(); 32 | println!("buf is {}", buf); 33 | 34 | // number stack like 1,2,3 35 | let mut operand_stack: Vec = Vec::new(); 36 | // operator stack like +,-,*,/ 37 | let mut operator_stack: Vec = Vec::new(); 38 | 39 | // convert String buf to Vector v 40 | let v: Vec = buf.chars().collect(); 41 | for i in &v { 42 | // println!("{}", i); 43 | let c = *i; 44 | 45 | if c >= '0' && c <= '9' { 46 | println!("get a operand {}, push to operand_stack", c); 47 | let u = c.to_digit(10).unwrap() as i32; 48 | operand_stack.push(u); 49 | } else { 50 | if c == '+' || c == '-' || c == '*' || c == '/' || c == '=' { 51 | println!("get a operator {}", i); 52 | 53 | // let top_operator = operator_stack.pop(); 54 | let top_operator = operator_stack.pop(); 55 | if top_operator == None { 56 | println!("top operator is None, push {} to operator_stack", c); 57 | operator_stack.push(c); 58 | } else { 59 | let t = top_operator.unwrap(); 60 | println!("top operator is Not None, compare prio of {} vs {}", t, c); 61 | if prio(t) >= prio(c) { 62 | println!("{} >= {}, pop and pop and calc, then push", t, c); 63 | 64 | let top_operand2 = operand_stack.pop().unwrap(); 65 | let top_operand1 = operand_stack.pop().unwrap(); 66 | println!("pop and pop => {} and {}", top_operand1, top_operand2); 67 | 68 | let result = do_calc(t, top_operand1, top_operand2); 69 | println!("calc result = {}, push it to operand_stack", result); 70 | operand_stack.push(result); 71 | 72 | if c != '=' { 73 | println!("push {} to operator_stack", c); 74 | operator_stack.push(c); 75 | } else { 76 | println!("Last Step: "); 77 | let top_operator = operator_stack.pop(); 78 | if top_operator != None { 79 | let top_operand2 = operand_stack.pop().unwrap(); 80 | let top_operand1 = operand_stack.pop().unwrap(); 81 | println!("pop and pop => {} and {}", top_operand1, top_operand2); 82 | let t = top_operator.unwrap(); 83 | println!("t = {}", t); 84 | let result = do_calc(t, top_operand1, top_operand2); 85 | println!("calc result = {}, push it to operand_stack", result); 86 | operand_stack.push(result); 87 | } 88 | } 89 | } else { 90 | println!("{} < {}, push {} back and push {} and wait for next operand ", t, c, t, c); 91 | operator_stack.push(t); 92 | operator_stack.push(c); 93 | } 94 | 95 | } 96 | } 97 | } 98 | } 99 | 100 | while let Some(top) = operand_stack.pop() { 101 | // Prints all numbers like 3, 2, 1 102 | println!("num: {}", top); 103 | } 104 | 105 | while let Some(top) = operator_stack.pop() { 106 | // Prints all operator like *, + 107 | println!("operator: {}", top); 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /projects/readme.md: -------------------------------------------------------------------------------- 1 | 2 | ## 约瑟夫环问题 3 | 据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。这个过程沿着圆圈一直进行,直到最终只剩下一个人留下,这个人就可以继续活着。问题是,给定了和,一开始要站在什么地方才能避免被处决。Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。 4 | 5 | ``` 6 | iMac:projects liming$ rustc ring.rs 7 | iMac:projects liming$ ./ring 8 | 当前位置 1, 报数 j = 1 9 | 当前位置 2, 报数 j = 2 10 | 当前位置 3, 报数 j = 3 11 | 3 --> out 12 | 当前位置 4, 报数 j = 1 13 | 当前位置 5, 报数 j = 2 14 | 当前位置 6, 报数 j = 3 15 | 6 --> out 16 | 当前位置 7, 报数 j = 1 17 | 当前位置 8, 报数 j = 2 18 | 当前位置 9, 报数 j = 3 19 | 9 --> out 20 | 当前位置 10, 报数 j = 1 21 | 当前位置 11, 报数 j = 2 22 | 当前位置 12, 报数 j = 3 23 | 12 --> out 24 | 当前位置 13, 报数 j = 1 25 | 当前位置 14, 报数 j = 2 26 | 当前位置 15, 报数 j = 3 27 | 15 --> out 28 | 当前位置 16, 报数 j = 1 29 | 当前位置 17, 报数 j = 2 30 | 当前位置 18, 报数 j = 3 31 | 18 --> out 32 | 当前位置 19, 报数 j = 1 33 | 当前位置 20, 报数 j = 2 34 | 当前位置 21, 报数 j = 3 35 | 21 --> out 36 | 当前位置 22, 报数 j = 1 37 | 当前位置 23, 报数 j = 2 38 | 当前位置 24, 报数 j = 3 39 | 24 --> out 40 | 当前位置 25, 报数 j = 1 41 | 当前位置 26, 报数 j = 2 42 | 当前位置 27, 报数 j = 3 43 | 27 --> out 44 | 当前位置 28, 报数 j = 1 45 | 当前位置 29, 报数 j = 2 46 | 当前位置 30, 报数 j = 3 47 | 30 --> out 48 | 当前位置 31, 报数 j = 1 49 | 当前位置 32, 报数 j = 2 50 | 当前位置 33, 报数 j = 3 51 | 33 --> out 52 | 当前位置 34, 报数 j = 1 53 | 当前位置 35, 报数 j = 2 54 | 当前位置 36, 报数 j = 3 55 | 36 --> out 56 | 当前位置 37, 报数 j = 1 57 | 当前位置 38, 报数 j = 2 58 | 当前位置 39, 报数 j = 3 59 | 39 --> out 60 | 当前位置 40, 报数 j = 1 61 | 当前位置 41, 报数 j = 2 62 | 当前位置 1, 报数 j = 3 63 | 1 --> out 64 | 当前位置 2, 报数 j = 1 65 | 当前位置 4, 报数 j = 2 66 | 当前位置 5, 报数 j = 3 67 | 5 --> out 68 | 当前位置 7, 报数 j = 1 69 | 当前位置 8, 报数 j = 2 70 | 当前位置 10, 报数 j = 3 71 | 10 --> out 72 | 当前位置 11, 报数 j = 1 73 | 当前位置 13, 报数 j = 2 74 | 当前位置 14, 报数 j = 3 75 | 14 --> out 76 | 当前位置 16, 报数 j = 1 77 | 当前位置 17, 报数 j = 2 78 | 当前位置 19, 报数 j = 3 79 | 19 --> out 80 | 当前位置 20, 报数 j = 1 81 | 当前位置 22, 报数 j = 2 82 | 当前位置 23, 报数 j = 3 83 | 23 --> out 84 | 当前位置 25, 报数 j = 1 85 | 当前位置 26, 报数 j = 2 86 | 当前位置 28, 报数 j = 3 87 | 28 --> out 88 | 当前位置 29, 报数 j = 1 89 | 当前位置 31, 报数 j = 2 90 | 当前位置 32, 报数 j = 3 91 | 32 --> out 92 | 当前位置 34, 报数 j = 1 93 | 当前位置 35, 报数 j = 2 94 | 当前位置 37, 报数 j = 3 95 | 37 --> out 96 | 当前位置 38, 报数 j = 1 97 | 当前位置 40, 报数 j = 2 98 | 当前位置 41, 报数 j = 3 99 | 41 --> out 100 | 当前位置 2, 报数 j = 1 101 | 当前位置 4, 报数 j = 2 102 | 当前位置 7, 报数 j = 3 103 | 7 --> out 104 | 当前位置 8, 报数 j = 1 105 | 当前位置 11, 报数 j = 2 106 | 当前位置 13, 报数 j = 3 107 | 13 --> out 108 | 当前位置 16, 报数 j = 1 109 | 当前位置 17, 报数 j = 2 110 | 当前位置 20, 报数 j = 3 111 | 20 --> out 112 | 当前位置 22, 报数 j = 1 113 | 当前位置 25, 报数 j = 2 114 | 当前位置 26, 报数 j = 3 115 | 26 --> out 116 | 当前位置 29, 报数 j = 1 117 | 当前位置 31, 报数 j = 2 118 | 当前位置 34, 报数 j = 3 119 | 34 --> out 120 | 当前位置 35, 报数 j = 1 121 | 当前位置 38, 报数 j = 2 122 | 当前位置 40, 报数 j = 3 123 | 40 --> out 124 | 当前位置 2, 报数 j = 1 125 | 当前位置 4, 报数 j = 2 126 | 当前位置 8, 报数 j = 3 127 | 8 --> out 128 | 当前位置 11, 报数 j = 1 129 | 当前位置 16, 报数 j = 2 130 | 当前位置 17, 报数 j = 3 131 | 17 --> out 132 | 当前位置 22, 报数 j = 1 133 | 当前位置 25, 报数 j = 2 134 | 当前位置 29, 报数 j = 3 135 | 29 --> out 136 | 当前位置 31, 报数 j = 1 137 | 当前位置 35, 报数 j = 2 138 | 当前位置 38, 报数 j = 3 139 | 38 --> out 140 | 当前位置 2, 报数 j = 1 141 | 当前位置 4, 报数 j = 2 142 | 当前位置 11, 报数 j = 3 143 | 11 --> out 144 | 当前位置 16, 报数 j = 1 145 | 当前位置 22, 报数 j = 2 146 | 当前位置 25, 报数 j = 3 147 | 25 --> out 148 | 当前位置 31, 报数 j = 1 149 | 当前位置 35, 报数 j = 2 150 | 当前位置 2, 报数 j = 3 151 | 2 --> out 152 | 当前位置 4, 报数 j = 1 153 | 当前位置 16, 报数 j = 2 154 | 当前位置 22, 报数 j = 3 155 | 22 --> out 156 | 当前位置 31, 报数 j = 1 157 | 当前位置 35, 报数 j = 2 158 | 当前位置 4, 报数 j = 3 159 | 4 --> out 160 | 当前位置 16, 报数 j = 1 161 | 当前位置 31, 报数 j = 2 162 | 当前位置 35, 报数 j = 3 163 | 35 --> out 164 | 当前位置 16, 报数 j = 1 165 | 当前位置 31, 报数 j = 2 166 | 当前位置 16, 报数 j = 3 167 | 16 --> out 168 | 当前位置 31, 报数 j = 1 169 | 当前位置 31, 报数 j = 2 170 | 当前位置 31, 报数 j = 3 171 | 31 --> out 172 | Josephus ring game is over! 173 | ``` 174 | 175 | ## 命令解释器 176 | 实现一个命令行下的计算器,可以实现加减乘除四则运算。 177 | 178 | ``` 179 | iMac:rust-basics-course liming$ rustc shell.rs 180 | iMac:rust-basics-course liming$ ./shell 181 | Please input your command: 182 | s 2 3 183 | your input line is: s 2 3 184 | 185 | line's length: 6 186 | ["s", "2", "3"] 187 | result is 5 188 | iMac:rust-basics-course liming$ ./shell 189 | Please input your command: 190 | p 2 3 191 | your input line is: p 2 3 192 | 193 | line's length: 6 194 | ["p", "2", "3"] 195 | result is 6 196 | iMac:rust-basics-course liming$ ./shell 197 | Please input your command: 198 | add 2 3 199 | your input line is: add 2 3 200 | 201 | line's length: 8 202 | ["add", "2", "3"] 203 | unknown command: add 204 | result is -1 205 | iMac:rust-basics-course liming$ 206 | ``` 207 | 208 | ## 表达式求值问题 209 | 计算表达式 1-2+3*4-5= 的值,需要考虑乘除法的优先级结合比加减法高。 210 | ``` 211 | iMac:projects liming$ ./calc 1-2+3*4-5= 212 | ["./calc", "1-2+3*4-5="] 213 | buf is 1-2+3*4-5= 214 | get a operand 1, push to operand_stack 215 | get a operator - 216 | top operator is None, push - to operator_stack 217 | get a operand 2, push to operand_stack 218 | get a operator + 219 | top operator is Not None, compare prio of - vs + 220 | - >= +, pop and pop and calc, then push 221 | pop and pop => 1 and 2 222 | calc result = -1, push it to operand_stack 223 | push + to operator_stack 224 | get a operand 3, push to operand_stack 225 | get a operator * 226 | top operator is Not None, compare prio of + vs * 227 | + < *, push + back and push * and wait for next operand 228 | get a operand 4, push to operand_stack 229 | get a operator - 230 | top operator is Not None, compare prio of * vs - 231 | * >= -, pop and pop and calc, then push 232 | pop and pop => 3 and 4 233 | calc result = 12, push it to operand_stack 234 | push - to operator_stack 235 | get a operand 5, push to operand_stack 236 | get a operator = 237 | top operator is Not None, compare prio of - vs = 238 | - >= =, pop and pop and calc, then push 239 | pop and pop => 12 and 5 240 | calc result = 7, push it to operand_stack 241 | Last Step: 242 | pop and pop => -1 and 7 243 | t = + 244 | calc result = 6, push it to operand_stack 245 | num: 6 246 | ``` -------------------------------------------------------------------------------- /projects/ring.rs: -------------------------------------------------------------------------------- 1 | const NUM: usize = 41; 2 | const COUNT: usize = 3; 3 | 4 | fn main() { 5 | let mut ring = [0; NUM]; 6 | for index in 0..NUM { 7 | ring[index] = index + 1; 8 | // println!("ring[{}], {}", index, ring[index]) 9 | } 10 | // return (); 11 | let mut i = 0; 12 | let mut j = 0; 13 | let mut out = 0; 14 | while out < NUM { 15 | // println!("当前位置 {}, ring[i]={}", i+1, ring[i]); 16 | 17 | if ring[i] != 0 { 18 | j = j + 1; 19 | println!("当前位置 {}, 报数 j = {}", i + 1, j); 20 | 21 | if j == COUNT { 22 | println!("{} --> out", i+1); 23 | out = out + 1; 24 | ring[i] = 0; 25 | j = 0; 26 | } 27 | 28 | } 29 | 30 | i = (i + 1) % NUM; 31 | // i = i + 1; 32 | // if i == NUM { 33 | // i = 0; 34 | // } 35 | } 36 | 37 | println!("Josephus ring game is over!"); 38 | } 39 | -------------------------------------------------------------------------------- /projects/shell.rs: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | // C代码,参考 https://github.com/limingth/NCCL/blob/master/Unit-1/Lesson-19.md 4 | #include 5 | #include 6 | 7 | int shell_parse(char * buf, char * argv[]) 8 | { 9 | int argc = 0; 10 | int state = 0; 11 | 12 | while (*buf) 13 | { 14 | if (*buf != ' ' && state == 0) 15 | { 16 | argv[argc++] = buf; 17 | state = 1; 18 | } 19 | if ((*buf == ' ') && state == 1) 20 | { 21 | *buf = '\0'; 22 | state = 0; 23 | } 24 | 25 | buf++; 26 | } 27 | 28 | return argc; 29 | } 30 | 31 | int do_cmd(int argc, char ** argv) 32 | { 33 | int i; 34 | 35 | printf("argc = %d\n", argc); 36 | 37 | for (i = 0; i < argc; i++) 38 | printf("argv[%d]: <%s>\n", i, argv[i]); 39 | 40 | return 0; 41 | } 42 | 43 | int do_add(int argc, char ** argv) 44 | { 45 | printf("help: this is a add function with %d args\n", argc - 1); 46 | 47 | return 0; 48 | } 49 | 50 | int do_sub(int argc, char ** argv) 51 | { 52 | printf("ls: this is a sub function with %d args\n", argc - 1); 53 | 54 | return 0; 55 | } 56 | 57 | int (*pf)(int argc, char ** argv); 58 | 59 | int main(void) 60 | { 61 | char buf[64]; 62 | int argc = 0; 63 | char * argv[10]; 64 | 65 | printf("$ "); 66 | fgets(buf, 64, stdin); 67 | buf[strlen(buf)-1] = '\0'; 68 | printf("<%s>\n", buf); 69 | 70 | argc = shell_parse(buf, argv); 71 | 72 | pf = do_cmd; 73 | if (strcmp(argv[0], "add") == 0) 74 | pf = do_add; 75 | 76 | if (strcmp(argv[0], "sub") == 0) 77 | pf = do_sub; 78 | 79 | pf(argc, argv); 80 | //callback(pf,argc, argv); 81 | 82 | return 0; 83 | } 84 | */ 85 | 86 | // 函数指针用法参考 Rust学习笔记: https://skyao.io/learning-rust/docs/grammar/pointer/fn.html 87 | pub fn math(op: fn(i32, i32) -> i32, a: i32, b: i32) -> i32{ 88 | // 通过函数指针调用函数 89 | op(a, b) 90 | } 91 | fn sum(a: i32, b: i32) -> i32 { 92 | a + b 93 | } 94 | fn product(a: i32, b: i32) -> i32 { 95 | a * b 96 | } 97 | 98 | // let a = 2; 99 | // let b = 3; 100 | // assert_eq!(math(sum, a, b), 5); 101 | // assert_eq!(math(product, a, b), 6); 102 | 103 | // let a = 2; 104 | // let b = 3; 105 | // assert_eq!(math(sum, a, b), 5); 106 | // assert_eq!(math(product, a, b), 6); 107 | 108 | // 结构体用法参考教材: https://kaisery.github.io/trpl-zh-cn/ch05-01-defining-structs.html 109 | struct Command { 110 | name: String, 111 | handler: fn(i32, i32) -> i32 112 | } 113 | 114 | fn do_cmd(name: String, argv1: String, argv2: String) -> i32 { 115 | let cmd1 = Command { 116 | name: "s".to_string(), 117 | handler: sum 118 | }; 119 | let cmd2 = Command { 120 | name: "p".to_string(), 121 | handler: product 122 | }; 123 | 124 | let v1 = argv1.parse::().unwrap(); 125 | let v2 = argv2.parse::().unwrap(); 126 | if name == cmd1.name { 127 | return (cmd1.handler)(v1, v2); 128 | } 129 | if name == cmd2.name { 130 | return (cmd2.handler)(v1, v2); 131 | } 132 | 133 | println!("unknown command: {}", name); 134 | return -1; 135 | } 136 | 137 | // use std::env; 138 | 139 | // fn main() 140 | // { 141 | // let args: Vec = env::args().collect(); 142 | // println!("{:?}", args); 143 | // } 144 | 145 | fn main() { 146 | let mut buf = String::new(); 147 | println!("Please input your command:"); 148 | let length = std::io::stdin().read_line(&mut buf).unwrap(); 149 | println!("your input line is: {}", buf); 150 | println!("line's length: {}", length); 151 | 152 | // let words: Vec<&str> = buf.split(' ').collect(); 153 | let argv: Vec<&str> = buf.split_whitespace().collect(); 154 | println!("{:?}", argv); 155 | 156 | // let argc = argv.len(); 157 | // println!("argc is {}", argc); 158 | 159 | // println!("sum 2 3 is {}", math(sum, 2, 3)); 160 | // println!("product 2 3 is {}", math(product, 2, 3)); 161 | 162 | // let v1 = argv[1].parse::().unwrap(); 163 | // let v2 = argv[2].parse::().unwrap(); 164 | // println!("sum a b is {}", math(sum, v1, v2)); 165 | 166 | let result = do_cmd(argv[0].to_string(), argv[1].to_string(), argv[2].to_string()); 167 | println!("result is {}", result); 168 | } 169 | 170 | -------------------------------------------------------------------------------- /schedule.md: -------------------------------------------------------------------------------- 1 | | 学习阶段 | 教材对应章节 [TRPL](https://kaisery.github.io/trpl-zh-cn/) | 覆盖知识点 | 配套练习题 [rustings](https://github.com/rust-lang/rustlings) | 编程大作业 | 2 | | :------------ | :------------ | :------------ | :------------ | :------------ | 3 | | L1
Mondy | [1.1-3.5](https://kaisery.github.io/trpl-zh-cn/ch01-01-installation.html) | 变量,常量,数组,控制语句if-else/for/while | variables,functions,if | [约瑟夫环问题](https://github.com/limingth/NCCL/blob/master/Unit-1/Lesson-10.md) | 4 | | L2
Tuesday | [4.1-6.3](https://kaisery.github.io/trpl-zh-cn/ch04-01-what-is-ownership.html) | **所有权** ,结构体,模式匹配match,输入输出io,字符串库函数 | move_semantics,primitive_types,structs,enums | [简单命令解释器
add/sub](https://github.com/limingth/NCCL/blob/master/Unit-1/Lesson-19.md) | 5 | | L3
Wednesday | [7.1-9.3](https://kaisery.github.io/trpl-zh-cn/ch07-01-packages-and-crates.html) | 支持多文件编程,常见集合类型,错误处理 | modules, vector, string, hashmap, option, errors | [表达式求值问题](https://github.com/limingth/NCCL/blob/master/Unit-2/Lesson-35.md) | 6 | | L4
Thursday | [10.1-12.6](https://kaisery.github.io/trpl-zh-cn/ch10-01-syntax.html) | 泛型,trait, 生命周期,单元测试 | generic, trait, life, test | [Bash Clone项目
mycat/mycp/calc](https://github.com/limingth/NCCL/blob/master/Unit-2/Lesson-32.md) | 7 | | L5
Friday | [13.1-15.6](https://kaisery.github.io/trpl-zh-cn/ch13-01-closures.html) | 闭包,迭代器,智能指针 | closure, iterator, smartpointer(box, arc) | | 8 | | L6
Saturday | [16.1-18.3](https://kaisery.github.io/trpl-zh-cn/ch16-01-threads.html) | 多线程,并发操作,模式匹配 | threads , match | | 9 | | L7
Sunday | [19.1-20.3](https://kaisery.github.io/trpl-zh-cn/ch19-01-unsafe-rust.html) | unsafe编程,多线程应用 | unsafe,threads | | | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /trees/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /trees/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // 使用 IntelliSense 了解相关属性。 3 | // 悬停以查看现有属性的描述。 4 | // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "lldb", 9 | "request": "launch", 10 | "name": "Debug unit tests in library 'trees'", 11 | "cargo": { 12 | "args": [ 13 | "test", 14 | "--no-run", 15 | "--lib", 16 | "--package=trees" 17 | ], 18 | "filter": { 19 | "name": "trees", 20 | "kind": "lib" 21 | } 22 | }, 23 | "args": [], 24 | "cwd": "${workspaceFolder}" 25 | } 26 | ] 27 | } -------------------------------------------------------------------------------- /trees/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "trees" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 | 8 | [dependencies] 9 | -------------------------------------------------------------------------------- /trees/src/avl.rs: -------------------------------------------------------------------------------- 1 | use std::{fmt::Debug, mem, cmp::Ordering}; 2 | 3 | pub struct Avl { 4 | tr: Option>>, 5 | } 6 | 7 | struct Tree { 8 | val: T, 9 | ltr: Option>>, 10 | rtr: Option>>, 11 | depth: i32, 12 | } 13 | 14 | enum TreeState { 15 | LL, 16 | RR, 17 | LR, 18 | RL, 19 | OK, 20 | } 21 | 22 | impl Debug for Tree { 23 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 24 | f.debug_struct("Tree") 25 | .field("val", &self.val) 26 | .field("depth", &self.depth) 27 | .field("ltr", &self.ltr) 28 | .field("rtr", &self.rtr) 29 | .finish() 30 | } 31 | } 32 | 33 | impl Avl { 34 | 35 | // 根节点都需要特殊处理 36 | pub fn new() -> Self { 37 | Avl { tr: None } 38 | } 39 | 40 | pub fn insert(&mut self, t: T) { 41 | match self.tr.as_mut() { 42 | Some(tr) => { 43 | tr.insert(t); 44 | } 45 | None => { 46 | let tr = Tree { 47 | val: t, 48 | ltr: None, 49 | rtr: None, 50 | depth: 1, 51 | }; 52 | self.tr = Some(Box::new(tr)); 53 | } 54 | } 55 | } 56 | 57 | pub fn delete(&mut self, t: &T) { 58 | let tmp = self.tr.take(); 59 | 60 | self.tr = tmp.and_then(|tr| Tree::delete(tr, t)); 61 | } 62 | 63 | pub fn contains(&self, t: &T) -> bool { 64 | match self.tr.as_ref() { 65 | Some(tr) => tr.contains(t), 66 | None => false, 67 | } 68 | } 69 | 70 | #[allow(unused)] 71 | fn check_rule(&self) -> bool { 72 | match self.tr.as_ref() { 73 | Some(tr) => tr.check_rules(), 74 | None => true, 75 | } 76 | } 77 | } 78 | 79 | impl Tree { 80 | #[inline] 81 | #[allow(unused)] 82 | fn ldepth(&self) -> i32 { 83 | self.ltr.as_ref().map_or(0, |tr| tr.depth) 84 | } 85 | 86 | #[inline] 87 | #[allow(unused)] 88 | fn rdepth(&self) -> i32 { 89 | self.rtr.as_ref().map_or(0, |tr| tr.depth) 90 | } 91 | 92 | #[inline] 93 | #[allow(unused)] 94 | fn is_leaf(&self) -> bool { 95 | self.ltr.is_none() && self.rtr.is_none() 96 | } 97 | 98 | #[inline] 99 | #[allow(unused)] 100 | fn is_branch(&self) -> bool { 101 | !self.is_leaf() 102 | } 103 | 104 | // 左旋只需保证有右子树 105 | fn lrotate(&mut self) { 106 | assert!(self.rtr.is_some()); 107 | 108 | let mut rtr = self.rtr.take().unwrap(); 109 | let rl = rtr.ltr.take(); 110 | self.rtr = rl; 111 | let mut oringin_root = mem::replace(self, *rtr); 112 | oringin_root.rebalance(); 113 | self.ltr = Some(Box::new(oringin_root)); 114 | 115 | // self.ltr.as_mut().unwrap().rebalance(); 116 | self.rebalance(); 117 | } 118 | 119 | // 右旋需要保证有左子树 120 | fn rrotate(&mut self) { 121 | assert!(self.ltr.is_some()); 122 | 123 | let mut ltr = self.ltr.take().unwrap(); 124 | let lr = ltr.rtr.take(); 125 | self.ltr = lr; 126 | let mut oringin_root = mem::replace(self, *ltr); 127 | oringin_root.rebalance(); 128 | self.rtr = Some(Box::new(oringin_root)); 129 | 130 | // self.rtr.as_mut().unwrap().rebalance(); 131 | self.rebalance(); 132 | } 133 | 134 | #[allow(unused)] 135 | fn check_rules(&self) -> bool { 136 | (self.ldepth() - self.rdepth()).abs() <= 1 137 | && self.depth == self.ldepth().max(self.rdepth()) + 1 138 | && self.ltr.as_ref().map_or(true, |tr| tr.val < self.val) 139 | && self.rtr.as_ref().map_or(true, |tr| tr.val > self.val) 140 | } 141 | 142 | // 输入当前树的不平衡状态,重新平衡 143 | fn rebalance(&mut self) { 144 | let state = self.update(); 145 | match state { 146 | TreeState::LL => self.rrotate(), 147 | TreeState::RR => self.lrotate(), 148 | TreeState::LR => { 149 | self.ltr.as_mut().unwrap().lrotate(); 150 | self.rrotate(); 151 | } 152 | TreeState::RL => { 153 | self.rtr.as_mut().unwrap().rrotate(); 154 | self.lrotate(); 155 | } 156 | TreeState::OK => {} 157 | } 158 | } 159 | 160 | fn insert(&mut self, term: T) { 161 | match self.val.cmp(&term) { 162 | Ordering::Less => { 163 | match self.rtr.as_mut() { 164 | Some(tr) => tr.insert(term), 165 | None => { 166 | self.rtr = Some(Box::new(Tree { 167 | val: term, 168 | ltr: None, 169 | rtr: None, 170 | depth: 1, 171 | })) 172 | } 173 | } 174 | }, 175 | Ordering::Equal => {}, 176 | Ordering::Greater => { 177 | match self.ltr.as_mut() { 178 | Some(tr) => tr.insert(term), 179 | None => { 180 | self.ltr = Some(Box::new(Tree { 181 | val: term, 182 | ltr: None, 183 | rtr: None, 184 | depth: 1, 185 | })) 186 | } 187 | } 188 | }, 189 | } 190 | 191 | self.rebalance(); 192 | } 193 | 194 | // 是叶子节点 -> 直接删, 只有一个儿子 -> 删掉后儿子接上, 两个儿子 -> 找到后继节点代替后删(改变elem然后删) 195 | // 本来想实现一个返回mut指针,但是生命周期没法标注 196 | 197 | // 更新depth,返回树的状态 198 | fn update(&mut self) -> TreeState { 199 | // 假定他的子树已经更新好 200 | let ldepth = self.ldepth(); 201 | let rdepth = self.rdepth(); 202 | 203 | self.depth = ldepth.max(rdepth) + 1; 204 | 205 | if (ldepth - rdepth).abs() > 1 { 206 | if ldepth > rdepth { 207 | let lldepth = self.ltr.as_ref().map_or(0, |ltr| ltr.ldepth()); 208 | let lrdepth = self.ltr.as_ref().map_or(0, |ltr| ltr.rdepth()); 209 | if lldepth < lrdepth { 210 | TreeState::LR 211 | } else { 212 | TreeState::LL 213 | } 214 | } else { 215 | let rldepth = self.rtr.as_ref().map_or(0, |rtr| rtr.ldepth()); 216 | let rrdepth = self.rtr.as_ref().map_or(0, |rtr| rtr.rdepth()); 217 | if rldepth < rrdepth { 218 | TreeState::RR 219 | } else { 220 | TreeState::RL 221 | } 222 | } 223 | } else { 224 | TreeState::OK 225 | } 226 | } 227 | 228 | fn contains(&self, t: &T) -> bool { 229 | match self.val.cmp(t) { 230 | Ordering::Less => self.rtr.as_ref().map_or(false,|tr| tr.contains(t)), 231 | Ordering::Equal => true, 232 | Ordering::Greater => self.ltr.as_ref().map_or(false, |tr| tr.contains(t)), 233 | } 234 | } 235 | 236 | // 指向头结点的指针 237 | fn delete(mut root: Box>, t: &T) -> Option>> { 238 | match root.val.cmp(t) { 239 | Ordering::Less => { 240 | root.rtr = root.rtr.and_then(|tr| Tree::delete(tr, &t)); 241 | root.rebalance(); 242 | Some(root) 243 | }, 244 | Ordering::Equal => Tree::delete_root(root), 245 | Ordering::Greater => { 246 | root.ltr = root.ltr.and_then(|tr| Tree::delete(tr, &t)); 247 | root.rebalance(); 248 | Some(root) 249 | }, 250 | } 251 | } 252 | 253 | fn delete_root(mut root: Box>) -> Option>> { 254 | match root.rtr { 255 | Some(mut tr) => { 256 | if tr.ltr.is_none() { 257 | // 右树的左子树没有,把根的左子树接给右树,把右树接在原来根上 258 | tr.ltr = root.ltr; 259 | tr.rebalance(); 260 | Some(tr) 261 | } else { 262 | // 右树最左子偏的叶子即为后继节点,交换两节点的值,删去原来节点 263 | root.val = Tree::left_most(&mut tr).unwrap().val; 264 | root.rtr = Some(tr); 265 | root.rebalance(); 266 | Some(root) 267 | } 268 | }, 269 | // 无右树,接左树 270 | None => root.ltr, 271 | } 272 | } 273 | 274 | 275 | fn left_most(root: &mut Box>) -> Option>> { 276 | match root.ltr.as_mut() { 277 | Some(tr) => { 278 | let result = Tree::left_most(tr); 279 | if result.is_none() { 280 | let result = root.ltr.take(); 281 | root.rebalance(); 282 | result 283 | } else { 284 | root.rebalance(); 285 | result 286 | } 287 | }, 288 | None => None, 289 | } 290 | } 291 | } 292 | 293 | // 生命周期有问题 294 | 295 | 296 | #[cfg(test)] 297 | mod tests { 298 | use super::{Avl, Tree}; 299 | 300 | #[test] 301 | fn rotate() { 302 | let mut lltr = Tree { 303 | val: 2, 304 | ltr: Some(Box::new(Tree { 305 | val: 1, 306 | ltr: { 307 | Some(Box::new(Tree { 308 | val: 0, 309 | ltr: None, 310 | rtr: None, 311 | depth: 0, 312 | })) 313 | }, 314 | rtr: None, 315 | depth: 1, 316 | })), 317 | rtr: None, 318 | depth: 2, 319 | }; 320 | println!("{:?}", lltr); 321 | lltr.rrotate(); 322 | println!("右旋:"); 323 | println!("{:?}", lltr); 324 | 325 | let mut rrtr = Tree { 326 | val: 2, 327 | ltr: None, 328 | rtr: Some(Box::new(Tree { 329 | val: 1, 330 | ltr: None, 331 | rtr: { 332 | Some(Box::new(Tree { 333 | val: 0, 334 | ltr: None, 335 | rtr: None, 336 | depth: 0, 337 | })) 338 | }, 339 | depth: 1, 340 | })), 341 | depth: 2, 342 | }; 343 | println!("{:?}", rrtr); 344 | rrtr.lrotate(); 345 | println!("左旋:"); 346 | println!("{:?}", rrtr); 347 | } 348 | 349 | #[test] 350 | fn insert() { 351 | let mut tr = Avl::new(); 352 | 353 | tr.insert(1); 354 | tr.insert(3); 355 | tr.insert(5); 356 | tr.insert(2); 357 | tr.insert(4); 358 | 359 | assert!(tr.contains(&1)); 360 | assert!(tr.contains(&2)); 361 | assert!(tr.contains(&3)); 362 | assert!(tr.contains(&4)); 363 | assert!(tr.contains(&5)); 364 | assert!(tr.check_rule()); 365 | 366 | tr.delete(&2); 367 | assert!(tr.contains(&1)); 368 | assert!(!tr.contains(&2)); 369 | assert!(tr.contains(&3)); 370 | assert!(tr.contains(&4)); 371 | assert!(tr.contains(&5)); 372 | assert!(tr.check_rule()); 373 | 374 | tr.delete(&5); 375 | assert!(tr.contains(&1)); 376 | assert!(!tr.contains(&2)); 377 | assert!(tr.contains(&3)); 378 | assert!(tr.contains(&4)); 379 | assert!(!tr.contains(&5)); 380 | assert!(tr.check_rule()); 381 | } 382 | } 383 | -------------------------------------------------------------------------------- /trees/src/lib.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod tests { 3 | 4 | #[test] 5 | fn it_works() { 6 | let v = vec![1, 2, 3, 4]; 7 | 8 | println!("{:?}", v); 9 | 10 | } 11 | } 12 | 13 | pub mod avl; -------------------------------------------------------------------------------- /zhangyang/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "my_test" 7 | version = "0.1.0" 8 | -------------------------------------------------------------------------------- /zhangyang/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "my_test" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 | 8 | [dependencies] 9 | -------------------------------------------------------------------------------- /zhangyang/README.md: -------------------------------------------------------------------------------- 1 |

传值与传引用在rust中的体现

2 |

1、Java中的参数

3 | 首先,我们来做一个测试: 4 | 我们首先创建一个对象A: 5 | 6 | public class A { 7 | public int a; 8 | } 9 | 10 | 接着我们在主函数中尝试对该对象进行传参: 11 | 12 | 13 | public class HelloWorld { 14 | public static void main(String[] args){ 15 | 16 | A a1=new A(); 17 | a1.a=1; 18 | int b=1; 19 | test1(b); 20 | test2(a1); 21 | System.out.println(b); 22 | System.out.println(a1.a); 23 | } 24 | public static void test1(int a1){a1=2;} 25 | public static void test2(A a){a.a=2;} 26 | 27 | } 28 | //output 1 2 29 | 在我们运行该段程序后,我们会发现输出了1和2,那么为什么会产生不同的结果,原因是因为Java将所有数据类型分为两类,其中一类是基本值类型,包括所有在编译期可确定大小的类型,该类型在运行时直接保存在栈上,在进行参数传递时,会在栈中直接开辟内存对原值进行复制,因此对参数进行修改并不会改变原值。另一类是引用类型,即编译期不可确定大小,那么该数据的内存位置会保存在堆上,栈上只会存在一个指向对象的指针,在传参时,栈上会开辟一块内存来复制一个同样的指针指向堆,所以我们修改对象的值会影响原值,这是因为两个指针都指向同一个对象。但是,要注意,Java中不存在传递引用,因为引用传递并不新开辟内存,而是直接操作原值,因此也不存在引用悬挂这一说法。如何证明这一点呢?我们来看以下的代码: 30 | 31 | public class HelloWorld { 32 | public static void main(String[] args){ 33 | 34 | A a1=new A(); 35 | a1.a=1; 36 | int b=1; 37 | test1(b); 38 | test2(a1); 39 | System.out.println(b); 40 | System.out.println(a1.a); 41 | } 42 | public static void test1(int a1){a1=2;} 43 | public static void test2(A a){a=new A();a.a=2;} 44 | 45 | } 46 | //output 1 1 47 | 在这里我们让参数a指向了一个新创建的对象并把他初始化为2,但是我们会在输出中发现我们的对象还是1,这是为什么呢,因为在函数中我们实际更改的是一个指针,如下图: 48 | ![](https://zhangyangzy.oss-cn-beijing.aliyuncs.com/img/20220225145241.png) 49 | 50 | 所以我们说Java只存在传值而并没有传引用。 51 |

2、rust中的参数传递

52 | 在rust中情况变得更加复杂。 53 | 首先rust的大致情况和Java比较类似,基本类型的传递也是不区分深复制和浅复制的,一律都是copy语义。但是对于一些不在栈上的变量, 54 |

1)借用

在借用时我们分为move语义和copy语义,其中的区别是move语义实际上是将原来变量的所有权转移到函数中,而copy是完整的复制了一个新的变量,从而不会对原来的变量产生影响。 55 |

2)引用

引用不会取得所有权,但是依然会对原变量产生影响。在生命周期上也会和原变量保持一致,我们可以参照以下例子: 56 | 57 | //#[derive(Clone, Copy)] 58 | struct stu{ 59 | b:i32 60 | } 61 | impl stu{ 62 | fn new(&mut self,val:i32) 63 | { 64 | self.b=val; 65 | } 66 | } 67 | fn test1(mut a:&i32) 68 | { 69 | let b=&2; 70 | a=&b; 71 | } 72 | fn test2(mut a:&stu){ 73 | let b=stu{b:2}; 74 | a=&b; 75 | } 76 | fn main() { 77 | let m=1; 78 | test1(&m); 79 | print!("{}",m); 80 | let mut stu1=stu{b:1}; 81 | test2(&stu1); 82 | //print!("{}",stu1.b) 83 | } 84 | 我们运行一下会发现产生了一个错误, 85 | 86 | 16 | fn test2(mut a:&stu){ 87 | | - let's call the lifetime of this reference `'1` 88 | 17 | let b=stu{b:2}; 89 | 18 | a=&b; 90 | | --^^ 91 | | | | 92 | | | borrowed value does not live long enough 93 | | assignment requires that `b` is borrowed for `'1` 94 | 19 | } 95 | | - `b` dropped here while still borrowed 96 | 我们对i32和struct做了同样的操作,但是会发现只有struct发生了错误,这就是因为引用实际上会和原变量绑定,也就是说函数消亡时引用依然存在,所以导致了引用的悬挂,这和我们在c++中所说的引用并不是一个概念,读者需要注意进行辨析。 97 | 98 | 参考:https://blog.csdn.net/quicmous/article/details/113916168 99 | 100 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /zhangyang/src/main.rs: -------------------------------------------------------------------------------- 1 | //#[derive(Clone, Copy)] 2 | struct stu{ 3 | b:i32 4 | } 5 | impl stu{ 6 | fn new(&mut self,val:i32) 7 | { 8 | self.b=val; 9 | } 10 | } 11 | fn test1(mut a:&i32) 12 | { 13 | let b=&2; 14 | a=&b; 15 | } 16 | fn test2(mut a:&stu){ 17 | let b=stu{b:2}; 18 | a=&b; 19 | } 20 | fn main() { 21 | let m=1; 22 | test1(&m); 23 | print!("{}",m); 24 | let mut stu1=stu{b:1}; 25 | test2(&stu1); 26 | //print!("{}",stu1.b) 27 | } 28 | -------------------------------------------------------------------------------- /zhangyang/target/.rustc_info.json: -------------------------------------------------------------------------------- 1 | {"rustc_fingerprint":9506686455793686794,"outputs":{"2797684049618456168":{"success":false,"status":"exit status: 1","code":1,"stdout":"","stderr":"error: `-Csplit-debuginfo` is unstable on this platform\n\n"},"17598535894874457435":{"success":true,"status":"","code":0,"stdout":"rustc 1.60.0-nightly (e0a55f449 2022-01-28)\nbinary: rustc\ncommit-hash: e0a55f4491a729bffc63b402ba903d90858c806b\ncommit-date: 2022-01-28\nhost: x86_64-unknown-linux-gnu\nrelease: 1.60.0-nightly\nLLVM version: 13.0.0\n","stderr":""},"5309432699494263626":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n","stderr":""},"8478739912462367707":{"success":false,"status":"exit status: 1","code":1,"stdout":"","stderr":"error: `-Csplit-debuginfo` is unstable on this platform\n\n"},"931469667778813386":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/sky/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"unknown\"\nunix\n","stderr":""},"11142364071441499871":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n","stderr":""},"9666181950136269162":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/sky/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"unknown\"\nunix\n","stderr":""}},"successes":{}} -------------------------------------------------------------------------------- /zhangyang/target/CACHEDIR.TAG: -------------------------------------------------------------------------------- 1 | Signature: 8a477f597d28d172789f06886806bc55 2 | # This file is a cache directory tag created by cargo. 3 | # For information about cache directory tags see https://bford.info/cachedir/ 4 | -------------------------------------------------------------------------------- /zhangyang/target/debug/.cargo-lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/.cargo-lock -------------------------------------------------------------------------------- /zhangyang/target/debug/.fingerprint/my_test-15cd95a288911e40/bin-my_test: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/.fingerprint/my_test-15cd95a288911e40/bin-my_test -------------------------------------------------------------------------------- /zhangyang/target/debug/.fingerprint/my_test-15cd95a288911e40/bin-my_test.json: -------------------------------------------------------------------------------- 1 | {"rustc":4286116606376806971,"features":"[]","target":1721446827264615691,"profile":9251013656241001069,"path":1684066648322511884,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/my_test-15cd95a288911e40/dep-bin-my_test"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0} -------------------------------------------------------------------------------- /zhangyang/target/debug/.fingerprint/my_test-15cd95a288911e40/dep-bin-my_test: -------------------------------------------------------------------------------- 1 |  src/main.rs -------------------------------------------------------------------------------- /zhangyang/target/debug/.fingerprint/my_test-15cd95a288911e40/invoked.timestamp: -------------------------------------------------------------------------------- 1 | This file has an mtime of when this was started. -------------------------------------------------------------------------------- /zhangyang/target/debug/.fingerprint/my_test-15cd95a288911e40/output-bin-my_test: -------------------------------------------------------------------------------- 1 | {"message":"type `stu` should have an upper camel case name","code":{"code":"non_camel_case_types","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":30,"byte_end":33,"line_start":2,"line_end":2,"column_start":8,"column_end":11,"is_primary":true,"text":[{"text":"struct stu{","highlight_start":8,"highlight_end":11}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(non_camel_case_types)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"convert the identifier to upper camel case","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":30,"byte_end":33,"line_start":2,"line_end":2,"column_start":8,"column_end":11,"is_primary":true,"text":[{"text":"struct stu{","highlight_start":8,"highlight_end":11}],"label":null,"suggested_replacement":"Stu","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: type `stu` should have an upper camel case name\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:2:8\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m2\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0mstruct stu{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: convert the identifier to upper camel case (notice the capitalization): `Stu`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(non_camel_case_types)]` on by default\u001b[0m\n\n"} 2 | {"message":"value assigned to `a` is never read","code":{"code":"unused_assignments","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":166,"byte_end":167,"line_start":14,"line_end":14,"column_start":5,"column_end":6,"is_primary":true,"text":[{"text":" a=&b;","highlight_start":5,"highlight_end":6}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_assignments)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"maybe it is overwritten before being read?","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: value assigned to `a` is never read\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:14:5\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m14\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m a=&b;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_assignments)]` on by default\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mhelp\u001b[0m\u001b[0m: maybe it is overwritten before being read?\u001b[0m\n\n"} 3 | {"message":"variable `a` is assigned to, but never used","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":134,"byte_end":135,"line_start":11,"line_end":11,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":"fn test1(mut a:&i32)","highlight_start":14,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"consider using `_a` instead","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable `a` is assigned to, but never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:11:14\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m11\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0mfn test1(mut a:&i32)\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_variables)]` on by default\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: consider using `_a` instead\u001b[0m\n\n"} 4 | {"message":"value assigned to `a` is never read","code":{"code":"unused_assignments","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":220,"byte_end":221,"line_start":18,"line_end":18,"column_start":5,"column_end":6,"is_primary":true,"text":[{"text":" a=&b;","highlight_start":5,"highlight_end":6}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"maybe it is overwritten before being read?","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: value assigned to `a` is never read\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:18:5\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m18\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m a=&b;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mhelp\u001b[0m\u001b[0m: maybe it is overwritten before being read?\u001b[0m\n\n"} 5 | {"message":"variable `a` is assigned to, but never used","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":187,"byte_end":188,"line_start":16,"line_end":16,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":"fn test2(mut a:&stu){","highlight_start":14,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider using `_a` instead","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable `a` is assigned to, but never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:16:14\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m16\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0mfn test2(mut a:&stu){\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: consider using `_a` instead\u001b[0m\n\n"} 6 | {"message":"`b` does not live long enough","code":{"code":"E0597","explanation":"This error occurs because a value was dropped while it was still borrowed.\n\nErroneous code example:\n\n```compile_fail,E0597\nstruct Foo<'a> {\n x: Option<&'a u32>,\n}\n\nlet mut x = Foo { x: None };\n{\n let y = 0;\n x.x = Some(&y); // error: `y` does not live long enough\n}\nprintln!(\"{:?}\", x.x);\n```\n\nHere, `y` is dropped at the end of the inner scope, but it is borrowed by\n`x` until the `println`. To fix the previous example, just remove the scope\nso that `y` isn't dropped until after the println\n\n```\nstruct Foo<'a> {\n x: Option<&'a u32>,\n}\n\nlet mut x = Foo { x: None };\n\nlet y = 0;\nx.x = Some(&y);\n\nprintln!(\"{:?}\", x.x);\n```\n"},"level":"error","spans":[{"file_name":"src/main.rs","byte_start":222,"byte_end":224,"line_start":18,"line_end":18,"column_start":7,"column_end":9,"is_primary":true,"text":[{"text":" a=&b;","highlight_start":7,"highlight_end":9}],"label":"borrowed value does not live long enough","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":226,"byte_end":227,"line_start":19,"line_end":19,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"}","highlight_start":1,"highlight_end":2}],"label":"`b` dropped here while still borrowed","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":189,"byte_end":190,"line_start":16,"line_end":16,"column_start":16,"column_end":17,"is_primary":false,"text":[{"text":"fn test2(mut a:&stu){","highlight_start":16,"highlight_end":17}],"label":"let's call the lifetime of this reference `'1`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":220,"byte_end":224,"line_start":18,"line_end":18,"column_start":5,"column_end":9,"is_primary":false,"text":[{"text":" a=&b;","highlight_start":5,"highlight_end":9}],"label":"assignment requires that `b` is borrowed for `'1`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror[E0597]\u001b[0m\u001b[0m\u001b[1m: `b` does not live long enough\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:18:7\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m16\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0mfn test2(mut a:&stu){\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m-\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mlet's call the lifetime of this reference `'1`\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m17\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let b=stu{b:2};\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m18\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m a=&b;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9mborrowed value does not live long enough\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12massignment requires that `b` is borrowed for `'1`\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m19\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m}\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m-\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m`b` dropped here while still borrowed\u001b[0m\n\n"} 7 | {"message":"variable does not need to be mutable","code":{"code":"unused_mut","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":296,"byte_end":304,"line_start":24,"line_end":24,"column_start":9,"column_end":17,"is_primary":true,"text":[{"text":" let mut stu1=stu{b:1};","highlight_start":9,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_mut)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove this `mut`","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":296,"byte_end":300,"line_start":24,"line_end":24,"column_start":9,"column_end":13,"is_primary":true,"text":[{"text":" let mut stu1=stu{b:1};","highlight_start":9,"highlight_end":13}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable does not need to be mutable\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:24:9\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m24\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let mut stu1=stu{b:1};\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m----\u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mhelp: remove this `mut`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_mut)]` on by default\u001b[0m\n\n"} 8 | {"message":"aborting due to previous error; 6 warnings emitted","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror\u001b[0m\u001b[0m\u001b[1m: aborting due to previous error; 6 warnings emitted\u001b[0m\n\n"} 9 | {"message":"For more information about this error, try `rustc --explain E0597`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1mFor more information about this error, try `rustc --explain E0597`.\u001b[0m\n"} 10 | -------------------------------------------------------------------------------- /zhangyang/target/debug/.fingerprint/my_test-6a6760ebf9c60409/bin-my_test: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/.fingerprint/my_test-6a6760ebf9c60409/bin-my_test -------------------------------------------------------------------------------- /zhangyang/target/debug/.fingerprint/my_test-6a6760ebf9c60409/bin-my_test.json: -------------------------------------------------------------------------------- 1 | {"rustc":4286116606376806971,"features":"[]","target":1721446827264615691,"profile":7309141686862299243,"path":1684066648322511884,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/my_test-6a6760ebf9c60409/dep-bin-my_test"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0} -------------------------------------------------------------------------------- /zhangyang/target/debug/.fingerprint/my_test-6a6760ebf9c60409/dep-bin-my_test: -------------------------------------------------------------------------------- 1 |  src/main.rs -------------------------------------------------------------------------------- /zhangyang/target/debug/.fingerprint/my_test-6a6760ebf9c60409/invoked.timestamp: -------------------------------------------------------------------------------- 1 | This file has an mtime of when this was started. -------------------------------------------------------------------------------- /zhangyang/target/debug/.fingerprint/my_test-6a6760ebf9c60409/output-bin-my_test: -------------------------------------------------------------------------------- 1 | {"message":"type `stu` should have an upper camel case name","code":{"code":"non_camel_case_types","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":32,"byte_end":35,"line_start":2,"line_end":2,"column_start":8,"column_end":11,"is_primary":true,"text":[{"text":"struct stu{","highlight_start":8,"highlight_end":11}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(non_camel_case_types)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"convert the identifier to upper camel case","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":32,"byte_end":35,"line_start":2,"line_end":2,"column_start":8,"column_end":11,"is_primary":true,"text":[{"text":"struct stu{","highlight_start":8,"highlight_end":11}],"label":null,"suggested_replacement":"Stu","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: type `stu` should have an upper camel case name\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:2:8\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m2\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0mstruct stu{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: convert the identifier to upper camel case (notice the capitalization): `Stu`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(non_camel_case_types)]` on by default\u001b[0m\n\n"} 2 | {"message":"value assigned to `a` is never read","code":{"code":"unused_assignments","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":168,"byte_end":169,"line_start":14,"line_end":14,"column_start":5,"column_end":6,"is_primary":true,"text":[{"text":" a=&b;","highlight_start":5,"highlight_end":6}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_assignments)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"maybe it is overwritten before being read?","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: value assigned to `a` is never read\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:14:5\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m14\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m a=&b;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_assignments)]` on by default\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mhelp\u001b[0m\u001b[0m: maybe it is overwritten before being read?\u001b[0m\n\n"} 3 | {"message":"variable `a` is assigned to, but never used","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":136,"byte_end":137,"line_start":11,"line_end":11,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":"fn test1(mut a:&i32)","highlight_start":14,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"consider using `_a` instead","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable `a` is assigned to, but never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:11:14\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m11\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0mfn test1(mut a:&i32)\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_variables)]` on by default\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: consider using `_a` instead\u001b[0m\n\n"} 4 | {"message":"value assigned to `a` is never read","code":{"code":"unused_assignments","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":222,"byte_end":223,"line_start":18,"line_end":18,"column_start":5,"column_end":6,"is_primary":true,"text":[{"text":" a=&b;","highlight_start":5,"highlight_end":6}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"maybe it is overwritten before being read?","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: value assigned to `a` is never read\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:18:5\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m18\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m a=&b;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mhelp\u001b[0m\u001b[0m: maybe it is overwritten before being read?\u001b[0m\n\n"} 5 | {"message":"variable `a` is assigned to, but never used","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":189,"byte_end":190,"line_start":16,"line_end":16,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":"fn test2(mut a:&stu){","highlight_start":14,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider using `_a` instead","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable `a` is assigned to, but never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:16:14\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m16\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0mfn test2(mut a:&stu){\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: consider using `_a` instead\u001b[0m\n\n"} 6 | {"message":"`b` does not live long enough","code":{"code":"E0597","explanation":"This error occurs because a value was dropped while it was still borrowed.\n\nErroneous code example:\n\n```compile_fail,E0597\nstruct Foo<'a> {\n x: Option<&'a u32>,\n}\n\nlet mut x = Foo { x: None };\n{\n let y = 0;\n x.x = Some(&y); // error: `y` does not live long enough\n}\nprintln!(\"{:?}\", x.x);\n```\n\nHere, `y` is dropped at the end of the inner scope, but it is borrowed by\n`x` until the `println`. To fix the previous example, just remove the scope\nso that `y` isn't dropped until after the println\n\n```\nstruct Foo<'a> {\n x: Option<&'a u32>,\n}\n\nlet mut x = Foo { x: None };\n\nlet y = 0;\nx.x = Some(&y);\n\nprintln!(\"{:?}\", x.x);\n```\n"},"level":"error","spans":[{"file_name":"src/main.rs","byte_start":224,"byte_end":226,"line_start":18,"line_end":18,"column_start":7,"column_end":9,"is_primary":true,"text":[{"text":" a=&b;","highlight_start":7,"highlight_end":9}],"label":"borrowed value does not live long enough","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":228,"byte_end":229,"line_start":19,"line_end":19,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"}","highlight_start":1,"highlight_end":2}],"label":"`b` dropped here while still borrowed","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":191,"byte_end":192,"line_start":16,"line_end":16,"column_start":16,"column_end":17,"is_primary":false,"text":[{"text":"fn test2(mut a:&stu){","highlight_start":16,"highlight_end":17}],"label":"let's call the lifetime of this reference `'1`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":222,"byte_end":226,"line_start":18,"line_end":18,"column_start":5,"column_end":9,"is_primary":false,"text":[{"text":" a=&b;","highlight_start":5,"highlight_end":9}],"label":"assignment requires that `b` is borrowed for `'1`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror[E0597]\u001b[0m\u001b[0m\u001b[1m: `b` does not live long enough\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:18:7\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m16\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0mfn test2(mut a:&stu){\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m-\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mlet's call the lifetime of this reference `'1`\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m17\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let b=stu{b:2};\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m18\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m a=&b;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9mborrowed value does not live long enough\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12massignment requires that `b` is borrowed for `'1`\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m19\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m}\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m-\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m`b` dropped here while still borrowed\u001b[0m\n\n"} 7 | {"message":"variable does not need to be mutable","code":{"code":"unused_mut","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":298,"byte_end":306,"line_start":24,"line_end":24,"column_start":9,"column_end":17,"is_primary":true,"text":[{"text":" let mut stu1=stu{b:1};","highlight_start":9,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_mut)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove this `mut`","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":298,"byte_end":302,"line_start":24,"line_end":24,"column_start":9,"column_end":13,"is_primary":true,"text":[{"text":" let mut stu1=stu{b:1};","highlight_start":9,"highlight_end":13}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable does not need to be mutable\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:24:9\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m24\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let mut stu1=stu{b:1};\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m----\u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mhelp: remove this `mut`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_mut)]` on by default\u001b[0m\n\n"} 8 | {"message":"aborting due to previous error; 6 warnings emitted","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror\u001b[0m\u001b[0m\u001b[1m: aborting due to previous error; 6 warnings emitted\u001b[0m\n\n"} 9 | {"message":"For more information about this error, try `rustc --explain E0597`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1mFor more information about this error, try `rustc --explain E0597`.\u001b[0m\n"} 10 | -------------------------------------------------------------------------------- /zhangyang/target/debug/.fingerprint/my_test-884421f371388d64/dep-test-bin-my_test: -------------------------------------------------------------------------------- 1 |  src/main.rs -------------------------------------------------------------------------------- /zhangyang/target/debug/.fingerprint/my_test-884421f371388d64/invoked.timestamp: -------------------------------------------------------------------------------- 1 | This file has an mtime of when this was started. -------------------------------------------------------------------------------- /zhangyang/target/debug/.fingerprint/my_test-884421f371388d64/output-test-bin-my_test: -------------------------------------------------------------------------------- 1 | {"message":"type `stu` should have an upper camel case name","code":{"code":"non_camel_case_types","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":32,"byte_end":35,"line_start":2,"line_end":2,"column_start":8,"column_end":11,"is_primary":true,"text":[{"text":"struct stu{","highlight_start":8,"highlight_end":11}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(non_camel_case_types)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"convert the identifier to upper camel case","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":32,"byte_end":35,"line_start":2,"line_end":2,"column_start":8,"column_end":11,"is_primary":true,"text":[{"text":"struct stu{","highlight_start":8,"highlight_end":11}],"label":null,"suggested_replacement":"Stu","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: type `stu` should have an upper camel case name\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:2:8\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m2\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0mstruct stu{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: convert the identifier to upper camel case (notice the capitalization): `Stu`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(non_camel_case_types)]` on by default\u001b[0m\n\n"} 2 | {"message":"value assigned to `a` is never read","code":{"code":"unused_assignments","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":168,"byte_end":169,"line_start":14,"line_end":14,"column_start":5,"column_end":6,"is_primary":true,"text":[{"text":" a=&b;","highlight_start":5,"highlight_end":6}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_assignments)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"maybe it is overwritten before being read?","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: value assigned to `a` is never read\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:14:5\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m14\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m a=&b;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_assignments)]` on by default\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mhelp\u001b[0m\u001b[0m: maybe it is overwritten before being read?\u001b[0m\n\n"} 3 | {"message":"variable `a` is assigned to, but never used","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":136,"byte_end":137,"line_start":11,"line_end":11,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":"fn test1(mut a:&i32)","highlight_start":14,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"consider using `_a` instead","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable `a` is assigned to, but never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:11:14\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m11\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0mfn test1(mut a:&i32)\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_variables)]` on by default\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: consider using `_a` instead\u001b[0m\n\n"} 4 | {"message":"value assigned to `a` is never read","code":{"code":"unused_assignments","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":222,"byte_end":223,"line_start":18,"line_end":18,"column_start":5,"column_end":6,"is_primary":true,"text":[{"text":" a=&b;","highlight_start":5,"highlight_end":6}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"maybe it is overwritten before being read?","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: value assigned to `a` is never read\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:18:5\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m18\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m a=&b;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mhelp\u001b[0m\u001b[0m: maybe it is overwritten before being read?\u001b[0m\n\n"} 5 | {"message":"variable `a` is assigned to, but never used","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":189,"byte_end":190,"line_start":16,"line_end":16,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":"fn test2(mut a:&stu){","highlight_start":14,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider using `_a` instead","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable `a` is assigned to, but never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:16:14\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m16\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0mfn test2(mut a:&stu){\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: consider using `_a` instead\u001b[0m\n\n"} 6 | {"message":"`b` does not live long enough","code":{"code":"E0597","explanation":"This error occurs because a value was dropped while it was still borrowed.\n\nErroneous code example:\n\n```compile_fail,E0597\nstruct Foo<'a> {\n x: Option<&'a u32>,\n}\n\nlet mut x = Foo { x: None };\n{\n let y = 0;\n x.x = Some(&y); // error: `y` does not live long enough\n}\nprintln!(\"{:?}\", x.x);\n```\n\nHere, `y` is dropped at the end of the inner scope, but it is borrowed by\n`x` until the `println`. To fix the previous example, just remove the scope\nso that `y` isn't dropped until after the println\n\n```\nstruct Foo<'a> {\n x: Option<&'a u32>,\n}\n\nlet mut x = Foo { x: None };\n\nlet y = 0;\nx.x = Some(&y);\n\nprintln!(\"{:?}\", x.x);\n```\n"},"level":"error","spans":[{"file_name":"src/main.rs","byte_start":224,"byte_end":226,"line_start":18,"line_end":18,"column_start":7,"column_end":9,"is_primary":true,"text":[{"text":" a=&b;","highlight_start":7,"highlight_end":9}],"label":"borrowed value does not live long enough","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":228,"byte_end":229,"line_start":19,"line_end":19,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"}","highlight_start":1,"highlight_end":2}],"label":"`b` dropped here while still borrowed","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":191,"byte_end":192,"line_start":16,"line_end":16,"column_start":16,"column_end":17,"is_primary":false,"text":[{"text":"fn test2(mut a:&stu){","highlight_start":16,"highlight_end":17}],"label":"let's call the lifetime of this reference `'1`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":222,"byte_end":226,"line_start":18,"line_end":18,"column_start":5,"column_end":9,"is_primary":false,"text":[{"text":" a=&b;","highlight_start":5,"highlight_end":9}],"label":"assignment requires that `b` is borrowed for `'1`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror[E0597]\u001b[0m\u001b[0m\u001b[1m: `b` does not live long enough\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:18:7\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m16\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0mfn test2(mut a:&stu){\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m-\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mlet's call the lifetime of this reference `'1`\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m17\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let b=stu{b:2};\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m18\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m a=&b;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9mborrowed value does not live long enough\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12massignment requires that `b` is borrowed for `'1`\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m19\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m}\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m-\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m`b` dropped here while still borrowed\u001b[0m\n\n"} 7 | {"message":"variable does not need to be mutable","code":{"code":"unused_mut","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":298,"byte_end":306,"line_start":24,"line_end":24,"column_start":9,"column_end":17,"is_primary":true,"text":[{"text":" let mut stu1=stu{b:1};","highlight_start":9,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_mut)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove this `mut`","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":298,"byte_end":302,"line_start":24,"line_end":24,"column_start":9,"column_end":13,"is_primary":true,"text":[{"text":" let mut stu1=stu{b:1};","highlight_start":9,"highlight_end":13}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable does not need to be mutable\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:24:9\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m24\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let mut stu1=stu{b:1};\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m----\u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mhelp: remove this `mut`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_mut)]` on by default\u001b[0m\n\n"} 8 | {"message":"aborting due to previous error; 6 warnings emitted","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror\u001b[0m\u001b[0m\u001b[1m: aborting due to previous error; 6 warnings emitted\u001b[0m\n\n"} 9 | {"message":"For more information about this error, try `rustc --explain E0597`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1mFor more information about this error, try `rustc --explain E0597`.\u001b[0m\n"} 10 | -------------------------------------------------------------------------------- /zhangyang/target/debug/.fingerprint/my_test-884421f371388d64/test-bin-my_test: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/.fingerprint/my_test-884421f371388d64/test-bin-my_test -------------------------------------------------------------------------------- /zhangyang/target/debug/.fingerprint/my_test-884421f371388d64/test-bin-my_test.json: -------------------------------------------------------------------------------- 1 | {"rustc":4286116606376806971,"features":"[]","target":1721446827264615691,"profile":1021633075455700787,"path":1684066648322511884,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/my_test-884421f371388d64/dep-test-bin-my_test"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0} -------------------------------------------------------------------------------- /zhangyang/target/debug/deps/libmy_test-6a6760ebf9c60409.rmeta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/deps/libmy_test-6a6760ebf9c60409.rmeta -------------------------------------------------------------------------------- /zhangyang/target/debug/deps/libmy_test-884421f371388d64.rmeta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/deps/libmy_test-884421f371388d64.rmeta -------------------------------------------------------------------------------- /zhangyang/target/debug/deps/my_test-15cd95a288911e40: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/deps/my_test-15cd95a288911e40 -------------------------------------------------------------------------------- /zhangyang/target/debug/deps/my_test-15cd95a288911e40.d: -------------------------------------------------------------------------------- 1 | /home/sky/my_test/target/debug/deps/my_test-15cd95a288911e40: src/main.rs 2 | 3 | /home/sky/my_test/target/debug/deps/my_test-15cd95a288911e40.d: src/main.rs 4 | 5 | src/main.rs: 6 | -------------------------------------------------------------------------------- /zhangyang/target/debug/deps/my_test-6a6760ebf9c60409.d: -------------------------------------------------------------------------------- 1 | /home/sky/my_test/target/debug/deps/my_test-6a6760ebf9c60409.rmeta: src/main.rs 2 | 3 | /home/sky/my_test/target/debug/deps/my_test-6a6760ebf9c60409.d: src/main.rs 4 | 5 | src/main.rs: 6 | -------------------------------------------------------------------------------- /zhangyang/target/debug/deps/my_test-884421f371388d64.d: -------------------------------------------------------------------------------- 1 | /home/sky/my_test/target/debug/deps/my_test-884421f371388d64.rmeta: src/main.rs 2 | 3 | /home/sky/my_test/target/debug/deps/my_test-884421f371388d64.d: src/main.rs 4 | 5 | src/main.rs: 6 | -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7bo2r4fcb-15eetpz-3qf0lirz3e0dw/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7bo2r4fcb-15eetpz-3qf0lirz3e0dw/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7bo2r4fcb-15eetpz-3qf0lirz3e0dw/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7bo2r4fcb-15eetpz-3qf0lirz3e0dw/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7bo2r4fcb-15eetpz-3qf0lirz3e0dw/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7bo2r4fcb-15eetpz.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7bo2r4fcb-15eetpz.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnsqfsv-14903lp-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnsqfsv-14903lp-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnsqfsv-14903lp-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnsqfsv-14903lp-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnsqfsv-14903lp-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnsqfsv-14903lp-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnsqfsv-14903lp-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnsqfsv-14903lp.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnsqfsv-14903lp.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnswaum-9ngsfz-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnswaum-9ngsfz-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnswaum-9ngsfz-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnswaum-9ngsfz-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnswaum-9ngsfz-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnswaum-9ngsfz-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnswaum-9ngsfz-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnswaum-9ngsfz.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnswaum-9ngsfz.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt1v2v-1bdgzw9-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt1v2v-1bdgzw9-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt1v2v-1bdgzw9-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt1v2v-1bdgzw9-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt1v2v-1bdgzw9-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt1v2v-1bdgzw9-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt1v2v-1bdgzw9-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt1v2v-1bdgzw9.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt1v2v-1bdgzw9.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt571g-117jz7y-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt571g-117jz7y-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt571g-117jz7y-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt571g-117jz7y-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt571g-117jz7y-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt571g-117jz7y-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt571g-117jz7y-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt571g-117jz7y.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt571g-117jz7y.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt8g1t-1yq5v3l-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt8g1t-1yq5v3l-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt8g1t-1yq5v3l-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt8g1t-1yq5v3l-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt8g1t-1yq5v3l-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt8g1t-1yq5v3l-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt8g1t-1yq5v3l-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt8g1t-1yq5v3l.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnt8g1t-1yq5v3l.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlntvj4o-1w7eure-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlntvj4o-1w7eure-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlntvj4o-1w7eure-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlntvj4o-1w7eure-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlntvj4o-1w7eure-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlntvj4o-1w7eure-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlntvj4o-1w7eure-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlntvj4o-1w7eure.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlntvj4o-1w7eure.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlntzlw0-fxjluu-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlntzlw0-fxjluu-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlntzlw0-fxjluu-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlntzlw0-fxjluu-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlntzlw0-fxjluu-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlntzlw0-fxjluu-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlntzlw0-fxjluu-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlntzlw0-fxjluu.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlntzlw0-fxjluu.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnu31nx-378u6n-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnu31nx-378u6n-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnu31nx-378u6n-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnu31nx-378u6n-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnu31nx-378u6n-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnu31nx-378u6n-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnu31nx-378u6n-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnu31nx-378u6n.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnu31nx-378u6n.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnu6kkk-11kdznd-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnu6kkk-11kdznd-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnu6kkk-11kdznd-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnu6kkk-11kdznd-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnu6kkk-11kdznd-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnu6kkk-11kdznd-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnu6kkk-11kdznd-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnu6kkk-11kdznd.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnu6kkk-11kdznd.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnuaajb-9536cw-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnuaajb-9536cw-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnuaajb-9536cw-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnuaajb-9536cw-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnuaajb-9536cw-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnuaajb-9536cw-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnuaajb-9536cw-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnuaajb-9536cw.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnuaajb-9536cw.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnunqdw-1yxgcc6-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnunqdw-1yxgcc6-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnunqdw-1yxgcc6-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnunqdw-1yxgcc6-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnunqdw-1yxgcc6-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnunqdw-1yxgcc6-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnunqdw-1yxgcc6-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnunqdw-1yxgcc6.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-1seqjby2wgej0/s-g7dlnunqdw-1yxgcc6.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7bo2r4ekp-oezlde-3555vay4d7ipw/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7bo2r4ekp-oezlde-3555vay4d7ipw/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7bo2r4ekp-oezlde-3555vay4d7ipw/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7bo2r4ekp-oezlde-3555vay4d7ipw/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7bo2r4ekp-oezlde-3555vay4d7ipw/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7bo2r4ekp-oezlde.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7bo2r4ekp-oezlde.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnsqcr4-mj6any-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnsqcr4-mj6any-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnsqcr4-mj6any-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnsqcr4-mj6any-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnsqcr4-mj6any-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnsqcr4-mj6any-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnsqcr4-mj6any-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnsqcr4-mj6any.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnsqcr4-mj6any.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnsweyt-1k35nme-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnsweyt-1k35nme-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnsweyt-1k35nme-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnsweyt-1k35nme-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnsweyt-1k35nme-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnsweyt-1k35nme-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnsweyt-1k35nme-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnsweyt-1k35nme.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnsweyt-1k35nme.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt1x0g-hoh7k0-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt1x0g-hoh7k0-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt1x0g-hoh7k0-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt1x0g-hoh7k0-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt1x0g-hoh7k0-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt1x0g-hoh7k0-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt1x0g-hoh7k0-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt1x0g-hoh7k0.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt1x0g-hoh7k0.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt571g-1d2idob-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt571g-1d2idob-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt571g-1d2idob-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt571g-1d2idob-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt571g-1d2idob-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt571g-1d2idob-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt571g-1d2idob-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt571g-1d2idob.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt571g-1d2idob.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt8gx4-158zzg7-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt8gx4-158zzg7-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt8gx4-158zzg7-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt8gx4-158zzg7-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt8gx4-158zzg7-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt8gx4-158zzg7-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt8gx4-158zzg7-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt8gx4-158zzg7.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnt8gx4-158zzg7.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlntvl74-fs5nwv-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlntvl74-fs5nwv-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlntvl74-fs5nwv-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlntvl74-fs5nwv-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlntvl74-fs5nwv-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlntvl74-fs5nwv-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlntvl74-fs5nwv-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlntvl74-fs5nwv.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlntvl74-fs5nwv.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlntzkob-aaqyrt-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlntzkob-aaqyrt-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlntzkob-aaqyrt-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlntzkob-aaqyrt-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlntzkob-aaqyrt-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlntzkob-aaqyrt-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlntzkob-aaqyrt-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlntzkob-aaqyrt.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlntzkob-aaqyrt.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnu33lg-qqwbt8-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnu33lg-qqwbt8-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnu33lg-qqwbt8-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnu33lg-qqwbt8-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnu33lg-qqwbt8-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnu33lg-qqwbt8-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnu33lg-qqwbt8-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnu33lg-qqwbt8.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnu33lg-qqwbt8.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnu6k41-10jkrj0-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnu6k41-10jkrj0-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnu6k41-10jkrj0-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnu6k41-10jkrj0-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnu6k41-10jkrj0-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnu6k41-10jkrj0-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnu6k41-10jkrj0-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnu6k41-10jkrj0.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnu6k41-10jkrj0.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnuaaii-1qszvac-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnuaaii-1qszvac-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnuaaii-1qszvac-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnuaaii-1qszvac-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnuaaii-1qszvac-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnuaaii-1qszvac-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnuaaii-1qszvac-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnuaaii-1qszvac.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnuaaii-1qszvac.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnunur1-k990yq-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnunur1-k990yq-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnunur1-k990yq-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnunur1-k990yq-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnunur1-k990yq-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnunur1-k990yq-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnunur1-k990yq-working/work-products.bin: -------------------------------------------------------------------------------- 1 | RSIC%1.60.0-nightly (e0a55f449 2022-01-28) -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnunur1-k990yq.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-23lob77d4ni59/s-g7dlnunur1-k990yq.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/1q8riebezqrkrz3k.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/1q8riebezqrkrz3k.o -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/1wdvrzeoydboq4r.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/1wdvrzeoydboq4r.o -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/3l6h6vc73lvqrbev.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/3l6h6vc73lvqrbev.o -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/3ypf5rolsr8h2rf5.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/3ypf5rolsr8h2rf5.o -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/4obj8j3isqev0cqg.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/4obj8j3isqev0cqg.o -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/4ta4jw9v68loe766.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/4ta4jw9v68loe766.o -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/544vadw02jx8dw7s.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/544vadw02jx8dw7s.o -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/5dea50g825afd46r.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/5dea50g825afd46r.o -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/5geua3kd6wm65ato.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/5geua3kd6wm65ato.o -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/work-products.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv-1bo65roaah7de/work-products.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7bo4xkmqb-splhqv.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/1q8riebezqrkrz3k.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/1q8riebezqrkrz3k.o -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/1wdvrzeoydboq4r.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/1wdvrzeoydboq4r.o -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/3l6h6vc73lvqrbev.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/3l6h6vc73lvqrbev.o -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/3ypf5rolsr8h2rf5.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/3ypf5rolsr8h2rf5.o -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/4obj8j3isqev0cqg.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/4obj8j3isqev0cqg.o -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/4ta4jw9v68loe766.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/4ta4jw9v68loe766.o -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/544vadw02jx8dw7s.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/544vadw02jx8dw7s.o -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/5dea50g825afd46r.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/5dea50g825afd46r.o -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/5geua3kd6wm65ato.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/5geua3kd6wm65ato.o -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/dep-graph.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/dep-graph.part.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/dep-graph.part.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/query-cache.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/work-products.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3-working/work-products.bin -------------------------------------------------------------------------------- /zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/incremental/my_test-28eml8hzv1l3f/s-g7dlj5sihq-e0xgs3.lock -------------------------------------------------------------------------------- /zhangyang/target/debug/my_test: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/os2edu/rust-basics-course/1418e1620fa4224c77b6081fc1ae9ce0dce1bda1/zhangyang/target/debug/my_test -------------------------------------------------------------------------------- /zhangyang/target/debug/my_test.d: -------------------------------------------------------------------------------- 1 | /home/sky/my_test/target/debug/my_test: /home/sky/my_test/src/main.rs 2 | --------------------------------------------------------------------------------