|  | #![allow(dead_code)] | 
|  |  | 
|  | #![forbid(non_camel_case_types)] | 
|  |  | 
|  | // Some scripts (e.g., hiragana) don't have a concept of | 
|  | // upper/lowercase | 
|  |  | 
|  | // 1. non_camel_case_types | 
|  |  | 
|  | // Can start with non-lowercase letter | 
|  | struct Θχ; | 
|  | struct ヒa; | 
|  |  | 
|  | struct χa; | 
|  | //~^ ERROR type `χa` should have an upper camel case name | 
|  |  | 
|  | // If there's already leading or trailing underscores, they get trimmed before checking. | 
|  | // This is fine: | 
|  | struct _ヒb; | 
|  |  | 
|  | // This is not: | 
|  | struct __χa; | 
|  | //~^ ERROR type `__χa` should have an upper camel case name | 
|  |  | 
|  | // Besides this, we cannot have two continuous underscores in the middle. | 
|  |  | 
|  | struct 对__否; | 
|  | //~^ ERROR type `对__否` should have an upper camel case name | 
|  |  | 
|  | struct ヒ__χ; | 
|  | //~^ ERROR type `ヒ__χ` should have an upper camel case name | 
|  |  | 
|  | // also cannot have lowercase letter next to an underscore. | 
|  | // so this triggers the lint: | 
|  |  | 
|  | struct Hello_你好; | 
|  | //~^ ERROR type `Hello_你好` should have an upper camel case name | 
|  |  | 
|  | struct Hello_World; | 
|  | //~^ ERROR type `Hello_World` should have an upper camel case name | 
|  |  | 
|  | struct 你_ӟ; | 
|  | //~^ ERROR type `你_ӟ` should have an upper camel case name | 
|  |  | 
|  | // and this is ok: | 
|  |  | 
|  | struct 你_好; | 
|  |  | 
|  | fn main() {} |