172 похожих чатов

Уважаемые знатоки! Подскажите, пожалуйста, начинающему! (врываюсь в Rust, решаю алгозадачки с leetcode,

etc.)
Вопрос: как бы мне так объявить тип входного параметра, чтобы можно было передавать и массив и вектор чисел (любых), чтобы, например, просто итерироваться по коллекции или сравнивать элементы, etc.
Или я херню хочу и так в Rust не принято?

9 ответов

17 просмотров

слайсом сделай, у тебя вектор и массив к слайсу можно привести. Ну или итератор какой-нибудь

Anton-Konovalov Автор вопроса
Пух
слайсом сделай, у тебя вектор и массив к слайсу мо...

И я смогу "скормить" туда хоть массив, хоть вектор?

foo<I: IntoIterator<Item=i32>(anything: I)

Anton Konovalov
И я смогу "скормить" туда хоть массив, хоть вектор...

Да, но нужно будет только взять от них слайс сперва. Но если нужно только итерироваться то используй итератор как предложили выше. А ещё есть AsRef трейт, можешь сделать impl AsRef<[T]>

Возвращай итератор, это хорошая абстракция для коллекции

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

Anton-Konovalov Автор вопроса
Стас Выщепан
Возвращай итератор, это хорошая абстракция для кол...

Про результат речи нет, нужен обобщённый тип для входного параметра: массива или вектора чисел (любых)

Anton Konovalov
Про результат речи нет, нужен обобщённый тип для в...

Кусок памяти где элементы лежат один за другим это [T], из вектора и массива можно взять ссылку на это &[T], называется слайс

Anton Konovalov
Про результат речи нет, нужен обобщённый тип для в...

Слайс, если массив или вектор (кусок памяти) или итератор (любая коллекция)

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
14
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
11
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
Карта сайта