Size: a a a

2020 April 03

AZ

Alex Zhukovsky in rust_offtopic
дальше, как выразить тип "(число от 3 до 9 ИЛИ 7 ИЛИ от 22 до 58 ИЛИ отрицательное) И нечетное"?
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
дальше, как выразить тип "(число от 3 до 9 ИЛИ 7 ИЛИ от 22 до 58 ИЛИ отрицательное) И нечетное"?
Переписать WeirdRange, он писал раньше уже
источник

S

Soul in rust_offtopic
запихнуть все эти условия внутрь проверяющей функции
источник

p

polunin.ai in rust_offtopic
То есть создавать новый struct { d: i32 } на каждый чих
источник

AZ

Alex Zhukovsky in rust_offtopic
Soul
запихнуть все эти условия внутрь проверяющей функции
смысл реф типов чтобы не писать ифчики, а писать это на уровне типов
источник

S

Soul in rust_offtopic
и сделать чтоб конст-генерик принимал проверяющую функцию и возвращал тип
источник

AZ

Alex Zhukovsky in rust_offtopic
Soul
и сделать чтоб конст-генерик принимал проверяющую функцию и возвращал тип
на каждую комбинацию параметров типчик не напишешь руками, это муторно
источник

AZ

Alex Zhukovsky in rust_offtopic
ну то есть у меня должен быть WierdRange, WeirdRangeWithThreeConditions, WeirdRangeWithThreeConditionsAndNegative,. ..
источник

AZ

Alex Zhukovsky in rust_offtopic
я бы такое писать не хотел
источник

AZ

Alex Zhukovsky in rust_offtopic
а еще тебе нужны конвертации между ними, например WeirdRange<7,9> должно автоматически работать везде где ожидается WeirdRange<8,9> в качестве параметра и WeirdRange<0,11> в качестве результата
источник

AK

Alexander Krivitskiy in rust_offtopic
Doge Shibu
Практически любые предприятия сейчас автоматизируются именно через веб приложения  + соответсвующий бэкенд.

Очень мало где для этого до сих пор десктоп приложения используют.
Капиталисты чёртовы автоматизируют всё, лишают народ рабочих мест. Бэкендеры - слугы дъиявола!
источник

S

Soul in rust_offtopic
Alex Zhukovsky
а еще тебе нужны конвертации между ними, например WeirdRange<7,9> должно автоматически работать везде где ожидается WeirdRange<8,9> в качестве параметра и WeirdRange<0,11> в качестве результата
а с какими-то волшебными типами  и теми множествами описанных тобой условий есть какая-то автоконвертация на основе пересечения условий?
источник

AZ

Alex Zhukovsky in rust_offtopic
Soul
а с какими-то волшебными типами  и теми множествами описанных тобой условий есть какая-то автоконвертация на основе пересечения условий?
ну легко, так и пишешь же
источник

p

polunin.ai in rust_offtopic
Soul
а с какими-то волшебными типами  и теми множествами описанных тобой условий есть какая-то автоконвертация на основе пересечения условий?
Да,
fn foo(x: int{x>10}) {
 let y: int{y>9} = x;
}
Это сработает
источник

S

Soul in rust_offtopic
а так comptime fn DumbCheckedType(innerStorageType: type, check: fn(data: innerStorageType) bool) type, и для любых условий ты используешь этот тип и запихиваешь в него функцию проверки с любым количеством условий
источник

DS

Doge Shibu in rust_offtopic
Кстати, а кто-нибудь видел вживую owning версию либы для работы с flatbuffer'ами?
источник

S

Soul in rust_offtopic
polunin.ai
Да,
fn foo(x: int{x>10}) {
 let y: int{y>9} = x;
}
Это сработает
Ну здорово. А в нетривиальных случаях?
источник

AZ

Alex Zhukovsky in rust_offtopic
Soul
а с какими-то волшебными типами  и теми множествами описанных тобой условий есть какая-то автоконвертация на основе пересечения условий?
type User1 = { username: string, password?: string }
type User2 = User1 & { password: string }
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Кстати, а кто-нибудь видел вживую owning версию либы для работы с flatbuffer'ами?
Flatbuffer?
источник

AZ

Alex Zhukovsky in rust_offtopic
вот коклин например
источник