在阅读有关该特征的过程中,我发现Rust 的方法和 C++ 中的析构函数Drop
之间有很多相似之处。drop
两者有什么区别?
我正在研究某个对象的 Flux 可以说Flux < MovieReservation >
。这包含电影 id、名称、时间、标题等信息。所以我想提取有助于创建新
Flux < MovieShowDetail >
. 我的意图是按电影 id 对所有保留进行分组,并将 Flux 分解为一组更小和多个 Flux(如果有的话,就是通量)。就像是
Flux {
movie1 -> Flux<MovieShowDetail>
movie2 -> Flux<MovieShowDetail>
... and so on
}
Run Code Online (Sandbox Code Playgroud)
所以我遇到了这个 groupBy 方法,它应该只做这样的事情。然而,文档确实没有内容,特别是关于如何迭代每部电影及其各自的 Flux。
此外,当我尝试通过尝试和错误来学习时,处理在 groupBy 方法之前的操作后停止。
我试过做
fluxOfSomething
.groupBy( movieReservation -> movieReservation.getMovieId ,
movieReservation -> movieReservation)
Run Code Online (Sandbox Code Playgroud)
这样我就可以遍历每个通量并创建新的 MovieShowDetail 通量。但是,处理永远不会进入这个块。我尝试记录东西,但流程从未进入过它。
flux
.map( movieSomething -> do something)
.groupBy( movieReservation ->
movieReservation.getMovieId , movieReservation ->
movieReservation)
.subscribe("This text doesn't get printed");
Run Code Online (Sandbox Code Playgroud)
我真的需要尽可能多的信息。
java spring reactive-programming project-reactor spring-webflux
Rust 一章指出,注释不会篡改变量的生存期,但是这是真的吗?根据这本书,最长的函数接受两个字符串引用,然后返回更长的字符串。但是在错误情况下
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() {
x
} else {
y
}
}
fn main() {
let string1 = String::from("long string is long");
let result;
{
let string2 = String::from("xyz");
result = longest(string1.as_str(), string2.as_str());
}
println!("The longest string is {}", result);
}
Run Code Online (Sandbox Code Playgroud)
它实际上会改变结果变量的生存期,不是吗?
我们已经告诉Rust,最长函数返回的引用的生存期与传入的引用的生存期较小者相同。
我们在所有权中阅读了函数如何将其参数数据保留在堆栈中。在原始类型的情况下,这可能是一个值,或者是指向堆中驻留的数据的指针。现在,当引用某个东西时,该参数如何在堆栈中表示?