mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-12-15 21:34:19 +00:00
Try to generate more meaningful names in json converter
I just found out about rust-analyzer json converter, but I think it would be more convenient, if names were more useful, like using the names of the keys.
Let's look at some realistic arbitrary json:
```json
{
"user": {
"address": {
"street": "Main St",
"house": 3
},
"email": "example@example.com"
}
}
```
I think, new generated code is much easier to read and to edit, than the old:
```rust
// Old
struct Struct1{ house: i64, street: String }
struct Struct2{ address: Struct1, email: String }
struct Struct3{ user: Struct2 }
// New
struct Address1{ house: i64, street: String }
struct User1{ address: Address1, email: String }
struct Root1{ user: User1 }
```
Ideally, if we drop the numbers, I can see it being usable just as is (may be rename root)
```rust
struct Address{ house: i64, street: String }
struct User{ address: Address, email: String }
struct Root{ user: User }
```
Sadly, we can't just drop them, because there can be multiple fields (recursive) with the same name, and we can't just easily retroactively add numbers if the name has 2 instances due to parsing being single pass.
We could ignore the `1` and add number only if it's > 1, but I will leave this open to discussion and right now made it the simpler way
In sum, even with numbers, I think this PR still helps in readability
|
||
|---|---|---|
| .. | ||
| base-db | ||
| cfg | ||
| flycheck | ||
| hir | ||
| hir-def | ||
| hir-expand | ||
| hir-ty | ||
| ide | ||
| ide-assists | ||
| ide-completion | ||
| ide-db | ||
| ide-diagnostics | ||
| ide-ssr | ||
| intern | ||
| limit | ||
| load-cargo | ||
| mbe | ||
| parser | ||
| paths | ||
| proc-macro-api | ||
| proc-macro-srv | ||
| proc-macro-srv-cli | ||
| profile | ||
| project-model | ||
| rust-analyzer | ||
| salsa | ||
| sourcegen | ||
| span | ||
| stdx | ||
| syntax | ||
| test-fixture | ||
| test-utils | ||
| text-edit | ||
| toolchain | ||
| tt | ||
| vfs | ||
| vfs-notify | ||