Size: a a a

2021 May 26

KR

Kai Ren in rust_offtopic
источник

TK

Traveller Kolsky in rust_offtopic
Или branded types, но что-то оба варианта плоховато гуглятся
источник

AN

Alex Noname in rust_offtopic
так а где принципиальное отличие у нас?
источник

TK

Traveller Kolsky in rust_offtopic
С ними доказательство не построишь
источник

AN

Alex Noname in rust_offtopic
доказательство чего?
источник

KR

Kai Ren in rust_offtopic
То есть это всё такие же костыли к завтипам как plug+unplug и type families к rank-2 полиморфизму для монад в Расте
источник

AN

Alex Noname in rust_offtopic
а как ты определяешь костыли?
источник

TK

Traveller Kolsky in rust_offtopic
Представь, что сигнатура функции является теоремой некоторой, и ты её обязан доказать в теле
источник

TK

Traveller Kolsky in rust_offtopic
Понимаю, что оно так должно работать
источник

AN

Alex Noname in rust_offtopic
ну это какое-то слабое определение. у меня язык тьюринг полный. я что хочешь могу доказать
источник

TK

Traveller Kolsky in rust_offtopic
С брендированными типами можно сделать эффективную индексацию, но нельзя заставить компилятор проверить, что он не unsound
источник

TK

Traveller Kolsky in rust_offtopic
В общем, бесполезная фигня так-то)
источник

AN

Alex Noname in rust_offtopic
а как ты с завтипами что то проверяешь?
источник

AN

Alex Noname in rust_offtopic
точно так же там где то внутри get_unchecked(i)
источник

TK

Traveller Kolsky in rust_offtopic
Говоря, например: "Обязуюсь вернуть беззнаковое число, меньшее длины такой-то коллекции"
источник

TK

Traveller Kolsky in rust_offtopic
И оно прямо в сигнатуре функции в качестве возвращаемого типа
источник

AN

Alex Noname in rust_offtopic
я думал там похожий трюк с лайфтаймами.
источник

TK

Traveller Kolsky in rust_offtopic
С лайфтаймами на выходе будет просто Index<'id>
источник

AN

Alex Noname in rust_offtopic
ты обязыешься вернуть лайфтайм 'a < 'b например. повсюду в расте.
источник

RP

Roman Proskuryakov in rust_offtopic
так, а про политику больше не говорим?
источник