qubit_value/multi_values/multi_values_setters.rs
1/*******************************************************************************
2 *
3 * Copyright (c) 2025 - 2026 Haixing Hu.
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 *
7 * Licensed under the Apache License, Version 2.0.
8 *
9 ******************************************************************************/
10
11//! Type-specific replacement accessors for `MultiValues`.
12
13use std::collections::HashMap;
14use std::time::Duration;
15
16use bigdecimal::BigDecimal;
17use chrono::{
18 DateTime,
19 NaiveDate,
20 NaiveDateTime,
21 NaiveTime,
22 Utc,
23};
24use num_bigint::BigInt;
25use url::Url;
26
27use crate::value_error::ValueResult;
28
29use super::multi_values::MultiValues;
30
31impl MultiValues {
32 // ========================================================================
33 // Set value operations
34 // ========================================================================
35
36 impl_set_multi_values! {
37 /// Set all boolean values
38 ///
39 /// # Parameters
40 ///
41 /// * `values` - The list of boolean values to set
42 ///
43 /// # Returns
44 ///
45 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
46 ///
47 /// # Example
48 ///
49 /// ```rust
50 /// use qubit_datatype::DataType;
51 /// use qubit_value::MultiValues;
52 ///
53 /// let mut values = MultiValues::Empty(DataType::Bool);
54 /// values.set_bools(vec![true, false, true]).unwrap();
55 /// assert_eq!(values.get_bools().unwrap(), &[true, false, true]);
56 /// ```
57 set_bools, Bool, bool, DataType::Bool
58 }
59
60 impl_set_multi_values! {
61 /// Set all character values
62 ///
63 /// # Parameters
64 ///
65 /// * `values` - The list of character values to set
66 ///
67 /// # Returns
68 ///
69 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
70 set_chars, Char, char, DataType::Char
71 }
72
73 impl_set_multi_values! {
74 /// Set all int8 values
75 ///
76 /// # Parameters
77 ///
78 /// * `values` - The list of int8 values to set
79 ///
80 /// # Returns
81 ///
82 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
83 set_int8s, Int8, i8, DataType::Int8
84 }
85
86 impl_set_multi_values! {
87 /// Set all int16 values
88 ///
89 /// # Parameters
90 ///
91 /// * `values` - The list of int16 values to set
92 ///
93 /// # Returns
94 ///
95 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
96 set_int16s, Int16, i16, DataType::Int16
97 }
98
99 impl_set_multi_values! {
100 /// Set all int32 values
101 ///
102 /// # Parameters
103 ///
104 /// * `values` - The list of int32 values to set
105 ///
106 /// # Returns
107 ///
108 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
109 set_int32s, Int32, i32, DataType::Int32
110 }
111
112 impl_set_multi_values! {
113 /// Set all int64 values
114 ///
115 /// # Parameters
116 ///
117 /// * `values` - The list of int64 values to set
118 ///
119 /// # Returns
120 ///
121 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
122 set_int64s, Int64, i64, DataType::Int64
123 }
124
125 impl_set_multi_values! {
126 /// Set all int128 values
127 ///
128 /// # Parameters
129 ///
130 /// * `values` - The list of int128 values to set
131 ///
132 /// # Returns
133 ///
134 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
135 set_int128s, Int128, i128, DataType::Int128
136 }
137
138 impl_set_multi_values! {
139 /// Set all uint8 values
140 ///
141 /// # Parameters
142 ///
143 /// * `values` - The list of uint8 values to set
144 ///
145 /// # Returns
146 ///
147 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
148 set_uint8s, UInt8, u8, DataType::UInt8
149 }
150
151 impl_set_multi_values! {
152 /// Set all uint16 values
153 ///
154 /// # Parameters
155 ///
156 /// * `values` - The list of uint16 values to set
157 ///
158 /// # Returns
159 ///
160 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
161 set_uint16s, UInt16, u16, DataType::UInt16
162 }
163
164 impl_set_multi_values! {
165 /// Set all uint32 values
166 ///
167 /// # Parameters
168 ///
169 /// * `values` - The list of uint32 values to set
170 ///
171 /// # Returns
172 ///
173 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
174 set_uint32s, UInt32, u32, DataType::UInt32
175 }
176
177 impl_set_multi_values! {
178 /// Set all uint64 values
179 ///
180 /// # Parameters
181 ///
182 /// * `values` - The list of uint64 values to set
183 ///
184 /// # Returns
185 ///
186 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
187 set_uint64s, UInt64, u64, DataType::UInt64
188 }
189
190 impl_set_multi_values! {
191 /// Set all uint128 values
192 ///
193 /// # Parameters
194 ///
195 /// * `values` - The list of uint128 values to set
196 ///
197 /// # Returns
198 ///
199 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
200 set_uint128s, UInt128, u128, DataType::UInt128
201 }
202
203 impl_set_multi_values! {
204 /// Set all float32 values
205 ///
206 /// # Parameters
207 ///
208 /// * `values` - The list of float32 values to set
209 ///
210 /// # Returns
211 ///
212 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
213 set_float32s, Float32, f32, DataType::Float32
214 }
215
216 impl_set_multi_values! {
217 /// Set all float64 values
218 ///
219 /// # Parameters
220 ///
221 /// * `values` - The list of float64 values to set
222 ///
223 /// # Returns
224 ///
225 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
226 set_float64s, Float64, f64, DataType::Float64
227 }
228
229 impl_set_multi_values! {
230 /// Set all string values
231 ///
232 /// # Parameters
233 ///
234 /// * `values` - The list of string values to set
235 ///
236 /// # Returns
237 ///
238 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
239 ///
240 /// # Example
241 ///
242 /// ```rust
243 /// use qubit_datatype::DataType;
244 /// use qubit_value::MultiValues;
245 ///
246 /// let mut values = MultiValues::Empty(DataType::String);
247 /// values.set_strings(vec!["hello".to_string(), "world".to_string()]).unwrap();
248 /// assert_eq!(values.get_strings().unwrap(), &["hello", "world"]);
249 /// ```
250 set_strings, String, String, DataType::String
251 }
252
253 impl_set_multi_values! {
254 /// Set all date values
255 ///
256 /// # Parameters
257 ///
258 /// * `values` - The list of date values to set
259 ///
260 /// # Returns
261 ///
262 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
263 set_dates, Date, NaiveDate, DataType::Date
264 }
265
266 impl_set_multi_values! {
267 /// Set all time values
268 ///
269 /// # Parameters
270 ///
271 /// * `values` - The list of time values to set
272 ///
273 /// # Returns
274 ///
275 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
276 set_times, Time, NaiveTime, DataType::Time
277 }
278
279 impl_set_multi_values! {
280 /// Set all datetime values
281 ///
282 /// # Parameters
283 ///
284 /// * `values` - The list of datetime values to set
285 ///
286 /// # Returns
287 ///
288 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
289 set_datetimes, DateTime, NaiveDateTime, DataType::DateTime
290 }
291
292 impl_set_multi_values! {
293 /// Set all UTC instant values
294 ///
295 /// # Parameters
296 ///
297 /// * `values` - The list of UTC instant values to set
298 ///
299 /// # Returns
300 ///
301 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
302 set_instants, Instant, DateTime<Utc>, DataType::Instant
303 }
304
305 impl_set_multi_values! {
306 /// Set all big integer values
307 ///
308 /// # Parameters
309 ///
310 /// * `values` - The list of big integer values to set
311 ///
312 /// # Returns
313 ///
314 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
315 set_bigintegers, BigInteger, BigInt, DataType::BigInteger
316 }
317
318 impl_set_multi_values! {
319 /// Set all big decimal values
320 ///
321 /// # Parameters
322 ///
323 /// * `values` - The list of big decimal values to set
324 ///
325 /// # Returns
326 ///
327 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
328 set_bigdecimals, BigDecimal, BigDecimal, DataType::BigDecimal
329 }
330
331 impl_set_multi_values! {
332 /// Set all isize values
333 set_intsizes, IntSize, isize, DataType::IntSize
334 }
335
336 impl_set_multi_values! {
337 /// Set all usize values
338 set_uintsizes, UIntSize, usize, DataType::UIntSize
339 }
340
341 impl_set_multi_values! {
342 /// Set all Duration values
343 set_durations, Duration, Duration, DataType::Duration
344 }
345
346 impl_set_multi_values! {
347 /// Set all Url values
348 set_urls, Url, Url, DataType::Url
349 }
350
351 impl_set_multi_values! {
352 /// Set all StringMap values
353 set_string_maps, StringMap, HashMap<String, String>, DataType::StringMap
354 }
355
356 impl_set_multi_values! {
357 /// Set all Json values
358 set_jsons, Json, serde_json::Value, DataType::Json
359 }
360
361 // ========================================================================
362 // Set all values via slice operations
363 // ========================================================================
364
365 impl_set_multi_values_slice! {
366 /// Set all boolean values via slice
367 ///
368 /// # Parameters
369 ///
370 /// * `values` - The boolean value slice to set
371 ///
372 /// # Returns
373 ///
374 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
375 set_bools_slice, Bool, bool, DataType::Bool
376 }
377
378 impl_set_multi_values_slice! {
379 /// Set all character values via slice
380 ///
381 /// # Parameters
382 ///
383 /// * `values` - The character value slice to set
384 ///
385 /// # Returns
386 ///
387 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
388 set_chars_slice, Char, char, DataType::Char
389 }
390
391 impl_set_multi_values_slice! {
392 /// Set all int8 values via slice
393 ///
394 /// # Parameters
395 ///
396 /// * `values` - The int8 value slice to set
397 ///
398 /// # Returns
399 ///
400 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
401 set_int8s_slice, Int8, i8, DataType::Int8
402 }
403
404 impl_set_multi_values_slice! {
405 /// Set all int16 values via slice
406 ///
407 /// # Parameters
408 ///
409 /// * `values` - The int16 value slice to set
410 ///
411 /// # Returns
412 ///
413 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
414 set_int16s_slice, Int16, i16, DataType::Int16
415 }
416
417 impl_set_multi_values_slice! {
418 /// Set all int32 values via slice
419 ///
420 /// # Parameters
421 ///
422 /// * `values` - The int32 value slice to set
423 ///
424 /// # Returns
425 ///
426 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
427 set_int32s_slice, Int32, i32, DataType::Int32
428 }
429
430 impl_set_multi_values_slice! {
431 /// Set all int64 values via slice
432 ///
433 /// # Parameters
434 ///
435 /// * `values` - The int64 value slice to set
436 ///
437 /// # Returns
438 ///
439 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
440 set_int64s_slice, Int64, i64, DataType::Int64
441 }
442
443 impl_set_multi_values_slice! {
444 /// Set all int128 values via slice
445 ///
446 /// # Parameters
447 ///
448 /// * `values` - The int128 value slice to set
449 ///
450 /// # Returns
451 ///
452 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
453 set_int128s_slice, Int128, i128, DataType::Int128
454 }
455
456 impl_set_multi_values_slice! {
457 /// Set all uint8 values via slice
458 ///
459 /// # Parameters
460 ///
461 /// * `values` - The uint8 value slice to set
462 ///
463 /// # Returns
464 ///
465 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
466 set_uint8s_slice, UInt8, u8, DataType::UInt8
467 }
468
469 impl_set_multi_values_slice! {
470 /// Set all uint16 values via slice
471 ///
472 /// # Parameters
473 ///
474 /// * `values` - The uint16 value slice to set
475 ///
476 /// # Returns
477 ///
478 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
479 set_uint16s_slice, UInt16, u16, DataType::UInt16
480 }
481
482 impl_set_multi_values_slice! {
483 /// Set all uint32 values via slice
484 ///
485 /// # Parameters
486 ///
487 /// * `values` - The uint32 value slice to set
488 ///
489 /// # Returns
490 ///
491 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
492 set_uint32s_slice, UInt32, u32, DataType::UInt32
493 }
494
495 impl_set_multi_values_slice! {
496 /// Set all uint64 values via slice
497 ///
498 /// # Parameters
499 ///
500 /// * `values` - The uint64 value slice to set
501 ///
502 /// # Returns
503 ///
504 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
505 set_uint64s_slice, UInt64, u64, DataType::UInt64
506 }
507
508 impl_set_multi_values_slice! {
509 /// Set all uint128 values via slice
510 ///
511 /// # Parameters
512 ///
513 /// * `values` - The uint128 value slice to set
514 ///
515 /// # Returns
516 ///
517 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
518 set_uint128s_slice, UInt128, u128, DataType::UInt128
519 }
520
521 impl_set_multi_values_slice! {
522 /// Set all float32 values via slice
523 ///
524 /// # Parameters
525 ///
526 /// * `values` - The float32 value slice to set
527 ///
528 /// # Returns
529 ///
530 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
531 set_float32s_slice, Float32, f32, DataType::Float32
532 }
533
534 impl_set_multi_values_slice! {
535 /// Set all float64 values via slice
536 ///
537 /// # Parameters
538 ///
539 /// * `values` - The float64 value slice to set
540 ///
541 /// # Returns
542 ///
543 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
544 set_float64s_slice, Float64, f64, DataType::Float64
545 }
546
547 impl_set_multi_values_slice! {
548 /// Set all string values via slice
549 ///
550 /// # Parameters
551 ///
552 /// * `values` - The string value slice to set
553 ///
554 /// # Returns
555 ///
556 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
557 set_strings_slice, String, String, DataType::String
558 }
559
560 impl_set_multi_values_slice! {
561 /// Set all date values via slice
562 ///
563 /// # Parameters
564 ///
565 /// * `values` - The date value slice to set
566 ///
567 /// # Returns
568 ///
569 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
570 set_dates_slice, Date, NaiveDate, DataType::Date
571 }
572
573 impl_set_multi_values_slice! {
574 /// Set all time values via slice
575 ///
576 /// # Parameters
577 ///
578 /// * `values` - The time value slice to set
579 ///
580 /// # Returns
581 ///
582 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
583 set_times_slice, Time, NaiveTime, DataType::Time
584 }
585
586 impl_set_multi_values_slice! {
587 /// Set all datetime values via slice
588 ///
589 /// # Parameters
590 ///
591 /// * `values` - The datetime value slice to set
592 ///
593 /// # Returns
594 ///
595 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
596 set_datetimes_slice, DateTime, NaiveDateTime, DataType::DateTime
597 }
598
599 impl_set_multi_values_slice! {
600 /// Set all UTC instant values via slice
601 ///
602 /// # Parameters
603 ///
604 /// * `values` - The UTC instant value slice to set
605 ///
606 /// # Returns
607 ///
608 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
609 set_instants_slice, Instant, DateTime<Utc>, DataType::Instant
610 }
611
612 impl_set_multi_values_slice! {
613 /// Set all big integer values via slice
614 ///
615 /// # Parameters
616 ///
617 /// * `values` - The big integer value slice to set
618 ///
619 /// # Returns
620 ///
621 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
622 set_bigintegers_slice, BigInteger, BigInt, DataType::BigInteger
623 }
624
625 impl_set_multi_values_slice! {
626 /// Set all big decimal values via slice
627 ///
628 /// # Parameters
629 ///
630 /// * `values` - The big decimal value slice to set
631 ///
632 /// # Returns
633 ///
634 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
635 set_bigdecimals_slice, BigDecimal, BigDecimal, DataType::BigDecimal
636 }
637
638 impl_set_multi_values_slice! {
639 /// Set all isize values via slice
640 set_intsizes_slice, IntSize, isize, DataType::IntSize
641 }
642
643 impl_set_multi_values_slice! {
644 /// Set all usize values via slice
645 set_uintsizes_slice, UIntSize, usize, DataType::UIntSize
646 }
647
648 impl_set_multi_values_slice! {
649 /// Set all Duration values via slice
650 set_durations_slice, Duration, Duration, DataType::Duration
651 }
652
653 impl_set_multi_values_slice! {
654 /// Set all Url values via slice
655 set_urls_slice, Url, Url, DataType::Url
656 }
657
658 impl_set_multi_values_slice! {
659 /// Set all StringMap values via slice
660 set_string_maps_slice, StringMap, HashMap<String, String>, DataType::StringMap
661 }
662
663 impl_set_multi_values_slice! {
664 /// Set all Json values via slice
665 set_jsons_slice, Json, serde_json::Value, DataType::Json
666 }
667
668 // ========================================================================
669 // Set single value operations
670 // ========================================================================
671
672 impl_set_single_value! {
673 /// Set single boolean value
674 ///
675 /// # Parameters
676 ///
677 /// * `value` - The boolean value to set
678 ///
679 /// # Returns
680 ///
681 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
682 ///
683 /// # Example
684 ///
685 /// ```rust
686 /// use qubit_datatype::DataType;
687 /// use qubit_value::MultiValues;
688 ///
689 /// let mut values = MultiValues::Empty(DataType::Bool);
690 /// values.set_bool(true).unwrap();
691 /// assert_eq!(values.get_bools().unwrap(), &[true]);
692 /// ```
693 set_bool, Bool, bool, DataType::Bool
694 }
695
696 impl_set_single_value! {
697 /// Set single character value
698 ///
699 /// # Parameters
700 ///
701 /// * `value` - The character value to set
702 ///
703 /// # Returns
704 ///
705 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
706 set_char, Char, char, DataType::Char
707 }
708
709 impl_set_single_value! {
710 /// Set single int8 value
711 ///
712 /// # Parameters
713 ///
714 /// * `value` - The int8 value to set
715 ///
716 /// # Returns
717 ///
718 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
719 set_int8, Int8, i8, DataType::Int8
720 }
721
722 impl_set_single_value! {
723 /// Set single int16 value
724 ///
725 /// # Parameters
726 ///
727 /// * `value` - The int16 value to set
728 ///
729 /// # Returns
730 ///
731 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
732 set_int16, Int16, i16, DataType::Int16
733 }
734
735 impl_set_single_value! {
736 /// Set single int32 value
737 ///
738 /// # Parameters
739 ///
740 /// * `value` - The int32 value to set
741 ///
742 /// # Returns
743 ///
744 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
745 set_int32, Int32, i32, DataType::Int32
746 }
747
748 impl_set_single_value! {
749 /// Set single int64 value
750 ///
751 /// # Parameters
752 ///
753 /// * `value` - The int64 value to set
754 ///
755 /// # Returns
756 ///
757 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
758 set_int64, Int64, i64, DataType::Int64
759 }
760
761 impl_set_single_value! {
762 /// Set single int128 value
763 ///
764 /// # Parameters
765 ///
766 /// * `value` - The int128 value to set
767 ///
768 /// # Returns
769 ///
770 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
771 set_int128, Int128, i128, DataType::Int128
772 }
773
774 impl_set_single_value! {
775 /// Set single uint8 value
776 ///
777 /// # Parameters
778 ///
779 /// * `value` - The uint8 value to set
780 ///
781 /// # Returns
782 ///
783 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
784 set_uint8, UInt8, u8, DataType::UInt8
785 }
786
787 impl_set_single_value! {
788 /// Set single uint16 value
789 ///
790 /// # Parameters
791 ///
792 /// * `value` - The uint16 value to set
793 ///
794 /// # Returns
795 ///
796 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
797 set_uint16, UInt16, u16, DataType::UInt16
798 }
799
800 impl_set_single_value! {
801 /// Set single uint32 value
802 ///
803 /// # Parameters
804 ///
805 /// * `value` - The uint32 value to set
806 ///
807 /// # Returns
808 ///
809 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
810 set_uint32, UInt32, u32, DataType::UInt32
811 }
812
813 impl_set_single_value! {
814 /// Set single uint64 value
815 ///
816 /// # Parameters
817 ///
818 /// * `value` - The uint64 value to set
819 ///
820 /// # Returns
821 ///
822 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
823 set_uint64, UInt64, u64, DataType::UInt64
824 }
825
826 impl_set_single_value! {
827 /// Set single uint128 value
828 ///
829 /// # Parameters
830 ///
831 /// * `value` - The uint128 value to set
832 ///
833 /// # Returns
834 ///
835 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
836 set_uint128, UInt128, u128, DataType::UInt128
837 }
838
839 impl_set_single_value! {
840 /// Set single float32 value
841 ///
842 /// # Parameters
843 ///
844 /// * `value` - The float32 value to set
845 ///
846 /// # Returns
847 ///
848 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
849 set_float32, Float32, f32, DataType::Float32
850 }
851
852 impl_set_single_value! {
853 /// Set single float64 value
854 ///
855 /// # Parameters
856 ///
857 /// * `value` - The float64 value to set
858 ///
859 /// # Returns
860 ///
861 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
862 set_float64, Float64, f64, DataType::Float64
863 }
864
865 impl_set_single_value! {
866 /// Set single string value
867 ///
868 /// # Parameters
869 ///
870 /// * `value` - The string value to set
871 ///
872 /// # Returns
873 ///
874 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
875 ///
876 /// # Example
877 ///
878 /// ```rust
879 /// use qubit_datatype::DataType;
880 /// use qubit_value::MultiValues;
881 ///
882 /// let mut values = MultiValues::Empty(DataType::String);
883 /// values.set_string("hello".to_string()).unwrap();
884 /// assert_eq!(values.get_strings().unwrap(), &["hello"]);
885 /// ```
886 set_string, String, String, DataType::String
887 }
888
889 impl_set_single_value! {
890 /// Set single date value
891 ///
892 /// # Parameters
893 ///
894 /// * `value` - The date value to set
895 ///
896 /// # Returns
897 ///
898 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
899 set_date, Date, NaiveDate, DataType::Date
900 }
901
902 impl_set_single_value! {
903 /// Set single time value
904 ///
905 /// # Parameters
906 ///
907 /// * `value` - The time value to set
908 ///
909 /// # Returns
910 ///
911 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
912 set_time, Time, NaiveTime, DataType::Time
913 }
914
915 impl_set_single_value! {
916 /// Set single datetime value
917 ///
918 /// # Parameters
919 ///
920 /// * `value` - The datetime value to set
921 ///
922 /// # Returns
923 ///
924 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
925 set_datetime, DateTime, NaiveDateTime, DataType::DateTime
926 }
927
928 impl_set_single_value! {
929 /// Set single UTC instant value
930 ///
931 /// # Parameters
932 ///
933 /// * `value` - The UTC instant value to set
934 ///
935 /// # Returns
936 ///
937 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
938 set_instant, Instant, DateTime<Utc>, DataType::Instant
939 }
940
941 impl_set_single_value! {
942 /// Set single big integer value
943 ///
944 /// # Parameters
945 ///
946 /// * `value` - The big integer value to set
947 ///
948 /// # Returns
949 ///
950 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
951 set_biginteger, BigInteger, BigInt, DataType::BigInteger
952 }
953
954 impl_set_single_value! {
955 /// Set single big decimal value
956 ///
957 /// # Parameters
958 ///
959 /// * `value` - The big decimal value to set
960 ///
961 /// # Returns
962 ///
963 /// If setting succeeds, returns `Ok(())`; otherwise returns an error
964 set_bigdecimal, BigDecimal, BigDecimal, DataType::BigDecimal
965 }
966
967 impl_set_single_value! {
968 /// Set single isize value
969 set_intsize, IntSize, isize, DataType::IntSize
970 }
971
972 impl_set_single_value! {
973 /// Set single usize value
974 set_uintsize, UIntSize, usize, DataType::UIntSize
975 }
976
977 impl_set_single_value! {
978 /// Set single Duration value
979 set_duration, Duration, Duration, DataType::Duration
980 }
981
982 impl_set_single_value! {
983 /// Set single Url value
984 set_url, Url, Url, DataType::Url
985 }
986
987 impl_set_single_value! {
988 /// Set single StringMap value
989 set_string_map, StringMap, HashMap<String, String>, DataType::StringMap
990 }
991
992 impl_set_single_value! {
993 /// Set single Json value
994 set_json, Json, serde_json::Value, DataType::Json
995 }
996}