summary refs log tree commit diff stats
path: root/lib/pure/collections/sets.nim
diff options
context:
space:
mode:
authordef <dennis@felsin9.de>2014-07-14 17:56:19 +0200
committerdef <dennis@felsin9.de>2014-07-14 17:56:19 +0200
commit68c3c8ebfafbcd169bceaf2bebed8f7af8dbf124 (patch)
treea6f9e48881ef7dad522425629163b210faba839c /lib/pure/collections/sets.nim
parent5bfea58ffb9fd731131bbbd3f3d077cb69c5f419 (diff)
downloadNim-68c3c8ebfafbcd169bceaf2bebed8f7af8dbf124.tar.gz
More effificent TSet difference
Diffstat (limited to 'lib/pure/collections/sets.nim')
-rw-r--r--lib/pure/collections/sets.nim7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/pure/collections/sets.nim b/lib/pure/collections/sets.nim
index 2f0c4d3d2..f1eed0004 100644
--- a/lib/pure/collections/sets.nim
+++ b/lib/pure/collections/sets.nim
@@ -169,9 +169,10 @@ proc intersection*[A](s1, s2: TSet[A]): TSet[A] =
 
 proc difference*[A](s1, s2: TSet[A]): TSet[A] =
   ## returns a new set of all items that are contained in `s1`, but not in `s2`
-  result = s1
-  for item in s2:
-    if contains(result, item): excl(result, item)
+  result = initSet[A]()
+  for item in s1:
+    if not contains(s2, item):
+      incl(result, item)
 
 proc symmetricDifference*[A](s1, s2: TSet[A]): TSet[A] =
   ## returns a new set of all items that are contained in either