Skip to content

Commit e0d13f2

Browse files
committed
fix: reference instead of clone
1 parent 7332079 commit e0d13f2

14 files changed

+101
-124
lines changed

pallets/nfts/src/benchmarking.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,27 +67,27 @@ fn mint_item<T: Config<I>, I: 'static>(
6767
) -> (T::ItemId, T::AccountId, AccountIdLookupOf<T>) {
6868
let item = T::Helper::item(index);
6969
let collection = T::Helper::collection(0);
70-
let caller = Collection::<T, I>::get(collection.clone()).unwrap().owner;
70+
let caller = Collection::<T, I>::get(&collection).unwrap().owner;
7171
if caller != whitelisted_caller() {
7272
whitelist_account!(caller);
7373
}
7474
let caller_lookup = T::Lookup::unlookup(caller.clone());
75-
let item_exists = Item::<T, I>::contains_key(collection.clone(), item);
76-
let item_config = ItemConfigOf::<T, I>::get(collection.clone(), item);
75+
let item_exists = Item::<T, I>::contains_key(&collection, item);
76+
let item_config = ItemConfigOf::<T, I>::get(&collection, item);
7777
if item_exists {
78-
return (item, caller, caller_lookup)
78+
return (item, caller, caller_lookup);
7979
} else if let Some(item_config) = item_config {
8080
assert_ok!(Nfts::<T, I>::force_mint(
8181
SystemOrigin::Signed(caller.clone()).into(),
82-
collection.clone(),
82+
collection,
8383
item,
8484
caller_lookup.clone(),
8585
item_config,
8686
));
8787
} else {
8888
assert_ok!(Nfts::<T, I>::mint(
8989
SystemOrigin::Signed(caller.clone()).into(),
90-
collection.clone(),
90+
collection,
9191
item,
9292
caller_lookup.clone(),
9393
None,
@@ -265,7 +265,7 @@ benchmarks_instance_pallet! {
265265
for i in 0..a {
266266
add_collection_attribute::<T, I>(i as u16);
267267
}
268-
let witness = Collection::<T, I>::get(collection.clone()).unwrap().destroy_witness();
268+
let witness = Collection::<T, I>::get(&collection).unwrap().destroy_witness();
269269
}: _(SystemOrigin::Signed(caller), collection.clone(), witness)
270270
verify {
271271
assert_last_event::<T, I>(Event::Destroyed { collection }.into());

pallets/nfts/src/common_functions.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
6969
signer: &T::AccountId,
7070
) -> DispatchResult {
7171
if signature.verify(&**data, signer) {
72-
return Ok(())
72+
return Ok(());
7373
}
7474

7575
// NOTE: for security reasons modern UIs implicitly wrap the data requested to sign into

pallets/nfts/src/features/approvals.rs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
5454
Self::is_pallet_feature_enabled(PalletFeature::Approvals),
5555
Error::<T, I>::MethodDisabled
5656
);
57-
let mut details = Item::<T, I>::get(collection, item).ok_or(Error::<T, I>::UnknownItem)?;
57+
let mut details = Item::<T, I>::get(&collection, item).ok_or(Error::<T, I>::UnknownItem)?;
5858

5959
let collection_config = Self::get_collection_config(&collection)?;
6060
ensure!(
@@ -73,7 +73,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
7373
.approvals
7474
.try_insert(delegate.clone(), deadline)
7575
.map_err(|_| Error::<T, I>::ReachedApprovalLimit)?;
76-
Item::<T, I>::insert(collection, item, &details);
76+
Item::<T, I>::insert(&collection, item, &details);
7777

7878
Self::deposit_event(Event::TransferApproved {
7979
collection,
@@ -105,7 +105,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
105105
item: T::ItemId,
106106
delegate: T::AccountId,
107107
) -> DispatchResult {
108-
let mut details = Item::<T, I>::get(collection, item).ok_or(Error::<T, I>::UnknownItem)?;
108+
let mut details = Item::<T, I>::get(&collection, item).ok_or(Error::<T, I>::UnknownItem)?;
109109

110110
let maybe_deadline = details.approvals.get(&delegate).ok_or(Error::<T, I>::NotDelegate)?;
111111

@@ -125,12 +125,12 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
125125
// Cannot revoke approval for a specific collection item if the delegate has
126126
// permission to transfer all collection items owned by the origin.
127127
ensure!(
128-
!CollectionApprovals::<T, I>::contains_key((collection, &details.owner, &delegate)),
128+
!CollectionApprovals::<T, I>::contains_key((&collection, &details.owner, &delegate)),
129129
Error::<T, I>::DelegateApprovalConflict
130130
);
131131

132132
details.approvals.remove(&delegate);
133-
Item::<T, I>::insert(collection, item, &details);
133+
Item::<T, I>::insert(&collection, item, &details);
134134

135135
Self::deposit_event(Event::ApprovalCancelled {
136136
collection,
@@ -161,13 +161,13 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
161161
item: T::ItemId,
162162
) -> DispatchResult {
163163
let mut details =
164-
Item::<T, I>::get(collection, item).ok_or(Error::<T, I>::UnknownCollection)?;
164+
Item::<T, I>::get(&collection, item).ok_or(Error::<T, I>::UnknownCollection)?;
165165

166166
if let Some(check_origin) = maybe_check_origin {
167167
// Cannot revoke approvals for individual items when there are existing approvals to
168168
// transfer all items in the collection owned by the origin.
169169
ensure!(
170-
CollectionApprovals::<T, I>::iter_prefix((collection, &check_origin))
170+
CollectionApprovals::<T, I>::iter_prefix((&collection, &check_origin))
171171
.take(1)
172172
.next()
173173
.is_none(),
@@ -177,7 +177,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
177177
}
178178

179179
details.approvals.clear();
180-
Item::<T, I>::insert(collection, item, &details);
180+
Item::<T, I>::insert(&collection, item, &details);
181181

182182
Self::deposit_event(Event::AllApprovalsCancelled {
183183
collection,
@@ -216,7 +216,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
216216
Self::is_pallet_feature_enabled(PalletFeature::Approvals),
217217
Error::<T, I>::MethodDisabled
218218
);
219-
ensure!(AccountBalance::<T, I>::get(collection, &owner) > 0, Error::<T, I>::NoItemOwned);
219+
ensure!(AccountBalance::<T, I>::get(&collection, &owner) > 0, Error::<T, I>::NoItemOwned);
220220

221221
let collection_config = Self::get_collection_config(&collection)?;
222222
ensure!(
@@ -296,9 +296,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
296296
let mut removed_approvals: u32 = 0;
297297
let mut deposits: BalanceOf<T, I> = Zero::zero();
298298
// Iterate and remove each collection approval, returning the deposit back to the `owner`.
299-
for (_, (_, deposit)) in
300-
CollectionApprovals::<T, I>::drain_prefix((collection.clone(), &owner))
301-
{
299+
for (_, (_, deposit)) in CollectionApprovals::<T, I>::drain_prefix((&collection, &owner)) {
302300
deposits = deposits.saturating_add(deposit);
303301
removed_approvals.saturating_inc();
304302
if removed_approvals == limit {
@@ -356,7 +354,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
356354

357355
// Check if a `delegate` has permission to transfer the given collection item.
358356
if let Some(item) = maybe_item {
359-
let details = Item::<T, I>::get(collection, item).ok_or(Error::<T, I>::UnknownItem)?;
357+
let details = Item::<T, I>::get(&collection, item).ok_or(Error::<T, I>::UnknownItem)?;
360358
let maybe_deadline =
361359
details.approvals.get(delegate).ok_or(Error::<T, I>::NoPermission)?;
362360
if let Some(deadline) = maybe_deadline {

pallets/nfts/src/features/attributes.rs

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,9 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
8686
}
8787

8888
let mut collection_details =
89-
Collection::<T, I>::get(collection.clone()).ok_or(Error::<T, I>::UnknownCollection)?;
89+
Collection::<T, I>::get(&collection).ok_or(Error::<T, I>::UnknownCollection)?;
9090

91-
let attribute = Attribute::<T, I>::get((collection.clone(), maybe_item, &namespace, &key));
91+
let attribute = Attribute::<T, I>::get((&collection, maybe_item, &namespace, &key));
9292
let attribute_exists = attribute.is_some();
9393
if !attribute_exists {
9494
collection_details.attributes.saturating_inc();
@@ -151,7 +151,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
151151
(&value, AttributeDeposit { account: new_deposit_owner, amount: deposit }),
152152
);
153153

154-
Collection::<T, I>::insert(collection.clone(), &collection_details);
154+
Collection::<T, I>::insert(&collection, &collection_details);
155155
Self::deposit_event(Event::AttributeSet { collection, maybe_item, key, value, namespace });
156156
Ok(())
157157
}
@@ -182,9 +182,9 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
182182
value: BoundedVec<u8, T::ValueLimit>,
183183
) -> DispatchResult {
184184
let mut collection_details =
185-
Collection::<T, I>::get(collection.clone()).ok_or(Error::<T, I>::UnknownCollection)?;
185+
Collection::<T, I>::get(&collection).ok_or(Error::<T, I>::UnknownCollection)?;
186186

187-
let attribute = Attribute::<T, I>::get((collection.clone(), maybe_item, &namespace, &key));
187+
let attribute = Attribute::<T, I>::get((&collection, maybe_item, &namespace, &key));
188188
if let Some((_, deposit)) = attribute {
189189
if deposit.account != set_as && deposit.amount != Zero::zero() {
190190
if let Some(deposit_account) = deposit.account {
@@ -199,7 +199,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
199199
(&collection, maybe_item, &namespace, &key),
200200
(&value, AttributeDeposit { account: set_as, amount: Zero::zero() }),
201201
);
202-
Collection::<T, I>::insert(collection.clone(), &collection_details);
202+
Collection::<T, I>::insert(&collection, &collection_details);
203203
Self::deposit_event(Event::AttributeSet { collection, maybe_item, key, value, namespace });
204204
Ok(())
205205
}
@@ -229,7 +229,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
229229
ensure!(deadline >= now, Error::<T, I>::DeadlineExpired);
230230

231231
let item_details =
232-
Item::<T, I>::get(collection.clone(), item).ok_or(Error::<T, I>::UnknownItem)?;
232+
Item::<T, I>::get(&collection, item).ok_or(Error::<T, I>::UnknownItem)?;
233233
ensure!(item_details.owner == origin, Error::<T, I>::NoPermission);
234234

235235
// Only the CollectionOwner and Account() namespaces could be updated in this way.
@@ -238,7 +238,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
238238
AttributeNamespace::CollectionOwner => {},
239239
AttributeNamespace::Account(account) => {
240240
ensure!(account == &signer, Error::<T, I>::NoPermission);
241-
let approvals = ItemAttributesApprovalsOf::<T, I>::get(collection.clone(), item);
241+
let approvals = ItemAttributesApprovalsOf::<T, I>::get(&collection, item);
242242
if !approvals.contains(account) {
243243
Self::do_approve_item_attributes(
244244
origin.clone(),
@@ -289,9 +289,8 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
289289
namespace: AttributeNamespace<T::AccountId>,
290290
key: BoundedVec<u8, T::KeyLimit>,
291291
) -> DispatchResult {
292-
let (_, deposit) =
293-
Attribute::<T, I>::take((collection.clone(), maybe_item, &namespace, &key))
294-
.ok_or(Error::<T, I>::AttributeNotFound)?;
292+
let (_, deposit) = Attribute::<T, I>::take((&collection, maybe_item, &namespace, &key))
293+
.ok_or(Error::<T, I>::AttributeNotFound)?;
295294

296295
if let Some(check_origin) = &maybe_check_origin {
297296
// validate the provided namespace when it's not a root call and the caller is not
@@ -337,7 +336,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
337336
}
338337

339338
let mut collection_details =
340-
Collection::<T, I>::get(collection.clone()).ok_or(Error::<T, I>::UnknownCollection)?;
339+
Collection::<T, I>::get(&collection).ok_or(Error::<T, I>::UnknownCollection)?;
341340

342341
collection_details.attributes.saturating_dec();
343342

@@ -352,7 +351,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
352351
_ => (),
353352
}
354353

355-
Collection::<T, I>::insert(collection.clone(), &collection_details);
354+
Collection::<T, I>::insert(&collection, &collection_details);
356355
Self::deposit_event(Event::AttributeCleared { collection, maybe_item, key, namespace });
357356

358357
Ok(())
@@ -380,8 +379,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
380379
Error::<T, I>::MethodDisabled
381380
);
382381

383-
let details =
384-
Item::<T, I>::get(collection.clone(), item).ok_or(Error::<T, I>::UnknownItem)?;
382+
let details = Item::<T, I>::get(&collection, item).ok_or(Error::<T, I>::UnknownItem)?;
385383
ensure!(check_origin == details.owner, Error::<T, I>::NoPermission);
386384

387385
ItemAttributesApprovalsOf::<T, I>::try_mutate(collection.clone(), item, |approvals| {
@@ -422,8 +420,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
422420
Error::<T, I>::MethodDisabled
423421
);
424422

425-
let details =
426-
Item::<T, I>::get(collection.clone(), item).ok_or(Error::<T, I>::UnknownItem)?;
423+
let details = Item::<T, I>::get(&collection, item).ok_or(Error::<T, I>::UnknownItem)?;
427424
ensure!(check_origin == details.owner, Error::<T, I>::NoPermission);
428425

429426
ItemAttributesApprovalsOf::<T, I>::try_mutate(collection.clone(), item, |approvals| {

pallets/nfts/src/features/buy_sell.rs

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
8282
Error::<T, I>::MethodDisabled
8383
);
8484

85-
let details =
86-
Item::<T, I>::get(collection.clone(), item).ok_or(Error::<T, I>::UnknownItem)?;
85+
let details = Item::<T, I>::get(&collection, item).ok_or(Error::<T, I>::UnknownItem)?;
8786
ensure!(details.owner == sender, Error::<T, I>::NoPermission);
8887

8988
let collection_config = Self::get_collection_config(&collection)?;
@@ -99,19 +98,15 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
9998
);
10099

101100
if let Some(ref price) = price {
102-
ItemPriceOf::<T, I>::insert(
103-
collection.clone(),
104-
item,
105-
(price, whitelisted_buyer.clone()),
106-
);
101+
ItemPriceOf::<T, I>::insert(&collection, item, (price, whitelisted_buyer.clone()));
107102
Self::deposit_event(Event::ItemPriceSet {
108103
collection,
109104
item,
110105
price: *price,
111106
whitelisted_buyer,
112107
});
113108
} else {
114-
ItemPriceOf::<T, I>::remove(collection.clone(), item);
109+
ItemPriceOf::<T, I>::remove(&collection, item);
115110
Self::deposit_event(Event::ItemPriceRemoved { collection, item });
116111
}
117112

@@ -142,12 +137,11 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
142137
Error::<T, I>::MethodDisabled
143138
);
144139

145-
let details =
146-
Item::<T, I>::get(collection.clone(), item).ok_or(Error::<T, I>::UnknownItem)?;
140+
let details = Item::<T, I>::get(&collection, item).ok_or(Error::<T, I>::UnknownItem)?;
147141
ensure!(details.owner != buyer, Error::<T, I>::NoPermission);
148142

149143
let price_info =
150-
ItemPriceOf::<T, I>::get(collection.clone(), item).ok_or(Error::<T, I>::NotForSale)?;
144+
ItemPriceOf::<T, I>::get(&collection, item).ok_or(Error::<T, I>::NotForSale)?;
151145

152146
ensure!(bid_price >= price_info.0, Error::<T, I>::BidTooLow);
153147

pallets/nfts/src/features/create_delete_collection.rs

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,12 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
4242
deposit: DepositBalanceOf<T, I>,
4343
event: Event<T, I>,
4444
) -> DispatchResult {
45-
ensure!(
46-
!Collection::<T, I>::contains_key(collection.clone()),
47-
Error::<T, I>::CollectionIdInUse
48-
);
45+
ensure!(!Collection::<T, I>::contains_key(&collection), Error::<T, I>::CollectionIdInUse);
4946

5047
T::Currency::reserve(&owner, deposit)?;
5148

5249
Collection::<T, I>::insert(
53-
collection.clone(),
50+
&collection,
5451
CollectionDetails {
5552
owner: owner.clone(),
5653
owner_deposit: deposit,
@@ -61,15 +58,15 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
6158
},
6259
);
6360
CollectionRoleOf::<T, I>::insert(
64-
collection.clone(),
61+
&collection,
6562
admin,
6663
CollectionRoles(
6764
CollectionRole::Admin | CollectionRole::Freezer | CollectionRole::Issuer,
6865
),
6966
);
7067

71-
CollectionConfigOf::<T, I>::insert(collection.clone(), config.clone());
72-
CollectionAccount::<T, I>::insert(&owner, collection.clone(), ());
68+
CollectionConfigOf::<T, I>::insert(&collection, config.clone());
69+
CollectionAccount::<T, I>::insert(&owner, &collection, ());
7370

7471
Self::deposit_event(event);
7572

@@ -116,7 +113,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
116113
}
117114
ensure!(collection_details.items == 0, Error::<T, I>::CollectionNotEmpty);
118115
ensure!(
119-
CollectionApprovals::<T, I>::iter_prefix((collection.clone(),))
116+
CollectionApprovals::<T, I>::iter_prefix((&collection,))
120117
.take(1)
121118
.next()
122119
.is_none(),
@@ -132,13 +129,13 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
132129
Error::<T, I>::BadWitness
133130
);
134131

135-
for (_, metadata) in ItemMetadataOf::<T, I>::drain_prefix(collection.clone()) {
132+
for (_, metadata) in ItemMetadataOf::<T, I>::drain_prefix(&collection) {
136133
if let Some(depositor) = metadata.deposit.account {
137134
T::Currency::unreserve(&depositor, metadata.deposit.amount);
138135
}
139136
}
140137

141-
CollectionMetadataOf::<T, I>::remove(collection.clone());
138+
CollectionMetadataOf::<T, I>::remove(&collection);
142139
Self::clear_roles(&collection)?;
143140

144141
for (_, (_, deposit)) in Attribute::<T, I>::drain_prefix((&collection,)) {
@@ -149,11 +146,10 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
149146
}
150147
}
151148

152-
CollectionAccount::<T, I>::remove(&collection_details.owner, collection.clone());
149+
CollectionAccount::<T, I>::remove(&collection_details.owner, &collection);
153150
T::Currency::unreserve(&collection_details.owner, collection_details.owner_deposit);
154-
CollectionConfigOf::<T, I>::remove(collection.clone());
155-
let _ =
156-
ItemConfigOf::<T, I>::clear_prefix(collection.clone(), witness.item_configs, None);
151+
CollectionConfigOf::<T, I>::remove(&collection);
152+
let _ = ItemConfigOf::<T, I>::clear_prefix(&collection, witness.item_configs, None);
157153

158154
Self::deposit_event(Event::Destroyed { collection });
159155

0 commit comments

Comments
 (0)