LINUX.ORG.RU

вопрос по rust

 


0

2

hi, есть функция в которую передается

fn process(mut socket: TcpStream

в этой функции множество точек выхода по ошибкам (?) и надо перед завершением этой функции отправить в сокет сообщение, был бы defer как в golang былобы отлично. можно было бы это сделать за точкой вызова этой функции, но socket был передан в эту функцию и его больше нет ?



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

ну так-то в расте raii из коробки и систематично такое делается через собственную имплементацию трейта Drop (для TcpStream в данном случае ) а крейт выше для дополнительного удобства

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

такое делается через собственную имплементацию трейта Drop (для TcpStream в данном случае )

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

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

пришлось обернуть в свою структуру.

тоже норм вариант, а с крейтом выше?

zurg
()

Насколько я помню, можно сделать свою struct, в нее положить сокет, и определить для нее свой Drop в котором делать то, что вам нужно.

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

,kznm, за что не люблю раст в нем то одно не работает то другое то все вместе. сокет асинхронный

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

вах, все получилось, все работает, раст топ, просто мут ссылку передал

async fn process(socket: &mut TcpStream,

всем тенкс, вопрос закрыт.

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

Раст не топ, а говно! Си в 100500 раз лучше!

anonymous
()

По моим наблюдениям раст хорошо заходит у тех, кто уже имел какой-то базовый уровень знаний в ФП. Поэтому совет простой. Хотите лучше разобраться с растом, изучайте также и (статически типизированные) языки ФП, типа того же хаскеля, F#, скалы или окамла! Многие вещи станут понятнее. Увидите много знакомого, много аналогий между растом и ФП.

Ну, и это работает часто в обратную сторону. К сожалению, если брать молодых, то ФП идет у них очень туго. Может быть, общий кризис образования по всему миру, такой общий тренд. Не знаю что. Ну, и соответственно. Если нет представлений об ФП, то тогда раст кажется непонятным и сложным, хотя по мне раст концептуально проще, чем C++ в раз 10, если в 50. Ну, это так, грубая прикидка. Писал и продолжаю писать много на обоих языках, если что, в том числе, коммерческий софт

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

По моим наблюдениям раст хорошо заходит у тех, кто уже имел какой-то базовый уровень знаний в ФП

+100

типа того же хаскеля, F#, скалы или окамла!

Лучше всего OCaml, на нем была написана первая версия rust компилятора, и прямо заимствованы некоторые особенности.

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

Растаманы не понимают, что надежные программы мало кому нужны. Нужны быстро написанные и внедрённые в продакт программы, а если они будут иногда падать, то это значит, что они новые, а не говно мамонта. Спроси почитателей роллинг релизов, они подтвердят концепцию.

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

А на Rust программы как раз падучие, потому что они привыкли завершать программу при любой ошибке, ну такой вот код мне попадался пока что.

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

Странный совет, что мешает освоить все эти концепции в Rust?

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

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

MOPKOBKA ★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.