group-telegram.com/alisa_rummages/187
Create:
Last Update:
Last Update:
&[T; N]
автоматически умеет приводиться к &[T]
, поэтому третий код, конечно, работает в обеих вариациях.
Остается вопрос, что происходит при выводе типов. На практике оказывается, что b2
работает, а a2
не работает, т.е. тип элемента массива "жадно" выводится исходя из первого элемента. a1
и b1
по какой-то причине при этом оба работают. Таким образом, правильный ответ — a2.
Зная, что загвоздка в выводе типов заключается в приравнии типов, умеющих друг к другу coerce'иться, не в том порядке, угадайте, какие строки из следующих приведут к ошибке:
fn unify<T>(_x: T, _y: T) {}
unify(b"a", b"a" as &[u8]); // 1
unify(b"a" as &[u8], b"a"); // 2
if true { b"a" } else { b"a" as &[u8] }; // 3
if true { b"a" as &[u8] } else { b"a" }; // 4
Подсказка:
true
в if
не влияет на вывод типов, с тем же успехом там могло быть любое другое условие.BY Алиса копается
Warning: Undefined variable $i in /var/www/group-telegram/post.php on line 260
Share with your friend now:
group-telegram.com/alisa_rummages/187