Skip to content

siriusdemon/rusticode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 

Repository files navigation

rusticode

是树和链表,快跑!

初心

刚用rustleetcode的时候,一遇到树和链表的题,就满地clone,才能通过编译。后面对rust熟悉了之后,就找到了一些避免多余副本的方法。因为每一个副本都需要消耗内存,克隆的操作可能也会比较耗时。如果一直clone,速度和效率就大打折扣了。相比隔壁的C,虽然有了自动内存管理,但却是以拷贝作为代价。

概括地说,避免不必要clone的方法是:

  • 使用引用,适用于不需要修改原数据结构的场景,比如树的深度,链表的长度。
  • 使用take,适用于需要修改原数据结构的场景,比如重建二叉树。

对于那些正在用rust写题的同学,可能树和链表的代码是最有参考性的。

misc

你可以通过cargo跑测试。这里面的测试并没有涵盖所有的题目。一开始,每做一题我都会在lib.rs写对应的测试,后来觉得太麻烦就没有写了。

cargo test

如果你想在rust中写C,这个项目也有一点点的参考价值。你可以看看lib.rsleetcode.c是怎么交互的。

wishes

愿凡有所得,皆能自利利他。

About

是树和链表,快跑!

Topics

Resources

Stars

Watchers

Forks