前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Rust日报】2023-01-18 希望你能早点学到的 Rust 技巧

【Rust日报】2023-01-18 希望你能早点学到的 Rust 技巧

作者头像
MikeLoveRust
发布2023-02-15 20:08:26
2090
发布2023-02-15 20:08:26
举报

希望你能早点学到的 Rust 技巧

  • 双向引用
  • 实现 Deref
  • 小心实现 Deref
  • 内部可变性的使用
  • 接受 unsafe
  • ...

ReadMore: https://rauljordan.com/rust-concepts-i-wish-i-learned-earlier/

tantivy - Rust 编写的全文搜索引擎库

这个项目允许按每个线程和每个回溯实时内存剖析。

tantivy更接近Apache Lucene,而不是Elasticsearch或Apache Solr。他不是一个现成的搜索引擎服务器,而是一个 crates 。

Tantivy的灵感来自Lucene的设计。

ReadMore:https://github.com/quickwit-oss/tantivy

Type-erasing trait parameters in Rust

  • Rust 中的基本类型擦除
  • 使用类型参数进行类型擦除
  • 擦除所有类型参数
  • ...

例子

代码语言:javascript
复制
#[tokio::main]
async fn main() {
    let mut service_map = ServiceMap::default();
    service_map.register(Foo {});
    service_map.register(Bar {});

    // prints: "got i64: 123"
    service_map.call(123i64).await;

    // prints: Point(123.0, 456.0)
    service_map.call((123.0f64, 456.0f64)).await;

    // prints nothing, since no service has been registered for `Request = &str`
    service_map.call("str").await;
}

struct Foo {}

impl Service<i64> for Foo {
    type Response = String;
    type Future = Ready<String>;

    fn call(&mut self, req: i64) -> Ready<String> {
        ready(format!("got i64: {req:?}"))
    }
}

#[derive(Debug)]
struct Point(f64, f64);

struct Bar {}

impl Service<(f64, f64)> for Bar {
    type Response = Point;
    type Future = Ready<Point>;

    fn call(&mut self, req: (f64, f64)) -> Ready<Point> {
        ready(Point(req.0, req.1))
    }
}

ReadMore:https://fredrik.space/posts/rust-erased-trait-parameters

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust语言学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 希望你能早点学到的 Rust 技巧
  • tantivy - Rust 编写的全文搜索引擎库
  • Type-erasing trait parameters in Rust
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档