2
:Rustでオーバーロード演算子でconstを使用できますか?このコードで
#![allow(dead_code)]
use std::ops::Add;
struct Foo(i32);
const X: i32 = 1;
const Y: i32 = X + X;
const A: Foo = Foo(1);
const B: Foo = A + A;
impl Add for Foo {
type Output = Foo;
fn add(self, rhs: Foo) -> Foo {
Foo(self.0 + rhs.0)
}
}
コンパイラは言う:
error[E0015]: calls in constants are limited to struct and enum constructors
--> src/main.rs:8:16
|
8 | const B: Foo = A + A;
| ^^^^^
|
note: a limited form of compile-time function evaluation is available on a nightly compiler via `const fn`
--> src/main.rs:8:16
|
8 | const B: Foo = A + A;
| ^^^^^
が最高の代替は何ですか?
* const関数で特殊化/サブタイプ化がどのように機能するかわかりません。* =>これは大きな問題ですね。私はチームがそれをどのように処理しようとしているのか、定数式で算術などの共通の特性を使用する能力がないと考えていません...彼らはむしろ無意味になるでしょう。 –