Охуенно выразительно и красиво. Спасибо статической типизации.
struct Node<T> {
prev: Raw<T>,
next: Link<T>,
elem: T,
}
type Link<T> = Option<Box<Node<T>>>;
struct Raw<T> {
ptr: *mut Node<T>,
}
pub struct LinkedList<T> {
len: usize,
head: Link<T>,
tail: Raw<T>,
}
@kuzy000 let v = vec![1, 2, 3, 4, 5]; // v: Vec<i32>
@anonymous чо дурак чтоле? из определения не понятно?
@anonymous let a = vec![1; 10]; //десять единичек
@anonymous бля не унижай плз, я сам хотел раст похуесосить
вот этот код скомпилировался например и ебнулся в рантайме:
fn main() {
let a: [i32; 4] = [1, 2, 3, 4]; // As usual, the type annotation is optional.
println!("The fifth element is {}", a[4]);
}
thread '<main>' panicked at 'index out of bounds: the len is 4 but the index is 4', <anon>:3
playpen: application terminated with error code 101
@l29ah чо, зависимых типов не завезли до сих пор?
@kuzy000 можно написать расширение для компилятора, они похоже примерно на макросы ракетки, только раз в 10 уебищно выглядящее.
@l29ah ну а хуле ты думал, хочешь чтобы все хуесосы-дармоеды, занимающиеся теориями типов сразу работу потеряли?
@l29ah Действительно, тут сложно понять, что тип переменной, хранящий результат выполнения функции, будет совпадать с типом возвращаемого значения.
@kuzy000 и кстати не std::vector, там фиксированый размер
@l29ah и баги будет очень интересно разгребать с таким кодом
@komar еблан, это и есть список (на русте).