首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

源码阅读 | 第一期 : 名称解析

第一类和第三类问题,相信对于 非 Rust 新手应该是可以避开了。一般阅读 Rust 源码最常见的问题就是第二类问题,缺乏对程序要处理问题领域的信息的了解。...Rust 中的名称解析 经过查阅名称解析相关的资料,了解到 Rust 编译器在 2016 年引入 RFC 1560 来改进名称解析的处理过程。...第二阶段是从整个映射中根据一个名称来查找定义。这样做的目的是解耦。 当前 RFC 1560 已经被实现,在宏扩展期间不会做 全名解析,只解析导入和宏。...Cargo.toml 中可以看到一些依赖 crate: rustc_ast, 该库中定义了 Rust 内部用的 AST 数据结构 rustc_arean,编译器内部全局内存池,使用它来分配内存,被分配的内存生命周期为...看得出来,在 lib.rs 中定义的基本都是 上面文档中展示的那些 用于在名称解析过程中使用的结构体或枚举类型。

1.7K30

logstash在Elasticsearch中创建的默认索引模板问题

背景 在ELK架构中,使用logstash收集服务器中的日志并写入到Elasticsearch中,有时候需要对日志中的字段mapping进行特殊的设置,此时可以通过自定义模板template解决,但是因为...logstash默认模板创建索引 使用logstash收集日志时, 如果对日志中的字段mapping没有特殊的要求,使用以下的logstash 配置文件1.conf就可以满足需求: 1.conf: input...不使用logstash默认模板创建索引 如果不想使用logstash默认创建的模板创建索引,有两种解决方式,一是可以在logstash配置文件中的output中指定index索引名称, 如2.conf所示...索引的type问题 默认情况下,logstash向Elasticsearch提交创建的索引的type为"logs",如果需要自定义type, 有两种方式,一种是在output里指定document_type...使用自定义模板 使用自定义模板有两种方式,一种是启动logstash之前先调用Elasticsearch的API创建模板,并指定模板匹配的索引名称pattern以及模板优先级,具体可参考官方文档 https

7.4K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    将 Python 和 Rust 融合在一起,为 pyQuil® 4.0 带来和谐

    我们决定使用 PyO3 crate 作为在 Rust 中构建 Python 软件包的首选框架。它被广泛使用并有很好的文档。...相反,使用 newtype 包装器需要手动实现。quil-rs 中的这个例子说明了这个问题。在 Quil 中,一个 EXCHANGE a b 指令交换内存引用 a 和 b 中的值。...对于我们来说,这是一个重大问题,特别是因为 quil-rs 在很大程度上依赖于 Rust 的类型系统来表示 Quil 程序。如果我们能够同时拥有两个世界的最佳优势呢?...例如,impl_hash! 宏利用包装的 Rust 类型上的 Hash 实现,在包装类型上实现了 Python 的 __hash__ 方法。...总的来说,我们需要包装一个异步 Rust 函数,使其在 Python 中呈现为同步函数,同时确保在主线程上处理信号,以便尊重操作系统信号。让我们来做吧。

    38320

    Rust for Linux | 用 Rust 写 Linux 内核模块

    但是内核模块要使用内核提供的基础设施(通过调研内核函数的方式),所以内核和内核模块都通过符号表的形式向外部世界导出符号的相关信息,这种导出形式在代码层面是以EXPORT_SYMBOL宏定义形式存在。...在根目录下执行命令 make rust-analyzer 之后会创建 rust-product.json文件。...// 所以这里直接导入 kernel 库中预加载的一些模块,方便开发者使用。 use kernel::prelude::*; // module! 是一个宏,用于声明内核模块,所以它是必须的。...; // 为 Scull 实现 `kernel::Module` trait // 该方法init相当于C API 中的宏 `module_init`,通过这个方法创建实例 impl kernel:...具体可以参考 rust/kernel/src/miscdev.rs源码。 这个接口设计其实有两个选择,一种是使用 Box 来包装 misc 设备注册,另一种是使用复杂的 Pin API。

    15.2K23

    Rust异步编程之Future初探

    Rust的Future是用来实现异步编程的。今天我们围绕其了解下Rust的异步编程是如何构建。 Rust用async就能轻松创建开销很小的可异步执行的函数,在await时其才会被调度执行。...调度 Rust需要运行时runtime来调度异步任务task,runtime负责调度,检查future的状态。...这里用于唤醒的waker会在每次poll时以context传递下去, 运行时 了解了调度,我们再展开说下运行时。rust的运行时没在标准库中实现,需要依赖第三方的运行时,常用的有tokio。...就比如如下的tokio宏实际是添加了一个多线程(multi thread)的运行时,会阻塞当前线程直到异步任务完成。...Unpin类型,一般可以将其Box::pin到堆上或用宏pin!到栈上来确保其地址在future移动期间是有效的。

    58210

    Rust入坑指南:万物初始

    ("else"); } } 宏 Rust的反射机制提供的功能比较有限,但是Rust还提供了宏来支持元编程。...这里我们说的宏都是类似函数的宏,此外,Rust还有一种宏是类似于属性的宏。它有点类似于Java中的注解,通常作为一种标记写在函数名上方。...这样的宏是通过属于过程宏,它的定义使用了#[proc_macro_attribute]注解。而函数类似的过程宏在定义时使用的注解是#[proc_macro]。...自定义宏需要使用derive注解。(例子来自the book) 我们先来创建一个叫做hello_macro的lib库,只定义一个trait。...result 总结 我们在本文中先后介绍了Rust的两种元编程:反射和宏。其中反射提供的功能能力较弱,但是宏提供的功能非常强大。

    1.3K10

    【Rust日报】 2019-07-08:hunter - 终端下的文件浏览器

    )的API Read More 「嵌入式Rust」使用Apache Mynewt更安全更简单地在STM32 Blue Pill上使用Rust #embeded 这篇文章涵盖了使用声明宏、过程宏来避免在编写嵌入式代码中遇到的坑...为了解决这个问题,作者使用Rust的宏创建了一个新的类型Strn,它表示一个永远不会被修改的以null结尾的字符串。...bin_io Rust中模拟高阶类型的方法 #Higher-KindedType 该文作者提出了一种方法,通过类型参数向下转换泛型trait来模拟当前Rust中的高阶类型/泛型关联类型,并且提供了使用该方法在...Rust中创建Functors,Applicatives和Monads的简单示例。...Read More Rust标准库中array impl用上了const generics #Rust #std #const_generics Read More Rust实现遗传算法并用Python

    92620

    【Rust日报】 2020-06-12 了解 Fuchsia 的 Rust 开发

    了解 Fuchsia 的 Rust 开发 Fuchsia 是 Google 正在开发的一个开源操作系统,最近 fuchsia.dev 上最近更新了很多开发文档,其中 Rust 开发文档最近于 2020-...在已经开放的开发文档里面,Rust 文档相对来说还是比较丰富的,相应的公开讨论频道在:rust@fuchsia.com。.../r/rust/comments/h7dkv2/rust_fuchsia/ GameLisp GameLisp 是一个用于 Rust 游戏开发的脚本语言。...了解详情请看:https://gamelisp.rs/ Shredder 项目 Shredder 项目主要针对于 Rust 的智能指针的“垃圾回收”,更多细节请看博客原文:https://blog.typingtheory.com...derive_aktor 是一个宏库,使用起来还是挺方便的,项目地址:https://github.com/insanitybit/derive_aktor 使用示例: pub struct KeyValueStore

    79610

    Rust的第二次接触-写个小服务器程序

    不优雅的全局静态变量 在通常的软件里,从一些位置或者启动参数读取配置然后以便全局使用是一个再正常不过的事儿吧?但是在Rust里就不太容易了。...然后第二步就是创建一个类型,里面全是引用。这样来减少复制开销。...这个在写上面那个小小服务器程序的过程中碰到了,但是后来我换了一种方法,原来的有问题的sample code找不到了,也不是那么容易碰到的问题。...但是这也就有个问题,那就是外部模块没办法使用这种方式来抽象公共逻辑写法了。 C++习惯对借用理解的冲突 C++写得多了以后,为了减少很多无意义的指针判空和减少拷贝。我们很多地方会用引用。...在写这篇总结的过程中,我又看到篇长长长长长的文章, http://bryangilbert.com/post/code/rust/adventures-futures-tokio-rust/ 写得比较白话文一点

    89320

    Rust的第二次接触-写个小服务器程序

    不优雅的全局静态变量 在通常的软件里,从一些位置或者启动参数读取配置然后以便全局使用是一个再正常不过的事儿吧?但是在Rust里就不太容易了。...然后第二步就是创建一个类型,里面全是引用。这样来减少复制开销。...这个在写上面那个小小服务器程序的过程中碰到了,但是后来我换了一种方法,原来的有问题的sample code找不到了,也不是那么容易碰到的问题。...但是这也就有个问题,那就是外部模块没办法使用这种方式来抽象公共逻辑写法了。 C++习惯对借用理解的冲突 C++写得多了以后,为了减少很多无意义的指针判空和减少拷贝。我们很多地方会用引用。...在写这篇总结的过程中,我又看到篇长长长长长的文章, http://bryangilbert.com/post/code/rust/adventures-futures-tokio-rust/ 写得比较白话文一点

    4.2K30

    GitHub使用AI来推荐项目存储库中的开放问题

    根据GitHub高级机器学习工程师Tiferet Gazit的说法,GitHub去年进行分析和手工整理,创建了一个由300标签名称组成的列表,这些名称被流行的开源库使用。...GitHub最初的问题包含了策划列表中大约300个标签中的任何一个,它还补充了一些可能对初学者友好的问题。...在检测并删除重复的问题之后,还进行了多次培训、验证,最终测试集被跨存储库分离以防止类似内容的数据泄漏,GitHub只使用经过预处理和去噪的问题标题和主体来训练人工智能系统,以确保它在问题打开后立即检测到正确的问题...来自非存档公共存储库的开放问题,至少有一个来自于策划标签列表的标签,根据它们标签的相关性,给出一个置信度评分。在存储库级别,所有检测到的问题主要根据它们的置信度评分进行排序。...数据采集、培训和推理管道每天都在运行,使用预定的工作流程来确保结果保持“新鲜”和“相关”。

    1.6K30

    Rust实战系列-复合数据类型

    宏来模拟一个空文件 通过点运算符 ....Rust 使用 impl 代码块定义方法,和 struct (以及 enum)代码块是分开的,这和大多数面向对象语言在语法上存在差异。...new() 只是封装了创建对象的语法 struct 中的字段默认是私有的,但可以在定义该结构的模块中访问 使用 impl 改进上面的示例代码: #!...使用枚举类型的小技巧: (1)通常和 Rust 的 match 一起使用,构建健壮、可读的代码 (2)和 struct 一样,可以通过 impl 添加方法 (3)Rust 的枚举不只是一组常量,还可以在变量中包含数据...宏(或具有相同功能的其它宏)被打印到控制台。允许多个类型实现“读”特性,可以实现代码的重用,并使 Rust 编译器在不带来额外开销的情况下实现抽象。

    1.5K20

    【Rust日报】2021-11-16 「投票」为Rust标准库添加控制台输入API

    高级输入系统:一个或多个宏,提供格式化输入,用于读取多个值和各种类型; C. 二者都选择:在需要时提供简单的输入宏和高级宏; D. 这些都不是:别的东西。 如果想参与投票,请访问原文投票。...科学计算相关的任务: 矩阵计算 数值分析 对编程语言的要求: 对lambda的良好支持; 简单易用的函数组合; Rust语言本身对lambda(在Rust中称为闭包)、通用组合和函数式编程有很好的支持,...目前Rust语言实现的跟科学计算相关的crate列表,可以在此查看:Scientific Computing 在Rust中测试trait的多个实现 Testing multiple implementations...of a trait in Rust 文中介绍了几种测试trait实现逻辑的实用方法: 基于trait bound的测试; 基于宏和sub-module的测试; 另外也可以使用test-case 这个...在Rust中,和string相关的类型有: &str:字符串切片; String:动态扩容的字符串; Docker Activity:获取docker容器的统计数据和能耗 Get stats and the

    50530

    【Rust 基础篇】Rust 声明宏:代码生成的魔法

    声明宏的基本概念 1.1 声明宏的定义 在Rust中,声明宏是一种特殊的宏,使用macro_rules!关键字来定义。声明宏的基本语法如下: macro_rules!...在main函数中,我们使用了square_sum!宏来计算3和4的平方和,并将结果打印出来。 2.2 带模式匹配的声明宏例子 除了简单的替换,声明宏还可以使用模式匹配来更灵活地处理输入的代码片段。...在main函数中,我们使用了expr_match!宏来匹配不同类型的表达式并打印输出。 2.3 嵌套声明宏 在Rust中,嵌套使用多个声明宏是非常有用的,可以实现更复杂的代码生成和定制化数据结构。...", name); } 在上述例子中,我们定义了一个通用的log宏,它接受一个表示日志级别的表达式level和日志内容的格式化参数( 3.2 领域特定语言(DSL) 宏在Rust中也可以用于创建DSL,...在main函数中,我们使用html_element!宏来声明一个div元素,并设置了一些属性和内容,然后输出生成的HTML代码。

    46430

    听GPT 讲Rust源代码--srctools(17)

    根据请求类型的不同,可能需要调用proc_macro的相关函数来加载和执行过程宏,或者使用proc_macro2和syn库来解析和分析源代码。...这些结构体和相关方法提供了对扁平语法树的基本操作,包括创建节点、查找节点、获取节点的文本内容等。它们在rust-analyzer工具中被广泛使用,用于处理和分析源代码的语法结构。...通常情况下,需要根据实际代码来理解和使用这个 enum。 其他的 enum 没有在你的问题中提到。.../结构体可以通过实现From和Into trait来与其他类型进行转换,从而方便地在创建语法树时进行类型转换和组合。...block.rs文件会分析代码块中的作用域,并处理变量的定义、使用和作用域的嵌套关系。

    15110
    领券