- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
pub trait Normalize<T> {
type Output;
fn normalize(&self, baseline_value: &T) -> Self::Output;
fn denormalize(&self, baseline_value: &T) -> Self::Output;
}
impl<T, U, W> Normalize<T> for U
where
T: Copy,
U: Copy + Div<T, Output = W> + Mul<T, Output = W>,
{
type Output = W;
fn normalize(&self, baseline_value: &T) -> Self::Output { *self / *baseline_value }
fn denormalize(&self, baseline_value: &T) -> Self::Output { *self * *baseline_value }
}
impl<T> Normalize<CanvasSize<T>> for Rectangle
where
T: Copy,
f32: Normalize<T, Output = f32>
{
type Output = Rectangle;
fn normalize(&self, baseline_value: &CanvasSize<T>) -> Self::Output {
Rectangle {
x1: self.x1.normalize(&baseline_value.width),
y1: self.y1.normalize(&baseline_value.height),
x2: self.x2.normalize(&baseline_value.width),
y2: self.y2.normalize(&baseline_value.height),
}
}
fn denormalize(&self, baseline_value: &CanvasSize<T>) -> Self::Output {
Rectangle {
x1: self.x1.denormalize(&baseline_value.width),
y1: self.y1.denormalize(&baseline_value.height),
x2: self.x2.denormalize(&baseline_value.width),
y2: self.y2.denormalize(&baseline_value.height),
}
}
}
А почему это не часть дженерика?
Например, для (условного) трейта Iterator<TCollection> тип Output должен являться типом значений, хранящихся в TCollection. Нет смысла делать Iterator<TCollection, Output>: этим мы бы показали, что у нас для каждой коллекции может быть неограниченное количество разных итераторов, различающихся только выходным значением.
См.: https://doc.rust-lang.org/book/ch20-02-advanced-traits.html#associated-types для менее запутанного объяснения.
видишь проблему?
Я могу два раза его реализовать.
А если так
Чтобы можно было писать «Desktop YOU SHUT THE FUCK UP JAVASCRIPTS SAVED MILLIONS OF JEWS!»
В то время, когда Нетаньяху проводит геноцид, они используют иврит!
Я начинаю компанию по полному бойкоту PHP. Присоединяйтесь!
Быть ПХП программистом должно быть стыдно!!
так вот, T_PAAMAYIM_NEKUDOTAYIM это "::" оказывается, а не двоеточие
>The T_PAAMAYIM_NEKUDOTAYIM token first appeared in version 0.5 of the Zend Engine, which powered PHP 3, and which was developed in Israel.
>This continues to remind us of the major contribution the Israeli community has brought to PHP by laying its modern foundation.
https://wiki.php.net/rfc/rename-double-colon-token
А Палестина нет.
Вы еще спрашиваете, почему я за Палестину?
· Бесплатно: Поскольку деньги запрещены, за вход платить не нужно. Все мероприятия бесплатны.
Балабоба ещё утверждает, что подадут полдник, а потом пригласят обедать
Пускают ли туда иноверцев и атеистов, не проверял.
Так что «PHP» своей популярностью обязан (((Гутмансу))) и (((Сураски))).
::
Двойное двоеточие можно заменить на точку (как сделано в куче ЯП) но точка короче
"->" тоже можно заменить на точку (как сделано в куче ЯП) то точка корочке
"new" не нужен, его можно убрать (как сделано в куче ЯП) но без new короче
"$" не нужен,. но вы поняли, да?
-> имеет смысл в крестах, ибо там есть разыменование указателей, «new» тоже имеет смысл во «взрослых» ЯП, где есть несколько способов инстанцирования.
Доллар имеет смысл в шелле, ибо там это макроподстановка. Ну и в Перле, потому что в Перле нужно указывать тип контекста. В «PHP» же на ровном месте создали раздельные неймспейсы для переменных и функций, зато можно написать function f($f), и никакого затенения не будет.
Since we are in 2020s, this question should not be asked by a web developer. If you have employed such a guy, trust me, he/she should be fired.
We are using many lovely features in our project, some from ESNext, and some are popular in development but not supported natively by any browser. So we compile those parts to legacy JavaScript code to make the extension work for more browsers.
For example, we build UI in Violentmonkey with Vue.js, a popular framework good at building complexed UIs. It depends on quite a few custom annotations which need to be transformed to vanilla JavaScript and CSS so that the browser can understand.
There are also some constants injected at compilation time so that we don’t need to hard-code them.
В расте не вызываются drop у статических полей.
нехуй типа их вообще юзать