LINUX.ORG.RU

Поиск в Vec<u8>/[u8]

 


0

5

Тема вообще несложная, просто нужно находить в буфере (строка) разделители и выводить потом какое-то из разделённых значений. Этакий awk '{print $K}'. Но что-то смотрю и никакой функции поиска не вижу. Есть для str, но у меня именно Vec<u8> и заморачиваться UTF-8 глупостью не хочу. Что более-менее опытные программисты на расте советуют в этом случае?

Ответ на: комментарий от Esteban_Garcia

Б%ть, нормально написанный цикл в C или в крестах заметно уступает в скорости memchr. А здесь, получается, придётся пользоваться каким-то нечитаемым дерьмом для того чтобы просто найти символ. Чота пожалуй лучше соскочить обратно на сишку.

Joe_Bishop
() автор топика
Ответ на: комментарий от Joe_Bishop

Чота пожалуй лучше соскочить обратно на сишку.

Вот ради этого предложения и была создана тема %)

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)

просто нужно находить в буфере (строка)
Vec<u8>
заморачиваться UTF-8 глупостью не хочу

Вообще должно было было уже это насторожить.

Esteban_Garcia
()
Ответ на: комментарий от Esteban_Garcia

Вообще должно было было уже это насторожить.

Чтобы побить буфер по ASCII разделителям UTF-8 как-бы нафиг не впёрся. И выделение памяти лишнее для строки, да даже копирование тоже не впёрлось.

Joe_Bishop
() автор топика
Ответ на: комментарий от Esteban_Garcia

Чем оно тебе не читаемое? И зачем ты тогда создавал тему?

Чтобы понять, есть ли в его (как оказалось, кривом) стдлибе поиск байта в байтовом массиве. Нет, надо натянуть кучу абстракций, чтобы потом с мучениями их притягивать к текущим нуждам.

Joe_Bishop
() автор топика
Ответ на: комментарий от Joe_Bishop

Нет, надо натянуть кучу абстракций, чтобы потом с мучениями их притягивать к текущим нуждам.

Эти абстракции в итоге компилируются в самые что ни на есть обычные циклы, так что не вижу проблем с ними.

quantum-troll ★★★★★
()
Ответ на: комментарий от Joe_Bishop

Ну и зачем тебе тогда раст, если его сейфети ты хочешь игнорировать и высокоуровневые абстракции тоже? Что без этого останется от раста?

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

Esteban_Garcia
()

Ты хочешь странного, ты и страдай.

HeipaVai1o
()
Ответ на: комментарий от Joe_Bishop

Чота пожалуй лучше соскочить обратно на сишку

Слова не мальчика, но неосилятора.

Virtuos86 ★★★★★
()
Ответ на: комментарий от Joe_Bishop

Ахаха, было бы здорово, а то потом натыкаешься на код таких гениев как ты и жалеешь, что они в своё время не соскочили обратно на си.

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 1)
Ответ на: комментарий от foror

Судя по тому, как выглядит код на расте, там каждому первому нужно было соскочить на C.

Joe_Bishop
() автор топика
Ответ на: комментарий от cdshines

там нормальный стдлиб, просто ты какая-то истеричка

аналог memmem может подскажешь для байтовых массивов?

Joe_Bishop
() автор топика
Ответ на: комментарий от Joe_Bishop

Судя по тому, как выглядит код на расте, там каждому первому нужно было соскочить на C.

Каждому первому кому? Смотрите и наслаждайтесь: сишник услышал что раст замена си.

аналог memmem может подскажешь для байтовых массивов?

нафиг всякое говно тащить в stdlib. Зачем там хоть что-нибудь для массивов конкретного типа?

Esteban_Garcia
()
Ответ на: комментарий от Esteban_Garcia

Каждому первому кому? Смотрите и наслаждайтесь: сишник услышал что раст замена си.

маленький рантайм, вроде как быстро, подумалось: почему-бы и нет, как раз нужно было слепить одну штуку

а на деле получается какая-то тормозная ху%ня с постоянными перевыделениями памяти.

нафиг всякое говно тащить в stdlib.

и при этом нужно приделать поддержку UTF-8 прямо в язык. Растоманы все такие пришибленные?

Joe_Bishop
() автор топика
Последнее исправление: Joe_Bishop (всего исправлений: 1)
Ответ на: комментарий от Joe_Bishop

с постоянными перевыделениями памяти.

Где? Там же тебе выводятся подстроки в виде слайсов, где ты там перевыделения памяти увидел?

и при этом нужно приделать поддержку UTF-8 прямо в язык. Растоманы все такие пришибленные?

Зачем нужно приделать поддержку строк прямо в язык? И если у приделывать, зачем что-то отличное от UTF-8.

Esteban_Garcia
()
Ответ на: комментарий от Joe_Bishop

Поддержка строк «прямо в языке» сводится к двум типам: char (Unicode code point) и str (UTF-8 буфер). Остальное, включая все функции, лежит в стандартной библиотеке. Не нравится - делай свои типы с библиотекой и КОИ-8.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.