文件名称:escher:使用asyncawait转换的自我参照结构
文件大小:203KB
文件格式:ZIP
更新时间:2024-04-03 22:30:51
Rust
埃舍尔 使用异步堆栈的自引用结构 怎么运行的 自我参照的问题 自引用结构的主要问题是,如果以某种方式构造了这种结构,则编译器将不得不静态证明其不会再次移动。 这种分析是必要的,因为任何移动都会使自指针失效,因为rust中的所有指针都是绝对内存地址。 为了说明为什么这样做是必要的,想象一下我们定义了一个自引用结构,该结构同时包含一个Vec和一个指向它的指针: struct Foo { s: Vec < u8> , p: & Vec < u8> , } 然后,假设我们有一种获取该结构实例的方法。 然后,我们可以编写以下代码,在安全生锈的情况下创建一个悬空的指针! let foo = Foo :: magic_construct (); let bar = foo; // move foo to a new location println! ( "{:?}" , b
【文件预览】:
escher-master
----.gitignore(19B)
----src()
--------lib.rs(6KB)
----assets()
--------async-stack.png(78KB)
--------almost-foo.png(62KB)
--------moves-invalidate-pointer.png(73KB)
----Cargo.toml(151B)
----README.md(5KB)