tviews2.nim 766 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. discard """
  2. targets: "c js"
  3. """
  4. {.experimental: "views".}
  5. block:
  6. type
  7. Foo = object
  8. id: openArray[char]
  9. proc foo(): Foo =
  10. var source = "1245"
  11. result = Foo(id: source.toOpenArray(0, 1))
  12. doAssert foo().id == @['1', '2']
  13. block: # bug #15778
  14. type
  15. Reader = object
  16. data: openArray[char]
  17. current: int
  18. var count = 0
  19. proc read(data: var Reader, length: int): openArray[char] =
  20. inc count
  21. let start = data.current
  22. data.current.inc length
  23. return data.data.toOpenArray(start, data.current-1)
  24. var data = "hello there"
  25. var reader = Reader(data: data.toOpenArray(0, data.len-1), current: 0)
  26. doAssert @(reader.read(2)) == @['h', 'e']
  27. doAssert @(reader.read(3)) == @['l', 'l', 'o']
  28. doAssert count == 2