Size: a a a

2020 August 31

ΑZ

Αλεχ Zhukovsky in rust_offtopic
struct vectord {
   short len;    // there must be at least one other data member
   double arr[]; // the flexible array member must be last
   // The compiler may reserve extra padding space here, like it can between struct members
};

struct vectord *vector = malloc(...);
vector->len = ...;
for (int i = 0; i < vector->len; i++)
    vector->arr[i] = ...;  // transparently uses the right type (double)

Вот
пример из доки. и я тут вижу хип
источник

p

polunin.ai in rust_offtopic
Constantine Drozdov
как я должен узнать, можно ли писать в 22 индекс этой структуры
источник

CD

Constantine Drozdov in rust_offtopic
Αλεχ Zhukovsky
struct vectord {
   short len;    // there must be at least one other data member
   double arr[]; // the flexible array member must be last
   // The compiler may reserve extra padding space here, like it can between struct members
};

struct vectord *vector = malloc(...);
vector->len = ...;
for (int i = 0; i < vector->len; i++)
    vector->arr[i] = ...;  // transparently uses the right type (double)

Вот
пример из доки. и я тут вижу хип
char storage[sizeof(vectord) + sizeof(double) * n];
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Constantine Drozdov
char storage[sizeof(vectord) + sizeof(double) * n];
Окей

struct MyFlexibleSlice<const N> {
   info: u32,
   data: [u8; N],
}

Так
устроит?
источник

CD

Constantine Drozdov in rust_offtopic
Αλεχ Zhukovsky
Окей

struct MyFlexibleSlice<const N> {
   info: u32,
   data: [u8; N],
}

Так
устроит?
это все еще шаблон
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Constantine Drozdov
это все еще шаблон
это не шаблон, а генерик. Но не суть важно.

Так в чем разница?
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
работать будет так же
источник

CD

Constantine Drozdov in rust_offtopic
Αλεχ Zhukovsky
работать будет так же
нет, N должно быть constant expression
источник

С

Слава in rust_offtopic
Вы тут изобретаете зависимые типы?
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Constantine Drozdov
нет, N должно быть constant expression
а как компилятор определит сколько места на стеке саллоцировать под этот storage?
источник

T1

Tony 123 in rust_offtopic
а, так ты хочешь variable length stack
источник

p

polunin.ai in rust_offtopic
Слава
Вы тут изобретаете зависимые типы?
у кости массив неизвестного размера есть с которым он работает, и плачет что в расте так сделать нельзя. ну не дебил?
источник

T1

Tony 123 in rust_offtopic
нет, в расте статически пока ты размер должен знать
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
polunin.ai
у кости массив неизвестного размера есть с которым он работает, и плачет что в расте так сделать нельзя. ну не дебил?
в рсте можно, но не на стеке
источник

CD

Constantine Drozdov in rust_offtopic
Αλεχ Zhukovsky
а как компилятор определит сколько места на стеке саллоцировать под этот storage?
в си есть VLA, размер массива на стеке не обязан быть constant expression
источник

p

polunin.ai in rust_offtopic
Αλεχ Zhukovsky
в рсте можно, но не на стеке
на стеке через трансмьюты и #[repr(C)] можно, но нахуя
источник

CD

Constantine Drozdov in rust_offtopic
Tony 123
а, так ты хочешь variable length stack
это соседи
источник

CD

Constantine Drozdov in rust_offtopic
и я все еще не понимаю, как Rust наводит тут безопасность (only unsafe?)
источник

T1

Tony 123 in rust_offtopic
Constantine Drozdov
и я все еще не понимаю, как Rust наводит тут безопасность (only unsafe?)
?
источник

p

polunin.ai in rust_offtopic
Constantine Drozdov
и я все еще не понимаю, как Rust наводит тут безопасность (only unsafe?)
всмысле как наводит безопасность? это обычный код на расте
источник