我是一名高级解决方案架构师,但我最近偶然发现了一个让我停下来思考的问题......
对我来说,下面的代码总是应该触发错误,但当我的一位同事问我为什么Eclipse没有显示错误时,我无法回答任何问题.
class A {
public static void main(String... args) {
System.out.println(new Object() == 0);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经调查过,发现在源级别为1.6时确实会抛出一个错误:
incomparable types: Object and int
Run Code Online (Sandbox Code Playgroud)
但现在在1.7中编译好了.
请问,有哪些新功能可以保证这种行为?
我正在尝试将以下 SQL 查询转换为相应的 Rust Diesel 代码:
SELECT COUNT(*)
FROM BookStore
WHERE BookName IN ('Lord of the Rings', 'Hobbit')
GROUP BY StoreId
HAVING COUNT(DISTINCT BookName) = 2
Run Code Online (Sandbox Code Playgroud)
到目前为止我能够将其翻译为:
let bookNames = vec!["Lord of the Rings", "Hobbit"];
let subquery = bookStores::table
.select(count_star())
.filter(bookName.eq_any(bookNames));
Run Code Online (Sandbox Code Playgroud)
我相信这可以翻译为:
SELECT COUNT(*)
FROM BookStore
WHERE BookName IN ('Lord of the Rings', 'Hobbit')
Run Code Online (Sandbox Code Playgroud)
我无法找到GROUP BY和HAVINGSQL 子句的任何 Diesel 等效项。Diesel 中是否存在这些条款?
为什么这样做?
fn main() {
println!("{:.3}", "this is just a test");
}
Run Code Online (Sandbox Code Playgroud)
打印 => thi
虽然这没有?
fn main() {
println!("{:.3}", format_args!("this is just a test"));
}
Run Code Online (Sandbox Code Playgroud)
打印 => this is just a test
这里是游乐场。
对于更多的上下文,我对其背后的推理感兴趣,以及一种无需任何分配就可以做到的方法。
我正在用 Rust开发一个终端游戏,其中有一个write!显示有关渲染和游戏循环的一些统计信息,并且该文本可能很长。现在我读取了终端大小并相应地调整了它的输出,我需要截断该输出,但没有任何分配。当我重构这个时,我认为我非常聪明:
write!(
stdout,
"{} ({} {} {}) {}",
...
)
Run Code Online (Sandbox Code Playgroud)
进入这个:
write!(
stdout,
"{:.10}", // simulate only 10 cols in terminal.
format_args!(
"{} ({} {} {}) {}",
...
)
)
Run Code Online (Sandbox Code Playgroud)
多么不幸,它不起作用……如何在不分配字符串的情况下做到这一点?
rust ×2
autoboxing ×1
compare ×1
eclipse ×1
group-by ×1
having ×1
java ×1
java-7 ×1
rust-diesel ×1