5 |
6 | | Identifier |
7 | Description |
8 |
9 |
10 |
11 |
12 | |
13 |
14 | `system-info:allow-all`
15 |
16 | |
17 |
18 |
19 | This enables all permissions for system info plugin
20 |
21 | |
22 |
23 |
24 |
25 | |
26 |
27 | `system-info:allow-all-sys-info`
28 |
29 | |
30 |
31 |
32 | Enables the all_sys_info command without any pre-configured scope.
33 |
34 | |
35 |
36 |
37 |
38 | |
39 |
40 | `system-info:deny-all-sys-info`
41 |
42 | |
43 |
44 |
45 | Denies the all_sys_info command without any pre-configured scope.
46 |
47 | |
48 |
49 |
50 |
51 | |
52 |
53 | `system-info:allow-batteries`
54 |
55 | |
56 |
57 |
58 | Enables the batteries command without any pre-configured scope.
59 |
60 | |
61 |
62 |
63 |
64 | |
65 |
66 | `system-info:deny-batteries`
67 |
68 | |
69 |
70 |
71 | Denies the batteries command without any pre-configured scope.
72 |
73 | |
74 |
75 |
76 |
77 | |
78 |
79 | `system-info:allow-components`
80 |
81 | |
82 |
83 |
84 | Enables the components command without any pre-configured scope.
85 |
86 | |
87 |
88 |
89 |
90 | |
91 |
92 | `system-info:deny-components`
93 |
94 | |
95 |
96 |
97 | Denies the components command without any pre-configured scope.
98 |
99 | |
100 |
101 |
102 |
103 | |
104 |
105 | `system-info:allow-cpu-count`
106 |
107 | |
108 |
109 |
110 | Enables the cpu_count command without any pre-configured scope.
111 |
112 | |
113 |
114 |
115 |
116 | |
117 |
118 | `system-info:deny-cpu-count`
119 |
120 | |
121 |
122 |
123 | Denies the cpu_count command without any pre-configured scope.
124 |
125 | |
126 |
127 |
128 |
129 | |
130 |
131 | `system-info:allow-cpu-info`
132 |
133 | |
134 |
135 |
136 | Enables the cpu_info command without any pre-configured scope.
137 |
138 | |
139 |
140 |
141 |
142 | |
143 |
144 | `system-info:deny-cpu-info`
145 |
146 | |
147 |
148 |
149 | Denies the cpu_info command without any pre-configured scope.
150 |
151 | |
152 |
153 |
154 |
155 | |
156 |
157 | `system-info:allow-cpus`
158 |
159 | |
160 |
161 |
162 | Enables the cpus command without any pre-configured scope.
163 |
164 | |
165 |
166 |
167 |
168 | |
169 |
170 | `system-info:deny-cpus`
171 |
172 | |
173 |
174 |
175 | Denies the cpus command without any pre-configured scope.
176 |
177 | |
178 |
179 |
180 |
181 | |
182 |
183 | `system-info:allow-disks`
184 |
185 | |
186 |
187 |
188 | Enables the disks command without any pre-configured scope.
189 |
190 | |
191 |
192 |
193 |
194 | |
195 |
196 | `system-info:deny-disks`
197 |
198 | |
199 |
200 |
201 | Denies the disks command without any pre-configured scope.
202 |
203 | |
204 |
205 |
206 |
207 | |
208 |
209 | `system-info:allow-execute`
210 |
211 | |
212 |
213 |
214 | Enables the execute command without any pre-configured scope.
215 |
216 | |
217 |
218 |
219 |
220 | |
221 |
222 | `system-info:deny-execute`
223 |
224 | |
225 |
226 |
227 | Denies the execute command without any pre-configured scope.
228 |
229 | |
230 |
231 |
232 |
233 | |
234 |
235 | `system-info:allow-hostname`
236 |
237 | |
238 |
239 |
240 | Enables the hostname command without any pre-configured scope.
241 |
242 | |
243 |
244 |
245 |
246 | |
247 |
248 | `system-info:deny-hostname`
249 |
250 | |
251 |
252 |
253 | Denies the hostname command without any pre-configured scope.
254 |
255 | |
256 |
257 |
258 |
259 | |
260 |
261 | `system-info:allow-kernel-version`
262 |
263 | |
264 |
265 |
266 | Enables the kernel_version command without any pre-configured scope.
267 |
268 | |
269 |
270 |
271 |
272 | |
273 |
274 | `system-info:deny-kernel-version`
275 |
276 | |
277 |
278 |
279 | Denies the kernel_version command without any pre-configured scope.
280 |
281 | |
282 |
283 |
284 |
285 | |
286 |
287 | `system-info:allow-load-average`
288 |
289 | |
290 |
291 |
292 | Enables the load_average command without any pre-configured scope.
293 |
294 | |
295 |
296 |
297 |
298 | |
299 |
300 | `system-info:deny-load-average`
301 |
302 | |
303 |
304 |
305 | Denies the load_average command without any pre-configured scope.
306 |
307 | |
308 |
309 |
310 |
311 | |
312 |
313 | `system-info:allow-memory-info`
314 |
315 | |
316 |
317 |
318 | Enables the memory_info command without any pre-configured scope.
319 |
320 | |
321 |
322 |
323 |
324 | |
325 |
326 | `system-info:deny-memory-info`
327 |
328 | |
329 |
330 |
331 | Denies the memory_info command without any pre-configured scope.
332 |
333 | |
334 |
335 |
336 |
337 | |
338 |
339 | `system-info:allow-name`
340 |
341 | |
342 |
343 |
344 | Enables the name command without any pre-configured scope.
345 |
346 | |
347 |
348 |
349 |
350 | |
351 |
352 | `system-info:deny-name`
353 |
354 | |
355 |
356 |
357 | Denies the name command without any pre-configured scope.
358 |
359 | |
360 |
361 |
362 |
363 | |
364 |
365 | `system-info:allow-networks`
366 |
367 | |
368 |
369 |
370 | Enables the networks command without any pre-configured scope.
371 |
372 | |
373 |
374 |
375 |
376 | |
377 |
378 | `system-info:deny-networks`
379 |
380 | |
381 |
382 |
383 | Denies the networks command without any pre-configured scope.
384 |
385 | |
386 |
387 |
388 |
389 | |
390 |
391 | `system-info:allow-os-version`
392 |
393 | |
394 |
395 |
396 | Enables the os_version command without any pre-configured scope.
397 |
398 | |
399 |
400 |
401 |
402 | |
403 |
404 | `system-info:deny-os-version`
405 |
406 | |
407 |
408 |
409 | Denies the os_version command without any pre-configured scope.
410 |
411 | |
412 |
413 |
414 |
415 | |
416 |
417 | `system-info:allow-ping`
418 |
419 | |
420 |
421 |
422 | Enables the ping command without any pre-configured scope.
423 |
424 | |
425 |
426 |
427 |
428 | |
429 |
430 | `system-info:deny-ping`
431 |
432 | |
433 |
434 |
435 | Denies the ping command without any pre-configured scope.
436 |
437 | |
438 |
439 |
440 |
441 | |
442 |
443 | `system-info:allow-processes`
444 |
445 | |
446 |
447 |
448 | Enables the processes command without any pre-configured scope.
449 |
450 | |
451 |
452 |
453 |
454 | |
455 |
456 | `system-info:deny-processes`
457 |
458 | |
459 |
460 |
461 | Denies the processes command without any pre-configured scope.
462 |
463 | |
464 |
465 |
466 |
467 | |
468 |
469 | `system-info:allow-refresh-all`
470 |
471 | |
472 |
473 |
474 | Enables the refresh_all command without any pre-configured scope.
475 |
476 | |
477 |
478 |
479 |
480 | |
481 |
482 | `system-info:deny-refresh-all`
483 |
484 | |
485 |
486 |
487 | Denies the refresh_all command without any pre-configured scope.
488 |
489 | |
490 |
491 |
492 |
493 | |
494 |
495 | `system-info:allow-refresh-cpu`
496 |
497 | |
498 |
499 |
500 | Enables the refresh_cpu command without any pre-configured scope.
501 |
502 | |
503 |
504 |
505 |
506 | |
507 |
508 | `system-info:deny-refresh-cpu`
509 |
510 | |
511 |
512 |
513 | Denies the refresh_cpu command without any pre-configured scope.
514 |
515 | |
516 |
517 |
518 |
519 | |
520 |
521 | `system-info:allow-refresh-memory`
522 |
523 | |
524 |
525 |
526 | Enables the refresh_memory command without any pre-configured scope.
527 |
528 | |
529 |
530 |
531 |
532 | |
533 |
534 | `system-info:deny-refresh-memory`
535 |
536 | |
537 |
538 |
539 | Denies the refresh_memory command without any pre-configured scope.
540 |
541 | |
542 |
543 |
544 |
545 | |
546 |
547 | `system-info:allow-refresh-processes`
548 |
549 | |
550 |
551 |
552 | Enables the refresh_processes command without any pre-configured scope.
553 |
554 | |
555 |
556 |
557 |
558 | |
559 |
560 | `system-info:deny-refresh-processes`
561 |
562 | |
563 |
564 |
565 | Denies the refresh_processes command without any pre-configured scope.
566 |
567 | |
568 |
569 |
570 |
571 | |
572 |
573 | `system-info:allow-static-info`
574 |
575 | |
576 |
577 |
578 | Enables the static_info command without any pre-configured scope.
579 |
580 | |
581 |
582 |
583 |
584 | |
585 |
586 | `system-info:deny-static-info`
587 |
588 | |
589 |
590 |
591 | Denies the static_info command without any pre-configured scope.
592 |
593 | |
594 |
595 |
596 |
597 | |
598 |
599 | `system-info:allow-total-memory`
600 |
601 | |
602 |
603 |
604 | Enables the total_memory command without any pre-configured scope.
605 |
606 | |
607 |
608 |
609 |
610 | |
611 |
612 | `system-info:deny-total-memory`
613 |
614 | |
615 |
616 |
617 | Denies the total_memory command without any pre-configured scope.
618 |
619 | |
620 |
621 |
622 |
623 | |
624 |
625 | `system-info:allow-total-swap`
626 |
627 | |
628 |
629 |
630 | Enables the total_swap command without any pre-configured scope.
631 |
632 | |
633 |
634 |
635 |
636 | |
637 |
638 | `system-info:deny-total-swap`
639 |
640 | |
641 |
642 |
643 | Denies the total_swap command without any pre-configured scope.
644 |
645 | |
646 |
647 |
648 |
649 | |
650 |
651 | `system-info:allow-uptime`
652 |
653 | |
654 |
655 |
656 | Enables the uptime command without any pre-configured scope.
657 |
658 | |
659 |
660 |
661 |
662 | |
663 |
664 | `system-info:deny-uptime`
665 |
666 | |
667 |
668 |
669 | Denies the uptime command without any pre-configured scope.
670 |
671 | |
672 |
673 |
674 |
675 | |
676 |
677 | `system-info:allow-used-memory`
678 |
679 | |
680 |
681 |
682 | Enables the used_memory command without any pre-configured scope.
683 |
684 | |
685 |
686 |
687 |
688 | |
689 |
690 | `system-info:deny-used-memory`
691 |
692 | |
693 |
694 |
695 | Denies the used_memory command without any pre-configured scope.
696 |
697 | |
698 |
699 |
700 |
701 | |
702 |
703 | `system-info:allow-used-swap`
704 |
705 | |
706 |
707 |
708 | Enables the used_swap command without any pre-configured scope.
709 |
710 | |
711 |
712 |
713 |
714 | |
715 |
716 | `system-info:deny-used-swap`
717 |
718 | |
719 |
720 |
721 | Denies the used_swap command without any pre-configured scope.
722 |
723 | |
724 |
725 |
726 |
--------------------------------------------------------------------------------
/dist-js/index.cjs:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var core = require('@tauri-apps/api/core');
4 | var valibot = require('valibot');
5 |
6 | function allSysInfo() {
7 | return core.invoke("plugin:system-info|all_sys_info");
8 | }
9 | // Memory
10 | function totalMemory() {
11 | return core.invoke("plugin:system-info|total_memory");
12 | }
13 | function usedMemory() {
14 | return core.invoke("plugin:system-info|used_memory");
15 | }
16 | function totalSwap() {
17 | return core.invoke("plugin:system-info|total_swap");
18 | }
19 | function usedSwap() {
20 | return core.invoke("plugin:system-info|used_swap");
21 | }
22 | function memoryInfo() {
23 | return core.invoke("plugin:system-info|memory_info");
24 | }
25 | // Static Info
26 | function hostname() {
27 | return core.invoke("plugin:system-info|hostname");
28 | }
29 | function name() {
30 | return core.invoke("plugin:system-info|name");
31 | }
32 | function kernelVersion() {
33 | return core.invoke("plugin:system-info|kernel_version");
34 | }
35 | function osVersion() {
36 | return core.invoke("plugin:system-info|os_version");
37 | }
38 | function staticInfo() {
39 | return core.invoke("plugin:system-info|static_info");
40 | }
41 | // Components
42 | function components() {
43 | return core.invoke("plugin:system-info|components");
44 | }
45 | // Cpu
46 | function cpus() {
47 | return core.invoke("plugin:system-info|cpus");
48 | }
49 | function cpuCount() {
50 | return core.invoke("plugin:system-info|cpu_count");
51 | }
52 | function cpuInfo() {
53 | return core.invoke("plugin:system-info|cpu_info");
54 | }
55 | // Disk
56 | function disks() {
57 | return core.invoke("plugin:system-info|disks");
58 | }
59 | // Network
60 | function networks() {
61 | return core.invoke("plugin:system-info|networks");
62 | }
63 | // Process
64 | function processes() {
65 | return core.invoke("plugin:system-info|processes");
66 | }
67 | // Refresh
68 | function refreshAll() {
69 | return core.invoke("plugin:system-info|refresh_all");
70 | }
71 | function refreshMemory() {
72 | return core.invoke("plugin:system-info|refresh_memory");
73 | }
74 | function refreshCpu() {
75 | return core.invoke("plugin:system-info|refresh_cpu");
76 | }
77 | function refreshProcesses() {
78 | return core.invoke("plugin:system-info|refresh_processes");
79 | }
80 | function debugCommand() {
81 | return core.invoke("plugin:system-info|debug");
82 | }
83 | function batteries() {
84 | return core.invoke("plugin:system-info|batteries");
85 | }
86 | function uptime() {
87 | return core.invoke("plugin:system-info|uptime");
88 | }
89 | function loadAverage() {
90 | return core.invoke("plugin:system-info|load_average");
91 | }
92 |
93 | var BatteryStateEnum;
94 | (function (BatteryStateEnum) {
95 | BatteryStateEnum["Unknown"] = "Unknown";
96 | BatteryStateEnum["Charging"] = "Charging";
97 | BatteryStateEnum["Discharging"] = "Discharging";
98 | BatteryStateEnum["Empty"] = "Empty";
99 | BatteryStateEnum["Full"] = "Full";
100 | })(BatteryStateEnum || (BatteryStateEnum = {}));
101 | const BatteryState = valibot.enum_(BatteryStateEnum);
102 | var BatteryTechnologyEnum;
103 | (function (BatteryTechnologyEnum) {
104 | BatteryTechnologyEnum["Unknown"] = "Unknown";
105 | BatteryTechnologyEnum["LithiumIon"] = "LithiumIon";
106 | BatteryTechnologyEnum["LeadAcid"] = "LeadAcid";
107 | BatteryTechnologyEnum["LithiumPolymer"] = "LithiumPolymer";
108 | BatteryTechnologyEnum["NickelMetalHydride"] = "NickelMetalHydride";
109 | BatteryTechnologyEnum["NickelCadmium"] = "NickelCadmium";
110 | BatteryTechnologyEnum["NickelZinc"] = "NickelZinc";
111 | BatteryTechnologyEnum["LithiumIronPhosphate"] = "LithiumIronPhosphate";
112 | BatteryTechnologyEnum["RechargeableAlkalineManganese"] = "RechargeableAlkalineManganese";
113 | })(BatteryTechnologyEnum || (BatteryTechnologyEnum = {}));
114 | const BatteryTechnology = valibot.enum_(BatteryTechnologyEnum);
115 | const Battery = valibot.object({
116 | state_of_charge: valibot.number(),
117 | energy: valibot.number(),
118 | energy_full: valibot.number(),
119 | energy_full_design: valibot.number(),
120 | energy_rate: valibot.number(),
121 | // .describe("Amount of energy being drained from the battery."),
122 | voltage: valibot.number(),
123 | state_of_health: valibot.number(),
124 | state: BatteryState,
125 | technology: BatteryTechnology,
126 | temperature_kelvin: valibot.nullable(valibot.number()),
127 | temperature_celsius: valibot.nullable(valibot.number()),
128 | temperature_fahrenheit: valibot.nullable(valibot.number()),
129 | cycle_count: valibot.nullable(valibot.number()),
130 | vendor: valibot.nullable(valibot.string()),
131 | model: valibot.nullable(valibot.string()),
132 | serial_number: valibot.nullable(valibot.string()),
133 | time_to_full: valibot.nullable(valibot.number()),
134 | time_to_empty: valibot.nullable(valibot.number()),
135 | });
136 | const Batteries = valibot.array(Battery);
137 | // TODO: verify actual value returned from rust for "Unknown" enum
138 | // export const DiskKind = enum_(["HDD", "SSD", "Unknown"]);
139 | const DiskKind = valibot.union([
140 | valibot.literal("HDD"),
141 | valibot.literal("SSD"),
142 | valibot.object({
143 | Unknown: valibot.number(),
144 | }),
145 | ]);
146 | const MacAddress = valibot.pipe(valibot.array(valibot.number()), valibot.length(6));
147 | const ProcessStatus = valibot.union([
148 | valibot.literal("Idle"),
149 | valibot.literal("Run"),
150 | valibot.literal("Sleep"),
151 | valibot.literal("Stop"),
152 | valibot.literal("Zombie"),
153 | valibot.literal("Tracing"),
154 | valibot.literal("Dead"),
155 | valibot.literal("Wakekill"),
156 | valibot.literal("Waking"),
157 | valibot.literal("Parked"),
158 | valibot.literal("LockBlocked"),
159 | valibot.literal("UninterruptibleDiskSleep"),
160 | valibot.object({
161 | Unknown: valibot.number(),
162 | }),
163 | ]);
164 | const DiskUsage = valibot.object({
165 | total_written_bytes: valibot.number(),
166 | written_bytes: valibot.number(),
167 | total_read_bytes: valibot.number(),
168 | read_bytes: valibot.number(),
169 | });
170 | const Cpu = valibot.object({
171 | name: valibot.string(),
172 | frequency: valibot.number(),
173 | cpu_usage: valibot.number(),
174 | vendor_id: valibot.string(),
175 | brand: valibot.string(),
176 | });
177 | const Disk = valibot.object({
178 | kind: DiskKind,
179 | name: valibot.string(),
180 | file_system: valibot.string(),
181 | mount_point: valibot.string(),
182 | total_space: valibot.number(),
183 | available_space: valibot.number(),
184 | is_removable: valibot.boolean(),
185 | });
186 | const Network = valibot.object({
187 | interface_name: valibot.string(),
188 | received: valibot.number(),
189 | total_received: valibot.number(),
190 | transmitted: valibot.number(),
191 | total_transmitted: valibot.number(),
192 | packets_received: valibot.number(),
193 | total_packets_received: valibot.number(),
194 | packets_transmitted: valibot.number(),
195 | total_packets_transmitted: valibot.number(),
196 | errors_on_received: valibot.number(),
197 | total_errors_on_received: valibot.number(),
198 | errors_on_transmitted: valibot.number(),
199 | total_errors_on_transmitted: valibot.number(),
200 | mac_address: valibot.array(valibot.number()),
201 | mac_address_str: valibot.string(),
202 | });
203 | const Component = valibot.object({
204 | temperature: valibot.number(),
205 | max: valibot.number(),
206 | critical: valibot.nullable(valibot.number()),
207 | label: valibot.string(),
208 | });
209 | const Process = valibot.object({
210 | name: valibot.string(),
211 | cmd: valibot.array(valibot.string()),
212 | exe: valibot.nullable(valibot.string()),
213 | pid: valibot.number(),
214 | environ: valibot.array(valibot.string()),
215 | cwd: valibot.nullable(valibot.string()),
216 | root: valibot.nullable(valibot.string()),
217 | memory: valibot.number(),
218 | virtual_memory: valibot.number(),
219 | parent: valibot.nullable(valibot.number()),
220 | status: ProcessStatus,
221 | start_time: valibot.number(),
222 | run_time: valibot.number(),
223 | cpu_usage: valibot.number(),
224 | disk_usage: DiskUsage,
225 | user_id: valibot.nullable(valibot.string()),
226 | effective_user_id: valibot.nullable(valibot.string()),
227 | group_id: valibot.nullable(valibot.string()),
228 | effective_group_id: valibot.nullable(valibot.string()),
229 | session_id: valibot.nullable(valibot.number()),
230 | });
231 | // aggregate info
232 | const StaticInfo = valibot.object({
233 | hostname: valibot.nullable(valibot.string()),
234 | kernel_version: valibot.nullable(valibot.string()),
235 | os_version: valibot.nullable(valibot.string()),
236 | name: valibot.nullable(valibot.string()),
237 | });
238 | const MemoryInfo = valibot.object({
239 | total_memory: valibot.number(),
240 | used_memory: valibot.number(),
241 | total_swap: valibot.number(),
242 | used_swap: valibot.number(),
243 | });
244 | const CpuInfo = valibot.object({
245 | cpus: valibot.array(Cpu),
246 | cpu_count: valibot.number(),
247 | });
248 | const AllSystemInfo = valibot.object({
249 | hostname: valibot.nullable(valibot.string()),
250 | kernel_version: valibot.nullable(valibot.string()),
251 | os_version: valibot.nullable(valibot.string()),
252 | name: valibot.nullable(valibot.string()),
253 | total_memory: valibot.number(),
254 | used_memory: valibot.number(),
255 | total_swap: valibot.number(),
256 | used_swap: valibot.number(),
257 | cpus: valibot.array(Cpu),
258 | cpu_count: valibot.number(),
259 | disks: valibot.array(Disk),
260 | networks: valibot.array(Network),
261 | components: valibot.array(Component),
262 | processes: valibot.array(Process),
263 | batteries: Batteries,
264 | });
265 | const LoadAverage = valibot.object({
266 | one: valibot.number(),
267 | five: valibot.number(),
268 | fifteen: valibot.number(),
269 | });
270 |
271 | exports.AllSystemInfo = AllSystemInfo;
272 | exports.Batteries = Batteries;
273 | exports.Battery = Battery;
274 | exports.BatteryState = BatteryState;
275 | exports.BatteryTechnology = BatteryTechnology;
276 | exports.Component = Component;
277 | exports.Cpu = Cpu;
278 | exports.CpuInfo = CpuInfo;
279 | exports.Disk = Disk;
280 | exports.DiskKind = DiskKind;
281 | exports.DiskUsage = DiskUsage;
282 | exports.LoadAverage = LoadAverage;
283 | exports.MacAddress = MacAddress;
284 | exports.MemoryInfo = MemoryInfo;
285 | exports.Network = Network;
286 | exports.Process = Process;
287 | exports.ProcessStatus = ProcessStatus;
288 | exports.StaticInfo = StaticInfo;
289 | exports.allSysInfo = allSysInfo;
290 | exports.batteries = batteries;
291 | exports.components = components;
292 | exports.cpuCount = cpuCount;
293 | exports.cpuInfo = cpuInfo;
294 | exports.cpus = cpus;
295 | exports.debugCommand = debugCommand;
296 | exports.disks = disks;
297 | exports.hostname = hostname;
298 | exports.kernelVersion = kernelVersion;
299 | exports.loadAverage = loadAverage;
300 | exports.memoryInfo = memoryInfo;
301 | exports.name = name;
302 | exports.networks = networks;
303 | exports.osVersion = osVersion;
304 | exports.processes = processes;
305 | exports.refreshAll = refreshAll;
306 | exports.refreshCpu = refreshCpu;
307 | exports.refreshMemory = refreshMemory;
308 | exports.refreshProcesses = refreshProcesses;
309 | exports.staticInfo = staticInfo;
310 | exports.totalMemory = totalMemory;
311 | exports.totalSwap = totalSwap;
312 | exports.uptime = uptime;
313 | exports.usedMemory = usedMemory;
314 | exports.usedSwap = usedSwap;
315 |
--------------------------------------------------------------------------------
/src/model/common.rs:
--------------------------------------------------------------------------------
1 | use serde::{Deserialize, Serialize};
2 | use std::path::PathBuf;
3 |
4 | #[derive(Debug, Serialize, Deserialize)]
5 | pub enum DiskKind {
6 | /// HDD type.
7 | HDD,
8 | /// SSD type.
9 | SSD,
10 | /// Unknown type.
11 | Unknown(isize),
12 | }
13 | impl From