Как статически обеспечить, чтобы универсальный тип имел конкретное представление? - PullRequest
0 голосов
/ 07 июня 2018

У меня есть общий struct Foo<T>, который я хочу использовать для FFI.Например, следующее может быть использовано для реализации отображения памяти:

use std::marker::PhantomData;
use memmap::MmapMut;

#[repr(C)]
struct Shared<T> {
    foo: MmapMut,
    _marker: PhantomData<T>,
}

Я хочу, чтобы это было безопасно для FFI, поэтому я бы хотел, чтобы T также имелбыть repr(C).Проблема в том, что представления не являются чертами в Rust, и поэтому я не вижу простого способа обеспечить это статически, что-то вроде struct Foo<T: ReprC> было бы неплохо, но, насколько я могу судить, не существует.Можно ли использовать макрос?

1 Ответ

0 голосов
/ 07 июня 2018

Возможно, вы могли бы создать черту ReprC и использовать ее как черту, привязанную к вашим методам.Это не исполнение того, что действительно имеет значение, но это может быть лучше, чем документация.

...