タグ付けされた質問 「higher-rank-types」


4
ランク付けされたトレイトバインドされたトレイトから関連付けられたタイプを返すにはどうすればよいですか?
関連する型を逆シリアル化する機能を持つトレイトがあります。ただし、その関連付けられた型には、呼び出し元が決定する存続期間が必要なため、より高いランクの特性を使用する別の特性を持っているため、どの存続期間でも逆シリアル化できます。 この関連する型を返すクロージャーを使用する必要があります。 これを行うには、次のコードがあります。 #![allow(unreachable_code)] use std::marker::PhantomData; trait Endpoint: for<'a> EndpointBody<'a> {} trait EndpointBody<'a> { type Out: 'a; fn serialize(body: &Self::Out) -> Vec<u8>; fn deserialize(raw_body: &'a [u8]) -> Self::Out; } // ///////////////////////////////////////////////////////// /// Trait object compatible handler trait Handler { fn execute(&self, raw_body: &[u8]) -> Vec<u8>; } /// Wraps a function …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.