假设我有Union
:
SomeUnion = Union{Int, String}
Run Code Online (Sandbox Code Playgroud)
有没有一种方法来提取形成这种联合的类型集合?例如 ....
union_types(SomeUnion) # => [Int, String]
Run Code Online (Sandbox Code Playgroud) 来自Rust文档.
into_raw函数使用一个框并返回原始指针.它不会破坏T或释放任何内存.
在这段代码中:
fn main() {
let b = Box::new("hello".to_owned());
let a: *mut String = Box::into_raw(b);
}
Run Code Online (Sandbox Code Playgroud)
我没有使用unsafe
块,因此我们应该没有内存泄漏.因此,如果Box对象在消耗后没有责任释放内存,但是内存没有被释放并且可以进一步使用,并且原始指针不是由资源拥有的,谁将释放内存?
这是显示我的问题的抽象示例,从我尝试重构一些Rust代码并同时学习Rust中提取.
struct GenStruct<T> {
field: T,
}
trait Marker {}
trait Return {}
impl Marker for i32 {}
impl Marker for u32 {}
// actually implement `Return` for GenStruct<M: Marker>,
// but compiler don't recognize that
impl Return for GenStruct<i32> {}
impl Return for GenStruct<u32> {}
struct Fake;
trait Trait<M: Marker> {
type Ret: Return;
fn meth(m: M) -> Self::Ret;
}
impl<M: Marker> Trait<M> for Fake {
type Ret = GenStruct<M>;
fn meth(m: M) -> GenStruct<M> {
GenStruct { field: …
Run Code Online (Sandbox Code Playgroud)