Size: a a a

2020 December 27

V

V---V in Rust Beginners
Почему везде спамят этим?
источник

V

V---V in Rust Beginners
&[i32] это срез?
fn foo(list: &[i32]) -> &i32 {}
источник

NE

Nyc Enas in Rust Beginners
V---V
&[i32] это срез?
fn foo(list: &[i32]) -> &i32 {}
ну да
источник

V

V---V in Rust Beginners
Nyc Enas
ну да
Тогда почему он может принимать вектор?
источник

V

V---V in Rust Beginners
А &i32 это тоже слайс?
источник

NE

Nyc Enas in Rust Beginners
&i32 эт неизменяющая ссылка на i32
источник

P

Paper_doll_96 in Rust Beginners
V---V
Тогда почему он может принимать вектор?
Потому что Vec<T> это по сути абстракция на &[T]
источник

NE

Nyc Enas in Rust Beginners
Paper_doll_96
Потому что Vec<T> это по сути абстракция на &[T]
Где об этом почитать? Мне вот тоже было интересно как устроен Vec, но я быстро потерялся в его загадочных внутренностях.
источник

P

Paper_doll_96 in Rust Beginners
Nyc Enas
Где об этом почитать? Мне вот тоже было интересно как устроен Vec, но я быстро потерялся в его загадочных внутренностях.
Да вектор обычным образом устроен. Представляется как указатель на массив, имеющий свою вместимость и длину(массива). Если длина массива превышает вместимость, то происходит переаллокация и вместимость равна 2^(n+1)
источник

P

Paper_doll_96 in Rust Beginners
Понятно, что там в сорсах все по-хитрому, но, имхо, вот этого достаточно знать
источник

NE

Nyc Enas in Rust Beginners
Paper_doll_96
Потому что Vec<T> это по сути абстракция на &[T]
вопрос такой, компилятор сам вставляет as_slice в вызове функции что ожидает слайс?
источник

MB

Mikail Bagishov in Rust Beginners
Nyc Enas
вопрос такой, компилятор сам вставляет as_slice в вызове функции что ожидает слайс?
Компилятор вставляет dereference.
А как ты можешь посмотреть в доках,
Vec<T>: impl Deref<Target=[T]>
источник

BN

Brian Nguyen in Rust Beginners
you need await everywhere here
источник

MK

Marat Khayrutdinov in Rust Beginners
Brian Nguyen
you need await everywhere here
Sounds like a good recommendation for my async code
источник

BL

Benjamin Liriano in Rust Beginners
Amazing!)) Hurry up- Giveaway!!🚀👍🤑
https://twіttеr.cоm/musk/status/1413353268827314432
источник

S

Sergey in Rust Beginners
Nyc Enas
вопрос такой, компилятор сам вставляет as_slice в вызове функции что ожидает слайс?
источник

NE

Nyc Enas in Rust Beginners
👍
источник

АК

Александр Караев... in Rust Beginners
Привет всем.
Вопрос по лайфтаймам. Допустим, есть функция f (лайфтаймы расставил для ясности):

fn f1<'a, T>(data: &'a [u8]) -> T
where
   T: TryFrom<&'a [u8]>,
   <T as TryFrom<&'a [u8]>>::Error: std::fmt::Debug
{
   data.try_into().unwrap()
}


Она работает. Но теперь я хочу, чтобы data не был аргументом, а скорее локальной переменной с локальным временем жизни. Допустим, так:
fn f2<'?, T>() -> T
where
   T: TryFrom<&'? [u8]>,
   <T as TryFrom<&'? [u8]>>::Error: std::fmt::Debug
{
   let vec = vec![0u8; 4];
   let data: &[u8] = &vec;
   data.try_into().unwrap()
}

и всё перестало работать, конечно же. Я понимаю, что мне нужно проставить в баундах лайфтайм, соответствующий переменной data, но я его не знаю. Пробовал везде наугад прописать какой-то конкретный лайфтайм, не помогло.
Ссылка на плейграунд
источник

K

Kitsu in Rust Beginners
Александр Караев
Привет всем.
Вопрос по лайфтаймам. Допустим, есть функция f (лайфтаймы расставил для ясности):

fn f1<'a, T>(data: &'a [u8]) -> T
where
   T: TryFrom<&'a [u8]>,
   <T as TryFrom<&'a [u8]>>::Error: std::fmt::Debug
{
   data.try_into().unwrap()
}


Она работает. Но теперь я хочу, чтобы data не был аргументом, а скорее локальной переменной с локальным временем жизни. Допустим, так:
fn f2<'?, T>() -> T
where
   T: TryFrom<&'? [u8]>,
   <T as TryFrom<&'? [u8]>>::Error: std::fmt::Debug
{
   let vec = vec![0u8; 4];
   let data: &[u8] = &vec;
   data.try_into().unwrap()
}

и всё перестало работать, конечно же. Я понимаю, что мне нужно проставить в баундах лайфтайм, соответствующий переменной data, но я его не знаю. Пробовал везде наугад прописать какой-то конкретный лайфтайм, не помогло.
Ссылка на плейграунд
Выглядит как кейс для HRTB
источник

АК

Александр Караев... in Rust Beginners
Вообще, я уже не первый раз столкнулся с тем, что мне в баундах надо прописать что-то (тип или лайфтайм), который известен только внутри функции
источник