4
タイプの1つが必要ない一般的なデータ型を使用しようとしています(グラフのエッジ加重)。私はこのようになりますされ、このために入力することはありません使用することを考えてきた:タイプのいずれかが不要なジェネリックタイプを指定するにはどうすればよいですか?
#![feature(never_type)]
struct Foo<T> {
bar: T
}
impl<T> Foo<T> {
fn foo(&mut self, bar: T) {
self.bar = bar;
}
}
fn main() {
let mut foo: Foo<!> = Foo { bar: "nada" };
foo.foo("nada");
}
をこれは明らかに"nada"
プレースホルダ型不一致が生じますが、ただ何も入力しないと、他のエラーが発生します。 !
はここで使用する正しいタイプですか?もしそうなら正しい構文は何ですか?
私は!
の代わりに()
を使用して動作させていますが、これはタイプの適切な選択であるかどうか確信がありません。 ()
にはメモリフットプリントがないので、効率の点で違いはないはずです。
この回答は正しいですが、タイプとして '! 'を使用したいと思う*回があります。さらに読む:[RFC 1216](https://github.com/rust-lang/rfcs/blob/master/text/1216-bang-type.md)と対応する[追跡の問題](https:// github。 com/rust-lang/rust/issues/35121)。 – Shepmaster
注意 '!'は使用できないとは言わず、構造体だけはそれほど有用ではありません(ただし、コード自体が '!'のように実行されることはありません)。私は実際にRFC 1216が好きです。 – starblue