@@ -155,50 +155,37 @@ library EnumerableSet {
155155 view
156156 returns (bytes32 [] memory )
157157 {
158- uint256 len = _length (set._inner);
159- bytes32 [] memory arr = new bytes32 [](len);
160-
161- unchecked {
162- for (uint256 index; index < len; ++ index) {
163- arr[index] = at (set, index);
164- }
165- }
166-
167- return arr;
158+ return set._inner._values;
168159 }
169160
170161 function toArray (AddressSet storage set )
171162 internal
172163 view
173164 returns (address [] memory )
174165 {
175- uint256 len = _length ( set._inner) ;
176- address [] memory arr = new address [](len) ;
166+ bytes32 [] storage values = set._inner._values ;
167+ address [] storage array ;
177168
178- unchecked {
179- for (uint256 index; index < len; ++ index) {
180- arr[index] = at (set, index);
181- }
169+ assembly {
170+ array.slot := values.slot
182171 }
183172
184- return arr ;
173+ return array ;
185174 }
186175
187176 function toArray (UintSet storage set )
188177 internal
189178 view
190179 returns (uint256 [] memory )
191180 {
192- uint256 len = _length ( set._inner) ;
193- uint256 [] memory arr = new uint256 [](len) ;
181+ bytes32 [] storage values = set._inner._values ;
182+ uint256 [] storage array ;
194183
195- unchecked {
196- for (uint256 index; index < len; ++ index) {
197- arr[index] = at (set, index);
198- }
184+ assembly {
185+ array.slot := values.slot
199186 }
200187
201- return arr ;
188+ return array ;
202189 }
203190
204191 function _at (Set storage set , uint256 index )
@@ -238,8 +225,6 @@ library EnumerableSet {
238225 set._values.push (value);
239226 set._indexes[value] = set._values.length ;
240227 return true ;
241- } else {
242- return false ;
243228 }
244229 }
245230
@@ -261,8 +246,6 @@ library EnumerableSet {
261246 delete set._indexes[value];
262247
263248 return true ;
264- } else {
265- return false ;
266249 }
267250 }
268251}
0 commit comments