Size: a a a

2021 March 17

M(

MIT/Yardanico (alt) in ru.nim.talks
Но, как он и сказал, он не может себя клонировать
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
Vladimir Berezenko
Э... а как?
Ща покажу
источник

VB

Vladimir Berezenko in ru.nim.talks
MIT/Yardanico (alt)
Но, как он и сказал, он не может себя клонировать
Слабак. Мог-бы уже давно хотя-бы еще 2 руки отрастить... :)
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
Vladimir Berezenko
Э... а как?
ну с result не так часто это случается, чаще с openArray
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
потому что openArray это просто view тип, и его нельзя так-то захватывать
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
proc test(data: openArray[int]): proc() = 
 result = proc =
   echo data

let a = @[1, 2, 3]

test(a)()
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
/home/dian/Projects/ircord/third.nim(9, 10) Error: 'data' is of type <openArray[int]> which cannot be captured as it would violate memory safety, declared here: /home/dian/Projects/ircord/third.nim(7, 11); using '-d:nimWorkaround14447' helps in some cases
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
из-за этого в async процедурах нельзя openArray юзать нормально, потому что они реализованы через замыкания
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
import std/asyncdispatch

proc test(data: openArray[int]) {.async.} =
 echo data

waitFor test(@[1, 2, 3])
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
/home/dian/Projects/ircord/third.nim(5, 8) Error: 'data' is of type <openArray[int]> which cannot be captured as it would violate memory safety, declared here: /home/dian/Projects/ircord/third.nim(4, 11); using '-d:nimWorkaround14447' helps in some cases
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
MIT/Yardanico (alt)
ну с result не так часто это случается, чаще с openArray
пример глупый, но всё же:
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
proc test(): int = 

 let other = proc() =
   result = 5

discard test()
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
/home/dian/Projects/ircord/third.nim(4, 5) Error: 'result' is of type <int> which cannot be captured as it would violate memory safety, declared here: /home/dian/Projects/ircord/third.nim(1, 1); using '-d:nimWorkaround14447' helps in some cases
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
14447 это PR, который сделал у некоторых итераторов (у последовательностей и openArray) возвращаемый тип lent T
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
lent это иммутабельный view в тип T
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
т.е. чтобы без копии, но нельзя было модифицировать
источник

VB

Vladimir Berezenko in ru.nim.talks
о. надо WIP статус поставить у PR
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
Vladimir Berezenko
о. надо WIP статус поставить у PR
draft?
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
MIT/Yardanico (alt)
14447 это PR, который сделал у некоторых итераторов (у последовательностей и openArray) возвращаемый тип lent T
после 14447 короткое время прикол кстати был
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
из-за бага в компиляторе модифицировать таки можно было, но araq быстро пофиксил
источник