https://t.iss.one/rust_offtopic/67685
Alex Zhukovsky:
вместо методов ToList/ToArray/ToHashSet/... можно было бы сделать один метод To<>
Но из-за того, что List/Array/HashSet/... сами по себе генерики ты не можешь, т.к. тебе надо сделать To<List<>>
а шарп так не разрешает
Alex Zhukovsky:
вместо методов ToList/ToArray/ToHashSet/... можно было бы сделать один метод To<>
Но из-за того, что List/Array/HashSet/... сами по себе генерики ты не можешь, т.к. тебе надо сделать To<List<>>
а шарп так не разрешает
public static T<A> To<T>(this IEnumerable<A> xs)
where T : <>, new(), ICollection<>
{
var ta = new T<A>();
foreach(var x in xs) {
ta.Add(x);
}
return ta;
}
...
{
var data = Enumerable.Range(0, 20);
var set = data.To<HashSet<>>(); // sorcery!
var linkedList = data.To<LinkedList<>>();
var list = data.To<List<>>();
}
Коротко об "удобстве" сишарпаTelegram
Alex Zhukovsky in rust_offtopic
public static T<A> To<T>(this IEnumerable<A> xs)
where T : <>, new(), ICollection<>
{
var ta = new T<A>();
foreach(var x in xs) {
ta.Add(x);
}
return ta;
}
...
{
var data = Enumerable.Range(0, 20);
var set = data.To<HashSet<>>();…
where T : <>, new(), ICollection<>
{
var ta = new T<A>();
foreach(var x in xs) {
ta.Add(x);
}
return ta;
}
...
{
var data = Enumerable.Range(0, 20);
var set = data.To<HashSet<>>();…
Forwarded from Αλεχ Zhukovsky
1. Следствие того, что выражать мысли на ФП можно гораздо более точно. Это аргументация гошников, что им простыня на 100 строк кода иф-элсов понятнее, чем какие-нибудь более серьезные абстракции вроде макрософ и генериков. См статью про сравнение го и Д. То что в 1 стрчоку можно сделать то что на сишарпе делается в 50 - это хорошо, а не плохо.
2. Это сишный синтаксис инопланетный, просто ты к нему привык. Детям в 5 классе в штатах дают хачкель вместо плюсов и они прекрасно его пережеыввают. Потом не понимают что в сишной программе происходит
2. Это сишный синтаксис инопланетный, просто ты к нему привык. Детям в 5 классе в штатах дают хачкель вместо плюсов и они прекрасно его пережеыввают. Потом не понимают что в сишной программе происходит
Forwarded from Αλεχ Zhukovsky
interface (Applicative f, VerifiedFunctor f) => VerifiedApplicative (f : Type -> Type) where
applicativeMap : (x : f a) -> (g : a -> b) ->
map g x = pure g <*> x
applicativeIdentity : (x : f a) ->
pure Basics.id <*> x = x
applicativeComposition : (x : f a) -> (g1 : f (a -> b)) -> (g2 : f (b -> c)) ->
((pure (.) <*> g2) <*> g1) <*> x = g2 <*> (g1 <*> x)
applicativeHomomorphism : (x : a) -> (g : a -> b) ->
(<*>) {f} (pure g) (pure x) = pure {f} (g x)
applicativeInterchange : (x : a) -> (g : f (a -> b)) ->
g <*> pure x = pure (\g' : (a -> b) => g' x) <*> gForwarded from Jack
Вон недавно багу нашли
static UNIT: &'static &'static () = &&();
fn foo<'a, 'b, T>(_: &'a &'b (), v: &'b T) -> &'a T { v }
fn bad<'a, T>(x: &'a T) -> &'static T {
let f: fn(&'static &'a (), &'a T) -> &'static T = foo;
f(UNIT, x)
}
Forwarded from вафля 🧇🍓
Telegram
Rust GameDev — русскоговорящее сообщество | НЕ игра Rust
Русскоговорящее сообщество разработчиков комьютерных игр на языке программирования Rust.
Правила: https://t.iss.one/rust_gamedev_ru/9723
Полезные ресурсы и ссылки (включая оффтоп чат): https://t.iss.one/rust_gamedev_ru/225321
Правила: https://t.iss.one/rust_gamedev_ru/9723
Полезные ресурсы и ссылки (включая оффтоп чат): https://t.iss.one/rust_gamedev_ru/225321
Forwarded from koder
можно как-то заставить раст проаннотировать исходники выведенными типами? Или напечатать тип переменной? Вот это не помогает https://stackoverflow.com/questions/21747136/how-do-i-print-the-type-of-a-variable-in-rust
Forwarded from Jack
Но что аргументом надо принимать &str - в 99% случаев. 1% - https://habr.com/en/post/282708/
Хабр
Rust: От &str к Cow
Одной из первых вещей, которые я написал на Rust'е была структура с &str полем. Как вы понимаете, анализатор заимствований не позволял мне сделать множество веще...